迪文科技论坛

 找回密码
 立即注册
搜索
楼主: LBS

【提问】密码登录-我想要密码输入时,文本显示控件是*

[复制链接]

37

主题

146

回帖

1305

积分

金牌会员

Rank: 6Rank: 6

积分
1305
发表于 2024-10-23 08:43:52 | 显示全部楼层
LBS 发表于 2024-10-22 16:30
哈哈 是这样的,我这个功能是密码登录,有用户名和密码,输入之后点击登录才进行判断密码是否正确然后跳 ...

行吧,是这样呀,我之前做的是没有登录按键,用户输完以后就直接判断密码正不正确,然后跳转相应页面,那你这样为啥要用单片机发*呢,直接用迪文屏编码二次开发也能实现,还不用串口,这样应该更简单吧
Github搬运工
回复

使用道具 举报

4

主题

45

回帖

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2024-10-23 10:17:46 | 显示全部楼层
赵雄帅 发表于 2024-10-23 08:43
行吧,是这样呀,我之前做的是没有登录按键,用户输完以后就直接判断密码正不正确,然后跳转相应页面,那 ...

是迪文,我说的单片机就是迪文的二次开发,C51实现的
回复

使用道具 举报

4

主题

45

回帖

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2024-10-23 10:22:41 | 显示全部楼层
赵雄帅 发表于 2024-10-23 08:38
i是数组buf的下标,那就看你最大字节是多少了
如果不超过255个字节,定义成:
unsigned char buf[10],i;

好的好的谢谢,还有个问题,就是如果我连续输入密码错误5次,就跳到警告界面,然后10分钟之后才能重新输入密码,请问这种实现思路是啥?要用到中断还是怎么样,等待10分钟后才能重新点击登录界面
回复

使用道具 举报

4

主题

45

回帖

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2024-10-23 10:49:46 | 显示全部楼层
赵雄帅 发表于 2024-10-23 08:38
i是数组buf的下标,那就看你最大字节是多少了
如果不超过255个字节,定义成:
unsigned char buf[10],i;

还有个疑问:如果我输入的密码必须拥有大写,小写,数字三种,否则就弹出错误警告,我这样判断你看看符合吗?
unsigned char buf[10],i;
sys_read_vp(5000,buf,5);//读10个字节
for(i=0;i<10;i++)
{
    if((0x30<buf<0x39)||(0x41<buf<0x5A)||(0x61<buf<0x7A))//0-9 a-z A-Z的ascill码
{
        //进行密码判断;
    }
    else{//弹出错误界面,密码格式不符合};
}
好像又不太行,这种判断只需要符合小写或者大写或者数字有其中一种密码就可以,反正就是类似这种写法,请问要咋改才能符合我的要求?哈哈哈问题有点多
回复

使用道具 举报

37

主题

146

回帖

1305

积分

金牌会员

Rank: 6Rank: 6

积分
1305
发表于 2024-10-23 11:25:19 | 显示全部楼层
LBS 发表于 2024-10-23 10:17
是迪文,我说的单片机就是迪文的二次开发,C51实现的

好好好,我以为你接的STM32从串口发指令给屏幕的
Github搬运工
回复

使用道具 举报

37

主题

146

回帖

1305

积分

金牌会员

Rank: 6Rank: 6

积分
1305
发表于 2024-10-23 11:30:05 | 显示全部楼层
LBS 发表于 2024-10-23 10:22
好的好的谢谢,还有个问题,就是如果我连续输入密码错误5次,就跳到警告界面,然后10分钟之后才能重新输 ...

在定时器初始化以后,放个10分钟的参数做减减,比如你定时期是1s的,那么设置参数为非0时做减减并且将输密码的按键屏蔽掉,然后再做个全局变量记录错误次数,连续错误达到5次以后把参数设置为60*10=600秒,定时器就开始减减了并且屏蔽按键了,就输不了密码了
Github搬运工
回复

使用道具 举报

37

主题

146

回帖

1305

积分

金牌会员

Rank: 6Rank: 6

积分
1305
发表于 2024-10-23 11:35:13 | 显示全部楼层
本帖最后由 赵雄帅 于 2024-10-23 12:39 编辑
LBS 发表于 2024-10-23 10:49
还有个疑问:如果我输入的密码必须拥有大写,小写,数字三种,否则就弹出错误警告,我这样判断你看看符合 ...

你这肯定不行的,逻辑不对,用嵌套,你自己修改一下,大致思路是这样:

unsigned char buf[10],i;
sys_read_vp(5000,buf,5);//读10个字节
for(i=0;i<10;i++)
{
    if(0x30<buf<0x39)//密码中存在0-9的ascill码
        {
                for(i=0;i<10;i++)
                {
                        if(0x41<buf<0x5A)//密码中存在a-z的ascill码
                        {
                                for(i=0;i<10;i++)
                                {
                                        if(0x61<buf<0x7A)//密码中存在A-Z的ascill码
                                        {
                                                //进行密码判断;
                                                break;//跳出三层循环
                                        }
                                        else{//弹出错误界面,密码格式不符合};
                                }
                               break;//跳出二层循环
                        }        
                        else{//弹出错误界面,密码格式不符合};
                }
               break;//跳出一层循环
    }
    else{//弹出错误界面,密码格式不符合};
}


Github搬运工
回复

使用道具 举报

4

主题

45

回帖

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2024-10-23 13:07:06 | 显示全部楼层
赵雄帅 发表于 2024-10-23 11:30
在定时器初始化以后,放个10分钟的参数做减减,比如你定时期是1s的,那么设置参数为非0时做减减并且将输 ...

好的感谢感谢,我这两天尝试一下
回复

使用道具 举报

4

主题

45

回帖

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2024-10-23 13:09:42 | 显示全部楼层
赵雄帅 发表于 2024-10-23 11:35
你这肯定不行的,逻辑不对,用嵌套,你自己修改一下,大致思路是这样:

unsigned char buf[10],i;

好滴好滴 这个我也试试
回复

使用道具 举报

4

主题

45

回帖

233

积分

中级会员

Rank: 3Rank: 3

积分
233
 楼主| 发表于 2024-10-23 13:30:29 | 显示全部楼层
赵雄帅 发表于 2024-10-23 11:35
你这肯定不行的,逻辑不对,用嵌套,你自己修改一下,大致思路是这样:

unsigned char buf[10],i;

您好,还有个小疑问,我在描述一个使用场景,就是我现在实现的只是一个界面的密码登陆,也就是点击一个菜单需要输入密码正确后切换界面,我有十个菜单需要输入密码进行判断,那么我代码中有很多if else这种逻辑的代码,如果要实现的菜单变多了,会不会影响效率啊,比如点击某一个菜单输入密码后会出现卡顿的情况或者 变慢了,我应该怎么优化好点呢?就比如我下面贴的代码中,只是buf里存放了8位而已,但是键盘上我最多可以输入30个字节,也就是后续还要占用更多内存,不懂这个内存变多了再加上十个菜单页会不会也影响效率? 好像可以这样,因为这下面的代码只是实现其中一个菜单页的切换功能,也就是可以封装起来,然后其他十个菜单页按照这个方式去写,这里我是判断键值按下了,判断按键值比如是0x0001相等时我才进行密码登陆判断或者改写,其他的9个菜单同理我使用不同的键值,判断哪个菜单按下了就去实现那个菜单的跳转,这样是不是就可以规避前面说的菜单变多了 代码太冗余怕卡顿的原因,那现在只剩下这个if else 太多了会不会影响了,迪文的51估计没这么辣鸡把,跑这点逻辑代码不会影响太大效率把,因为不知道如何优化了只知道用if else去实现功能了就行哈哈? 还有就是我还要加上你前面说的判断五次密码错误定时器问题功能,还有就是密码大小写判断也要加上,这一套下来估计要把功能封装一下了,不然全写在main里好像太多太杂不好看,也就是这些问题了,你看看能回答一下嘛根据你的经验哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-22 19:50 , Processed in 0.055279 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表