• 发文
  • 评论
  • 微博
  • 空间
  • 微信

【项目实操】STC15系列单片机与迪文DGUS屏应用之(七):DGUS屏的密码设计

SingleYork 2020-08-03 18:04 发文

温馨提示

公众号菜单->获取资源->资料获取,百万份学习资料任你下载!更多精彩视频内容,请移步我们『芯知识学堂』的B站。

大家好,我是『芯知识学堂』的SingleYork,前面给大家介绍了迪文DGUS屏的基本操作,相信大家看了文章后对迪文DGUS屏的基本应用应该有了一定的了解,那么,今天笔者将要给大家介绍DGUS屏的另外一个比较实用的功能,那就是DGUS屏的密码设计

【项目实操】STC15系列单片机与迪文DGUS屏应用之(一):新建DGUS工程

【项目实操】STC15系列单片机与迪文DGUS屏应用之(二):DGUS控件的使用(1)

【项目实操】STC15系列单片机与迪文DGUS屏应用之(三):DGUS控件的使用(2)

【项目实操】STC15系列单片机与迪文DGUS屏应用之(四):DGUS工程下载

【项目实操】STC15系列单片机与迪文DGUS屏应用之(五):模拟调试

【项目实操】STC15系列单片机与迪文DGUS屏应用之(六):单片机程序编写

在工业自动化领域,用户产品经常会有密码登录的需求,通过单片机编程实现设置及修改密码程序。一说到密码,我们首先可能想到的是,先在单片机里面存储一个初始密码,然后在触摸屏输入一个密码数字,通过串口下发给单片机,单片机判断这个数字是否跟初始密码一致,来判断密码的正确的,然后可以进行一些修改或其他的操作。当然,这种原始的方法也不是不可行,但是,随着触摸屏组态软件的强大,很多操作都不需要单片机来直接参与,就能实现密码登录、密码修改等。市面上很多人机界面都有这个功能,迪文DGUS屏自然也不例外。

迪文DGUS屏通过自身二次开发平台(DWIN_OS)便可以轻松实现密码功能,省去了单片机编程,为我们的开发带来了极大的方便。本文在迪文官方提供的例程上做了一些修改,详细介绍了通过组态软件和OS程序来设置修改密码的方法,关于OS指令的详细说明请参考官方提供的资料《基于DWIN_OS指令的理解与应用(os详细文档指导资料)》。

首先,我们把需要用到的界面图片准备好,大致如下所示:

然后,建立一个新的工程,由于建立工程的步骤,前面的例程已经详细介绍过了,在此就不再赘述,不清楚如何建立工程的读者,请仔细阅读前面的章节。如有需要源码,可以站内私信笔者。

这里需要特别提醒一下读者,因为本例中需要用到OS,所以在工程配置的时候,需要勾选“启用OS”选项;

本例中,主要演示了如下功能

在“自动模式”界面,按下“手动模式”按键,会出现密码输入框,只有密码输入正确,才能跳转到“手动模式”;

在“自动模式”或“手动模式”界面,按“密码管理”按键,密码输入正确后可进入到“密码管理”界面,在此界面,用户可以修改密码;

在官方给的“密码登陆与改写”例程基础上,增加了按键判断,即:通过判断触摸屏上的“手动模式”按键和“密码管理”按键的返回值,来确定在密码输入正确后,是跳转“手动模式”界面,还是“密码管理”界面。这个功能,在某些场合下是非常有用的。

本例中的密码有两种,一种是“普通密码”,用户可以任意修改;另外一种则是“超级密码”,用户不能更改。“超级密码”的作用就是为了防止用户忘记了自己设置的密码,而作为一把万能钥匙来重置密码。


为了照顾新手,笔者在这里,还是给大家简单分享一下每个界面的变量的配置,读者可以参考该设置,配置自己的工程。

首先,是“自动模式”界面的两个“按键返回”控件的配置:

接下来就是“手动模式”界面的两个“按键返回”变量的配置:

然后,就是“密码管理”界面的变量的配置,这里需要注意的就是,在“新建密码”输入框“再次输入密码”输入框中,均有两个变量,一个是“数据变量显示”控件,另一个则是“数据变量输入”控件,尤其是需要注意这两个变量的地址要一致,并且,由于写变量是用的四个字节,需要用到两个地址控件来存储,所以,在设置下一个变量的地址的时候,需要加“2”,即,“新建密码”的变量地址只0x0052,那么“再次输入”的变量地址就应该为0x0054,其他的,大家参考笔者的配置即可。

接下来,就是密码输入框的配置了,这个地方之前在将数字键盘设计的时候也有讲过,参考之前的设计即可,不过这里需要记住这个密码输入框的地址是0x0050,因为在OS程序中需要用到。

接下来,就是“密码错误”界面的两个按键的配置,当我们密码输错的时候,我们一般会选择重新输入密码或者不想要输密码进行后续操作了,直接返回到主页。这个功能很容易实现,我们只需要添加两个“基本触控”变量即可。

然后,就是我们的密码修改过程中可能遇到的情况了,我们一般修改新密码的时候,需要输入两次新密码,以确保用户输入的准确性,反正用户误操作,改了一个自己都不知道的新密码。那么,检查这两次输入的密码是否一致,就显得很有必要了。当密码输入正确后,我们跳转到一个“密码修改成功”的界面:

然而,并不是每次用户都能讲两次密码输入成一致,有时候不小心多点了个数,或者中间某个数输入错了,这时候,我们就可以跳转到另外一个界面来提示用户,让用户选择是继续重置密码呢还是直接退出

至此,DGUS界面部分设计就大功告成了,接下来的重头戏,就是OS程序部分了。首先,我们为了方便,先把DGUS屏中用到的一些变量的信息,直接以注释的形式添加到OS程序中,这样就可以不用去DGUS工程中去一一查看每个变量的含义了。接下来,就是两个CALL指令,即:调用子程序指令。调用完成后,以END结束,在下一个DGUS屏的周期到来,再开始调用子程序。


在每次一次调用子程序后,都会执行一个RET—子程序调用返回指令

接下来,我们看下密码校验部分,在我们输入完密码,按下“OK”键后,OS程序就会自动来判断密码的正确性,前面说到了,在本例中,有两种密码,一种是普通密码,另外一种就是超级密码了。

在新的工程时,本身是没有设置普通密码的,所以在第一次使用的时候,需要用超级密码权限在“密码管理”界面,设置一个8位数以下(含8位数)的非0密码。

OS程序在判断密码的时候,会首先识别是不是普通密码,如果是普通密码,则直接跳转到“MA_OK” 执行相关动作;

若用户输入的密码不是普通密码,则再来判断是不是超级密码,如果是超级密码,同样跳转到“MA_OK” 执行相关动作。

若两者都不是,则跳转到“MA_ERR”,执行相关动作。

这一部分的完整代码如下图所示:


在密码输入正确后,我们再来识别此时是应该跳转到“手动模式”界面,还是“密码管理”界面呢?这里主要是通过按键返回值来识别:

当变量地址0x1000的返回值是0x0001的时候,跳转到“手动模式”界面;

当变量地址0x1000的返回值是0x0003的时候,跳转到“密码管理”界面;

当然,其中本来还有一个返回0x0002的值,跳转到“参数设置”界面,笔者故意在本例中删去了,留给读者来做验证。

接下来就是“修改密码”的子程序了,这个子程序会判断“修改完成”按键是否按下,然后再来判断两次密码输入框里面的数据是否一致,如果一致的话,则可以成功修改并保存密码,若不一致,则跳到错误界面。

好了,关于迪文DGUS屏密码的设计就简单介绍到这了,有关OS指令部分如有不明白之处请联系作者,也可以参考《基于DWIN_OS指令的理解与应用(os详细文档指导资料)》,里面有每条指令的详细说明。

需要完整工程源码的小伙伴们可在我们『芯知识学堂』微信公众号后台回复“迪文密码设计”后即可获得本例程所有资料的下载链接,您们的支持是我们坚持创作的动力,感谢大家的支持!

原创不易,转载请务必注明出处!


声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    SingleYork

    微信公众号『芯知识学堂』官方账号...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码