引言:
在工业自动化领域,用户产品使用经常会有密码登陆的需求,通过单片机编程实现设置及修改密码程序。迪文DGUS屏通过自身二次开发平台(DWIN_OS)便可轻松实现该项功能,省去了单片机的编程,为客户开发带来极大的便利性。本文介绍了通过变量来设置修改密码的方法,此方式可帮助用户实现简单显示终端安全性设定。
1.DGUS屏及DWIN_OS介绍
DGUS屏是北京迪文科技有限公司自主开发的一款高可靠性、开发简单、操作灵活的智慧型人机界面,DWIN_OS是基于DGUS屏的二次开发平台,通过微指令编程实现DGUS屏的二次开发,其代码简单,编译快捷也为众多工程师所青睐。
2.基于DGUS的DWIN_OS在密码设置基本原理的介绍
DGUS的密码登陆的基本原理为:用户设置密码存储于DWIN_OS寄存器中,用户通过数据录入将录入密码存入到DGUS变量地址中,通过微指令将DGUS变量地址中的数据转入DWIN_OS寄存器中,然后与已存储密码进行比较。
DGUS的密码修改基本原理为:用户通过数据录入将录入新密码存入到DGUS变量地址中,再通过微指令将其转入到DWIN_OS寄存器中,在DWIN_OS寄存器中进行与初始密码的替换。
该例程中程序开发流程图如下:
3.变量规划介绍
本例程中主要用到的DGUS变量地址、OS寄存器地址及其用途如下:
用途说明 |
DGUS变量地址使用 |
DWIN_OS寄存器使用 |
输入登录密码 |
0X0010 |
R10-R13 |
新密码(修改密码) |
0X0020 |
R20-R23 |
重新输入新密码 |
0X0030 |
R30-R33 |
登录密码确认键 |
0X0050 |
R50/R51 |
修改密码确认键 |
0X0060 |
R60/R61 |
初始密码保存 |
|
R200-R203 |
4.基本步骤介绍
(1)设置初始密码
开始判断R255不为5A,则加载一次初始密码。加载密码后R255为5A,下次执行时跳过加载密码。
; DWIN OS IJNE R255,0x5A,INI ;开机加载初始密码 GOTO MAIN INI: LDBR R255,0x5A,1 ;初始R255寄存器存储数据为5A LDBR R200,0,1 LDBR R201,0xA9,1 LDBR R202,0x8A,1 LDBR R203,0xC7,1 ;设定初始密码为11111111 LDBR R150,0,4 ;设定字符串,作比较使用 END |
(2)输入登录密码并进行判断
输入密码的确认键变量地址设定为0X0050,返回值为AAAA。如果密码录入完成后点击确定按钮,则变量地址0X0050内存储数据变为0XAAAA。录入密码存储于0X0010开始的两个字地址内。如果判断变量地址0X0050地址内存储为0XAAAA,则代表已输入登录密码,便可将录入密码与初始密码进行比较;如果判断变量地址0X0050地址内存储数据不为0XAAAA,则表示未进行密码登陆操作,该步骤跳过。
当判断密码输入正确时,便跳转到已登录界面(此处设置跳转到密码修改页面),并将变量地址0X0050、0X0010内数据清零方便进行后续操作。
当判断密码输入不正确时,跳转到重新输入密码界面,同时将变量地址0X0050、0X0010内数据清零,该流程结束并进入重新输入密码状态。
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 ;跳转页面 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 ;跳转页面 LDBR R10,0,4 LDBR R50,0,2 LDWR R0,0x0050 MOVXR R50,0,1 ;0X0050地址变量清零 GOTO GOEND |
(3)密码重新设置
重新设置密码的确认键变量地址设定为0X0060,返回值为AAAA。如果重设密码录入完成后点击确定修改按钮,则变量地址0X0060内存储数据变为0XAAAA。录入新密码及确认新密码分别存储于0X0020和0X0030开始的两个字地址内。如果判断变量地址0X0060地址内存储为0XAAAA,则代表已确认修改密码,便可将录入新密码与重新输入的新密码进行比较(本文中介绍例程密码不能设置为0);如果判断变量地址0X0060地址内存储不为0XAAAA,则表示未进行修改密码操作,该步骤跳过。
当0X0060地址数据为0XAAAA时,如果判断变量地址0X0050和0X0060开始的两个字地址内存储数据相同且不为0,则密码修改成功;如果判断变量地址0X0050和0X0060开始的两个字地址内存储数据不相同或同时为0,则密码修改不成功。
密码修改成功后切换到修改密码成功页面,并将新密码替换掉初始密码,同时将0X0050和0X0060开始的两个字地址内存储数据清零。
密码修改不成功则切换到重新修改密码页面,将0X0050和0X0060开始的两个字地址内存储数据清零方便重新修改密码。
;设置密码 SET_PASSWORD: LDWR R0,0x0060 MOVXR R60,1,1 IJNE R60,0xAA,GOEND ;判断是否点击重设密码确认键 LDWR R0,0x0020 MOVXR R20,1,2 LDWR R0,0x0030 MOVXR R30,1,2 TESTS R20,R30,4 ;重设密码对比 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 ;跳转页面 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 ;跳转页面 LDWR R0,0x0060 MOVXR R60,0,1 ;0X0060地址变量清零 GOTO GOEND
GOEND: END |
5.结论
通过对DWIN_OS密码管理例程的介绍,让读者更好地了解DWIN_OS平台的开发方式及使用方法,并体会到DGUS屏借助DWIN_OS二次开发平台所实现功能的方便性和快捷性,进而帮助读者更快实现新产品开发。