卡米拉 发表于 2020-12-31 08:32:48

如何实现密码登陆功能

1概述本文主要阐述的是如何在串口屏中实现密码登陆的功能,即屏幕可以根据用户输入的密码进行密码比对,并且能根据密码的正确或者错误相应做出提示以及动作。实现该功能主要是Minic脚本和Lua脚本,下面会对这两个脚本进行相应介绍。
2Minic脚本的实现—对于modbus变量的比对2.1   适用范围Minic脚本适用于支持modbus通讯的屏幕。
2.2   实现原理
Minic脚本类似于C语言的开发,遵循C语言的语法。脚本主要是对于modbus的变量操作的,modbus主要实现是通过控件和modbus变量关联起来,通过操作modbus变量来控制相应控件的显示。
密码登陆功能主要是实现字符串变量进行比对即可,从文本控件里面输入的密码值,经过minic脚本与设定的密码进行比对,若密码正确就会切换画面,否则会提示“密码错误,请重新输入!”。
2.3.    实现方法2.3.1控件设置密码登陆功能主要使用的控件有:文本控件以及按钮控件。其中,文本控件主要用于账号或者密码的输入,按钮控件用于触发密码比对并根据结果(正确或错误)执行对应的操作。如图2‑1所示。http://www.gz-dc.com/uploads/image/20200311/image001.png图2‑1编辑界面
文本控件的设置如下:账号输入可以设置成全键盘的输入方式,便于字符和字母的结合输入;密码的输入可以设置密码的显示,如图2‑2所示,用小键盘输入即可。
http://www.gz-dc.com/uploads/image/20200311/image002.png图2‑2密码文本设置
按钮控件的设置如下:按钮的触控用途设置成开关描述,对应的操作风格为瞬变即可,如图2‑3所示。
http://www.gz-dc.com/uploads/image/20200311/image003.png图2‑3按钮控件设置



注意:该功能的实现是通过按钮控件的事件通知来执行函数的,对应要确保按钮的事件通知设置是打开的。该设置在工程属性里面,如图 2‑4所示。http://www.gz-dc.com/uploads/image/20200311/image004.png
图2‑4开启通知

2.3.2设置变量
密码登录功能的实现需要用到以下五个变量:账号,密码,账号核对,密码核对,对应的设置在“工具-协议与变量设置”。对应将里面的协议设置为启用,本例子的协议类型为modbus主机,相应显示如图2‑5所示。
http://www.gz-dc.com/uploads/image/20200311/image005.png图2‑5变量设置
添加变量:选中“变量定义”,点击“+添加” 即可添加。首先设定账号变量,格式为“字符串”,变量类型为“内存变量”。密码变量可参考账号变量的设置,相应的设置如图2‑6所示。

http://www.gz-dc.com/uploads/image/20200311/image007.png图2‑6账号变量设置
账号核对变量和密码核对变量设置相同,格式选择“字符串”,变量类型是“内存变量”,和前面不一样的是“默认字符串”需要设置,即设置账号或者密码的比对值,如图2‑7所示。
http://www.gz-dc.com/uploads/image/20200311/image008.png图2‑7账号核对变量设置
注意:该功能检验是否登陆成功的标准是账号和密码的比对都是正确的,即一个账号对应一个密码,两者都要正确才可以;否则,不通过。
设置完变量之后,还要执行关联变量的操作,账号的文本控件关联账号变量,密码变量的操作同上,相应设置如图2‑8所示。http://www.gz-dc.com/uploads/image/20200311/image009.png图2‑8关联变量
2.3.3 编写Minic脚本
本例子脚本实现的原理是:按下“确定”按钮之后,通过控件通知函数来对输入的账号以及密码进行比对。若正确的话,直接切换到主界面;否则,显示“密码错误,请重新输入!”。对应的脚本编写如图2‑9和图2‑10所示。

http://www.gz-dc.com/uploads/image/20200311/image010.png图2‑9初始化函数http://www.gz-dc.com/uploads/image/20200311/image011.png图2‑10判断函数
2.4   运行效果当界面搭建完成之后,可通过http://www.gz-dc.com/uploads/image/20200311/image012.png运行虚拟屏,模拟相应的程序效果。若密码正确,会切换到主界面,如图2‑11所示;若密码错误,会显示错误提示,如图2‑12所示。http://www.gz-dc.com/uploads/image/20200311/image013.png图2‑11密码正确效果http://www.gz-dc.com/uploads/image/20200311/image014.png图2‑12密码错误显示效果

3、Lua脚本的实现——获取控件数值比对3.1   适用范围本方法适用于F系列、物联型等支持Lua脚本的屏幕。


3.2   实现原理
使用Lua脚本实现的方法相对于minic的比较简单,minic的是通过变量获取的密码,这个直接通过get_text(screen,control)和get_value(screen,control)就可以获取对应输入文本的值。其中,get_text(screen,control)返回的是字符串的值,get_value(screen,control)返回的是整型。最后,对应判断比对即可。
3.3   脚本编写界面显示的设置保持minic脚本那样,即文本控件和按钮控件组合来实现。打开“工具”-“Lua脚本”,对应的程序代码如图3‑1所示。

http://www.gz-dc.com/uploads/image/20200311/image015.png图3‑1 Lua脚本代码
3.4   运行效果       Lua脚本运行效果和minic的运行效果是一致的,对应可参考minic脚本的运行效果。

4、总结本例子介绍了如何实现密码登陆的功能,并且对于minic脚本和Lua脚本进行了初步的介绍,从以上实现的例子来看,minic脚本主要对于modbus变量来操作的,即操作变量来实现需求,对应操作起来有点繁琐;Lua脚本的实现不局限于modbus变量,对应实现比较灵活,操作方便。
详情请见资料下载LUA教程开发文档下载:http://www.gz-dc.com/category/typeid/346#mainTop
欢迎联系我司销售咨询



dingmn 发表于 2021-5-11 16:17:55

加个重置密码该怎么操作呢?

Cp`sir 发表于 2021-5-12 08:31:01

看懂上面的操作,基本逻辑语法后,根据自己的逻辑去编辑代码,例程仅是固定密码操作

lbh 发表于 2023-6-1 11:35:56

我自己加了管理员超级密码   普通用户密码修改
页: [1]
查看完整版本: 如何实现密码登陆功能