|
前面介绍了如何通过时间函数来设计期限功能,那么随之而来的就需要增加解锁功能,解锁规则如何设定,如果使用固定密码或者是和PLC配合一起解锁也是可以的。 不过最近一直在考虑如何实现动态密码方案,这里所说的动态密码是指:同一个程序,相同现场,相同屏幕,解锁密码也不相同,解锁密码只用一次。本期就介绍一下目前的想法和思路,也希望各位朋友有更好的方案可以留言交流分享。 1 首先设计一个密码字典,这个密码字典是有键盘上的各种可打印字符组成,比如0-9、a-z、以及特殊符号(这个可以自己根据需要定义)。 2 利用昆仑通态组态软件提供的随机数函数!Rand(x,y),生成8个2位数,至于为什么选择8个2位数?我的想法是把密码字典设计为99个字符的长度的字符串。再利用8个2位随机数,去密码字典中匹配字符作为密码。这样密码长度也为8位,当然如果把密码做得更长,可以生成多个2位随机数。 二 变量准备 密码字典:字符串 初始值为99任意字符组成例:00000000001234567890kaldfaljlj,vxasdADSFAFlk4444AalFkdjaGkFSfSFDG44SG55SRESSTUILILOP;SDSEEWEWWEW!@#7*$jdjnz,mn,zoieoirqu89rhanfln9983afn,fakl,kAOIJi 随机码:字符串 用来存储8个2位数字的字符串。 密码: 字符串 根据8个2位数字,从密码字典中查找的8个字符作为密码。 输入密码:字符串 客户输入的解锁码。可以和密码来做比较,检验是否正确。
三 组态设计 1 新建一个组态画面,初始化密码字典 在窗口的启动脚本中通过脚本给变量:密码字典赋值,记住这个字符串一定要在自己电脑的某个地方做记录,以备后续查找密码。 2 添加2个标签,一个用来显示生成的随机数,一个用来显示密码,这两个是用来测试观察用或者根据随机码查找解锁密码用,真正做程序的时候可以不用。如图: 3 生成随机码 添加一个按钮,脚本如下: '生成8个2位随机数 随机数=!Rand(10,99) 随机码=!Str(随机数) 随机数=!Rand(10,99) 随机码=随机码+!Str(随机数) 随机数=!Rand(10,99) 随机码=随机码+!Str(随机数) 随机数=!Rand(10,99) 随机码=随机码+!Str(随机数) 随机数=!Rand(10,99) 随机码=随机码+!Str(随机数) 随机数=!Rand(10,99) 随机码=随机码+!Str(随机数) 随机数=!Rand(10,99) 随机码=随机码+!Str(随机数) 随机数=!Rand(10,99) 随机码=随机码+!Str(随机数)
4 根据随机码计算密码: 添加按钮获取密码,脚本如下: 位置=!Val(!mid(随机码,1,2)) 密码=!mid(密码字典,位置,1) 位置=!Val(!mid(随机码,3,2)) 密码=密码+!mid(密码字典,位置,1) 位置=!Val(!mid(随机码,5,2)) 密码=密码+!mid(密码字典,位置,1) 位置=!Val(!mid(随机码,7,2)) 密码=密码+!mid(密码字典,位置,1) 位置=!Val(!mid(随机码,9,2)) 密码=密码+!mid(密码字典,位置,1) 位置=!Val(!mid(随机码,11,2)) 密码=密码+!mid(密码字典,位置,1) 位置=!Val(!mid(随机码,13,2)) 密码=密码+!mid(密码字典,位置,1) 位置=!Val(!mid(随机码,15,2)) 密码=密码+!mid(密码字典,位置,1)
5 增加一个输入框,用来让客户输入解锁码 6 增加一个按钮,来比较密码是否正确。 if !strcomp(密码,输入密码)=0 THEN
密码验证 = 0 ELSE 密码验证 = 1 ENDIF
7 通过一个标签,关联密码验证变量,来提示输入密码是否正确。 四 组态画面 本例介绍的是动态密码的实现方法和逻辑,如果想应用到自己的组态中,还需要根据实际情况,把代码写到相应的地方。 另外:密码字典可以根据自己的情况随时调整,只要有记录就可以。或者把解锁的程序写到一个组态中,需要用的时候,只需要输入客户提供的8位随机码即可。 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |