我们知道威纶触摸屏账号相关寄存器,
账号输入对应寄存器LW9219,一个字长度。
账号的密码输入对应寄存器LW9220,两个字长度。
账号密码仅支持数字输入,如下图标识处,限制了密码的长度。
但很多时候,我们是想让密码更复杂或者更好记忆。
这里我们就想让密码可以是字母,或数字,或数值,甚至是中文。
这里我们就来通过自己编写宏代码实现带字母或符号或数字的功能。
效果如下图。
在界面上, 我们准备了一个数值输入元件,要账号1登录才能输入内容,
不然会弹出密码提示框。
在界面上,显示1的数值元件为账号寄存器LW9219,
我们这里仅拿账号1作演示,更多账号可以参考着实现。
然后账号下边为密码输入框,
点击可以弹出字符键盘输入窗口,使用的是键盘窗口64.
在这个键盘窗口,我们就可以输入符号,数字,字母等常用字符。
如果还不够用,我们就得自己设计键盘输入窗口了,
在键盘输入窗口甚至可以将中文作为密码。
密码输入后,我们可以点击保存密码按钮,按钮会调用一个宏指定,
将输入的密码保存到配方文件里,
宏指令如下
- macro_command main()
- short account=0
- //获取当前操作账号
- GetData(account, "Local HMI", LW, 9219, 1)
- char PW[20]
- FILL(PW[0],0,20)
- //针对不同账号保存不同密码,这里仅演示账号1
- if account ==1 then
- //界面已将LW0开始10个字用于密码输入
- GetData(PW[0], "Local HMI", LW, 0, 20)
- //将用户输入的密码保存到对应的配方寄存器
- SetData(PW[0], "Local HMI", RW, 0, 20)
- end if
- end macro_command
复制代码 这些操作可以全部设计在密码保存窗口里。
例程也将账号登录放在了一起。
输入密码后,也可以点击确认输入,登录账号。
登录按钮同样也是调用了一个宏指令。
如下:
- macro_command main()
- short account=0
- GetData(account, "Local HMI", LW, 9219, 1)//获取当前操作的账号
- char PW[20],PW1[20]
- FILL(PW[0],0,20)
- FILL(PW1[0],0,20)
- bool bResult=false
- if account ==1 then
- //获取对应账号用户输入的密码与事先保存的密码。
- GetData(PW[0], "Local HMI", LW, 0, 20)
- GetData(PW1[0], "Local HMI", RW, 0, 20)
- //将输入的密码与事先保存的密码对比,区分大小写。
- bResult=StringCompare(PW[0], PW1[0])
- if bResult==true then
- int nPW=0
- //如果密码正确,则将账号对应的系统密码获取与设置
- GetData(nPW, "Local HMI", LW, 9500, 1)
- SetData(nPW, "Local HMI", LW, 9220, 1)
- end if
- end if
- end macro_command
复制代码 当然例程仅是例程,
在实例的工程项目中,尽量程序界面简化操作。
实现密码带符号,数值,字母的思路是这样的。
记录对应账号的密码,保存于配方寄存器中,
登录时,检查输入密码与配方寄存器密码,
输入密码正确,获取与使用对应账号的系统密码,实现登录。
宏指令注释的比较详细,可以参考,也可以直接下载例程参考。
下载地址:
|