引言:
在工業(yè)自動化領(lǐng)域,用戶產(chǎn)品使用經(jīng)常會有密碼登陸的需求,通過單片機編程實現(xiàn)設(shè)置及修改密碼程序。迪文DGUS屏通過自身二次開發(fā)平臺(DWIN_OS)便可輕松實現(xiàn)該項功能,省去了單片機的編程,為客戶開發(fā)帶來極大的便利性。本文介紹了通過變量來設(shè)置修改密碼的方法,此方式可幫助用戶實現(xiàn)簡單顯示終端安全性設(shè)定。
1.DGUS屏及DWIN_OS介紹
DGUS屏是北京迪文科技有限公司自主開發(fā)的一款高可靠性、開發(fā)簡單、操作靈活的智慧型人機界面,DWIN_OS是基于DGUS屏的二次開發(fā)平臺,通過微指令編程實現(xiàn)DGUS屏的二次開發(fā),其代碼簡單,編譯快捷也為眾多工程師所青睞。
2.基于DGUS的DWIN_OS在密碼設(shè)置基本原理的介紹
DGUS的密碼登陸的基本原理為:用戶設(shè)置密碼存儲于DWIN_OS寄存器中,用戶通過數(shù)據(jù)錄入將錄入密碼存入到DGUS變量地址中,通過微指令將DGUS變量地址中的數(shù)據(jù)轉(zhuǎn)入DWIN_OS寄存器中,然后與已存儲密碼進行比較。
DGUS的密碼修改基本原理為:用戶通過數(shù)據(jù)錄入將錄入新密碼存入到DGUS變量地址中,再通過微指令將其轉(zhuǎn)入到DWIN_OS寄存器中,在DWIN_OS寄存器中進行與初始密碼的替換。
該例程中程序開發(fā)流程圖如下:

3.變量規(guī)劃介紹
本例程中主要用到的DGUS變量地址、OS寄存器地址及其用途如下:
|
用途說明 |
DGUS變量地址使用 |
DWIN_OS寄存器使用 |
|
輸入登錄密碼 |
0X0010 |
R10-R13 |
|
新密碼(修改密碼) |
0X0020 |
R20-R23 |
|
重新輸入新密碼 |
0X0030 |
R30-R33 |
|
登錄密碼確認鍵 |
0X0050 |
R50/R51 |
|
修改密碼確認鍵 |
0X0060 |
R60/R61 |
|
初始密碼保存 |
|
R200-R203 |
4.基本步驟介紹
(1)設(shè)置初始密碼
開始判斷R255不為5A,則加載一次初始密碼。加載密碼后R255為5A,下次執(zhí)行時跳過加載密碼。
|
; DWIN OS IJNE R255,0x5A,INI ;開機加載初始密碼 GOTO MAIN INI: LDBR R255,0x5A,1 ;初始R255寄存器存儲數(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)輸入登錄密碼并進行判斷
輸入密碼的確認鍵變量地址設(shè)定為0X0050,返回值為AAAA。如果密碼錄入完成后點擊確定按鈕,則變量地址0X0050內(nèi)存儲數(shù)據(jù)變?yōu)?XAAAA。錄入密碼存儲于0X0010開始的兩個字地址內(nèi)。如果判斷變量地址0X0050地址內(nèi)存儲為0XAAAA,則代表已輸入登錄密碼,便可將錄入密碼與初始密碼進行比較;如果判斷變量地址0X0050地址內(nèi)存儲數(shù)據(jù)不為0XAAAA,則表示未進行密碼登陸操作,該步驟跳過。
當判斷密碼輸入正確時,便跳轉(zhuǎn)到已登錄界面(此處設(shè)置跳轉(zhuǎn)到密碼修改頁面),并將變量地址0X0050、0X0010內(nèi)數(shù)據(jù)清零方便進行后續(xù)操作。
當判斷密碼輸入不正確時,跳轉(zhuǎn)到重新輸入密碼界面,同時將變量地址0X0050、0X0010內(nèi)數(shù)據(jù)清零,該流程結(jié)束并進入重新輸入密碼狀態(tài)。
|
MAIN: ;輸入登錄密碼 LDWR R0,0x0050 MOVXR R50,1,1 IJNE R50,0xAA,SET_PASSWORD ;判斷是否點擊密碼輸入確認鍵 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è)置密碼的確認鍵變量地址設(shè)定為0X0060,返回值為AAAA。如果重設(shè)密碼錄入完成后點擊確定修改按鈕,則變量地址0X0060內(nèi)存儲數(shù)據(jù)變?yōu)?XAAAA。錄入新密碼及確認新密碼分別存儲于0X0020和0X0030開始的兩個字地址內(nèi)。如果判斷變量地址0X0060地址內(nèi)存儲為0XAAAA,則代表已確認修改密碼,便可將錄入新密碼與重新輸入的新密碼進行比較(本文中介紹例程密碼不能設(shè)置為0);如果判斷變量地址0X0060地址內(nèi)存儲不為0XAAAA,則表示未進行修改密碼操作,該步驟跳過。
當0X0060地址數(shù)據(jù)為0XAAAA時,如果判斷變量地址0X0050和0X0060開始的兩個字地址內(nèi)存儲數(shù)據(jù)相同且不為0,則密碼修改成功;如果判斷變量地址0X0050和0X0060開始的兩個字地址內(nèi)存儲數(shù)據(jù)不相同或同時為0,則密碼修改不成功。
密碼修改成功后切換到修改密碼成功頁面,并將新密碼替換掉初始密碼,同時將0X0050和0X0060開始的兩個字地址內(nèi)存儲數(shù)據(jù)清零。
密碼修改不成功則切換到重新修改密碼頁面,將0X0050和0X0060開始的兩個字地址內(nèi)存儲數(shù)據(jù)清零方便重新修改密碼。
|
;設(shè)置密碼 SET_PASSWORD: LDWR R0,0x0060 MOVXR R60,1,1 IJNE R60,0xAA,GOEND ;判斷是否點擊重設(shè)密碼確認鍵 LDWR R0,0x0020 MOVXR R20,1,2 LDWR R0,0x0030 MOVXR R30,1,2 TESTS R20,R30,4 ;重設(shè)密碼對比 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é)論
通過對DWIN_OS密碼管理例程的介紹,讓讀者更好地了解DWIN_OS平臺的開發(fā)方式及使用方法,并體會到DGUS屏借助DWIN_OS二次開發(fā)平臺所實現(xiàn)功能的方便性和快捷性,進而幫助讀者更快實現(xiàn)新產(chǎn)品開發(fā)。
