引言:
在工業(yè)自動(dòng)化領(lǐng)域,用戶產(chǎn)品使用經(jīng)常會(huì)有密碼登陸的需求,通過單片機(jī)編程實(shí)現(xiàn)設(shè)置及修改密碼程序。迪文DGUS屏通過自身二次開發(fā)平臺(tái)(DWIN_OS)便可輕松實(shí)現(xiàn)該項(xiàng)功能,省去了單片機(jī)的編程,為客戶開發(fā)帶來極大的便利性。本文介紹了通過變量來設(shè)置修改密碼的方法,此方式可幫助用戶實(shí)現(xiàn)簡(jiǎn)單顯示終端安全性設(shè)定。
1.DGUS屏及DWIN_OS介紹
DGUS屏是北京迪文科技有限公司自主開發(fā)的一款高可靠性、開發(fā)簡(jiǎn)單、操作靈活的智慧型人機(jī)界面,DWIN_OS是基于DGUS屏的二次開發(fā)平臺(tái),通過微指令編程實(shí)現(xiàn)DGUS屏的二次開發(fā),其代碼簡(jiǎn)單,編譯快捷也為眾多工程師所青睞。
2.基于DGUS的DWIN_OS在密碼設(shè)置基本原理的介紹
DGUS的密碼登陸的基本原理為:用戶設(shè)置密碼存儲(chǔ)于DWIN_OS寄存器中,用戶通過數(shù)據(jù)錄入將錄入密碼存入到DGUS變量地址中,通過微指令將DGUS變量地址中的數(shù)據(jù)轉(zhuǎn)入DWIN_OS寄存器中,然后與已存儲(chǔ)密碼進(jìn)行比較。
DGUS的密碼修改基本原理為:用戶通過數(shù)據(jù)錄入將錄入新密碼存入到DGUS變量地址中,再通過微指令將其轉(zhuǎn)入到DWIN_OS寄存器中,在DWIN_OS寄存器中進(jìn)行與初始密碼的替換。
該例程中程序開發(fā)流程圖如下:
3.變量規(guī)劃介紹
本例程中主要用到的DGUS變量地址、OS寄存器地址及其用途如下:
用途說明 |
DGUS變量地址使用 |
DWIN_OS寄存器使用 |
輸入登錄密碼 |
0X0010 |
R10-R13 |
新密碼(修改密碼) |
0X0020 |
R20-R23 |
重新輸入新密碼 |
0X0030 |
R30-R33 |
登錄密碼確認(rèn)鍵 |
0X0050 |
R50/R51 |
修改密碼確認(rèn)鍵 |
0X0060 |
R60/R61 |
初始密碼保存 |
|
R200-R203 |
4.基本步驟介紹
(1)設(shè)置初始密碼
開始判斷R255不為5A,則加載一次初始密碼。加載密碼后R255為5A,下次執(zhí)行時(shí)跳過加載密碼。
; DWIN OS IJNE R255,0x5A,INI ;開機(jī)加載初始密碼 GOTO MAIN INI: LDBR R255,0x5A,1 ;初始R255寄存器存儲(chǔ)數(shù)據(jù)為5A LDBR R200,0,1 LDBR R201,0xA9,1 LDBR R202,0x8A,1 LDBR R203,0xC7,1 ;設(shè)定初始密碼為11111111 LDBR R150,0,4 ;設(shè)定字符串,作比較使用 END |
(2)輸入登錄密碼并進(jìn)行判斷
輸入密碼的確認(rèn)鍵變量地址設(shè)定為0X0050,返回值為AAAA。如果密碼錄入完成后點(diǎn)擊確定按鈕,則變量地址0X0050內(nèi)存儲(chǔ)數(shù)據(jù)變?yōu)?XAAAA。錄入密碼存儲(chǔ)于0X0010開始的兩個(gè)字地址內(nèi)。如果判斷變量地址0X0050地址內(nèi)存儲(chǔ)為0XAAAA,則代表已輸入登錄密碼,便可將錄入密碼與初始密碼進(jìn)行比較;如果判斷變量地址0X0050地址內(nèi)存儲(chǔ)數(shù)據(jù)不為0XAAAA,則表示未進(jìn)行密碼登陸操作,該步驟跳過。
當(dāng)判斷密碼輸入正確時(shí),便跳轉(zhuǎn)到已登錄界面(此處設(shè)置跳轉(zhuǎn)到密碼修改頁面),并將變量地址0X0050、0X0010內(nèi)數(shù)據(jù)清零方便進(jìn)行后續(xù)操作。
當(dāng)判斷密碼輸入不正確時(shí),跳轉(zhuǎn)到重新輸入密碼界面,同時(shí)將變量地址0X0050、0X0010內(nèi)數(shù)據(jù)清零,該流程結(jié)束并進(jìn)入重新輸入密碼狀態(tài)。
MAIN: ;輸入登錄密碼 LDWR R0,0x0050 MOVXR R50,1,1 IJNE R50,0xAA,SET_PASSWORD ;判斷是否點(diǎn)擊密碼輸入確認(rèn)鍵 LDWR R0,0x0010 MOVXR R10,1,2 TESTS R10,R200,4 ;判斷密碼是否一致 IJNE R0,0,PASSWORD_ERROR PASSWORD_RIGHT: LDBR R10,0,4 LDWR R0,0x0010 MOVXR R10,0,2 ;錄入密碼清除 LDBR R100,04,1 MOVRD R100,4,1 ;跳轉(zhuǎn)頁面 LDBR R10,0,4 LDBR R50,0,2 LDWR R0,0x0050 ;0X0050地址變量清零 MOVXR R50,0,1 GOTO GOEND PASSWORD_ERROR: LDBR R10,0,4 LDWR R0,0x0010 MOVXR R10,0,2 ;錄入密碼清除 LDBR R100,03,1 MOVRD R100,4,1 ;跳轉(zhuǎn)頁面 LDBR R10,0,4 LDBR R50,0,2 LDWR R0,0x0050 MOVXR R50,0,1 ;0X0050地址變量清零 GOTO GOEND |
(3)密碼重新設(shè)置
重新設(shè)置密碼的確認(rèn)鍵變量地址設(shè)定為0X0060,返回值為AAAA。如果重設(shè)密碼錄入完成后點(diǎn)擊確定修改按鈕,則變量地址0X0060內(nèi)存儲(chǔ)數(shù)據(jù)變?yōu)?XAAAA。錄入新密碼及確認(rèn)新密碼分別存儲(chǔ)于0X0020和0X0030開始的兩個(gè)字地址內(nèi)。如果判斷變量地址0X0060地址內(nèi)存儲(chǔ)為0XAAAA,則代表已確認(rèn)修改密碼,便可將錄入新密碼與重新輸入的新密碼進(jìn)行比較(本文中介紹例程密碼不能設(shè)置為0);如果判斷變量地址0X0060地址內(nèi)存儲(chǔ)不為0XAAAA,則表示未進(jìn)行修改密碼操作,該步驟跳過。
當(dāng)0X0060地址數(shù)據(jù)為0XAAAA時(shí),如果判斷變量地址0X0050和0X0060開始的兩個(gè)字地址內(nèi)存儲(chǔ)數(shù)據(jù)相同且不為0,則密碼修改成功;如果判斷變量地址0X0050和0X0060開始的兩個(gè)字地址內(nèi)存儲(chǔ)數(shù)據(jù)不相同或同時(shí)為0,則密碼修改不成功。
密碼修改成功后切換到修改密碼成功頁面,并將新密碼替換掉初始密碼,同時(shí)將0X0050和0X0060開始的兩個(gè)字地址內(nèi)存儲(chǔ)數(shù)據(jù)清零。
密碼修改不成功則切換到重新修改密碼頁面,將0X0050和0X0060開始的兩個(gè)字地址內(nèi)存儲(chǔ)數(shù)據(jù)清零方便重新修改密碼。
;設(shè)置密碼 SET_PASSWORD: LDWR R0,0x0060 MOVXR R60,1,1 IJNE R60,0xAA,GOEND ;判斷是否點(diǎn)擊重設(shè)密碼確認(rèn)鍵 LDWR R0,0x0020 MOVXR R20,1,2 LDWR R0,0x0030 MOVXR R30,1,2 TESTS R20,R30,4 ;重設(shè)密碼對(duì)比 IJNE R0,0,SET_PASSWORD_ERROR TESTS R20,R150,4 IJNE R0,0,SET_PASSWORD_RIGHT ;密碼不能為零 GOTO SET_PASSWORD_ERROR SET_PASSWORD_RIGHT: MOV R30,R200,4 LDBR R20,0,4 LDWR R0,0x0020 MOVXR R20,0,2 LDBR R30,0,4 LDWR R0,0x0030 MOVXR R30,0,2 ;輸入密碼清零 LDBR R100,7,1 MOVRD R100,4,1 ;跳轉(zhuǎn)頁面 LDBR R60,0,2 LDWR R0,0x0060 ;0X0060地址變量清零 MOVXR R60,0,1 GOTO GOEND SET_PASSWORD_ERROR: LDBR R20,0,4 LDWR R0,0x0020 MOVXR R20,0,2 LDBR R30,0,4 LDWR R0,0x0030 MOVXR R30,0,2 ;輸入密碼清零 LDBR R100,6,1 MOVRD R100,4,1 LDBR R60,0,2 ;跳轉(zhuǎn)頁面 LDWR R0,0x0060 MOVXR R60,0,1 ;0X0060地址變量清零 GOTO GOEND
GOEND: END |
5.結(jié)論
通過對(duì)DWIN_OS密碼管理例程的介紹,讓讀者更好地了解DWIN_OS平臺(tái)的開發(fā)方式及使用方法,并體會(huì)到DGUS屏借助DWIN_OS二次開發(fā)平臺(tái)所實(shí)現(xiàn)功能的方便性和快捷性,進(jìn)而幫助讀者更快實(shí)現(xiàn)新產(chǎn)品開發(fā)。