迪文科技论坛

 找回密码
 立即注册
搜索
查看: 217|回复: 26

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

[复制链接]

4

主题

45

回帖

239

积分

中级会员

Rank: 3Rank: 3

积分
239
发表于 2024-10-22 10:08:35 | 显示全部楼层 |阅读模式
看论坛上说录入控件和显示控件设置为不同的地址就行,然后单片机给文本显示控件发送*,但有一个问题,我可能输入的密码是3位也就是abc 3个字节,也可能是8位 abcdefgr,8个字节,我得知道控件上录入的是多少个字节,才能发送*的数量,现在是不知道如何判断?比如文本录入是5000H,文本显示是5020H,那么我的想法是用sys_read_vp(5000,buf,字)这个函数去读到缓存区buf里再写个函数去判断字节数,但是第三个参数是固定必须写的,我输入的密码是随即不确定的,该怎么判断在键盘端录入的密码是多少位啊???
回复

使用道具 举报

37

主题

146

回帖

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2024-10-22 11:41:44 | 显示全部楼层
为什么需要发*,迪文可以设置输入时显示*

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Github搬运工
回复

使用道具 举报

4

主题

45

回帖

239

积分

中级会员

Rank: 3Rank: 3

积分
239
 楼主| 发表于 2024-10-22 13:00:12 | 显示全部楼层
赵雄帅 发表于 2024-10-22 11:41
为什么需要发*,迪文可以设置输入时显示*

因为想要密码不显示,是的,在键盘上输入的时候可以设置为不显示就是*,但是在文本显示的时候是显示出来的,还有就是我的键盘是全键盘,不是数字键盘
回复

使用道具 举报

37

主题

146

回帖

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2024-10-22 13:38:38 | 显示全部楼层
LBS 发表于 2024-10-22 13:00
因为想要密码不显示,是的,在键盘上输入的时候可以设置为不显示就是*,但是在文本显示的时候是显示出来 ...

全键盘用ASCII输入也可以的呀

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Github搬运工
回复

使用道具 举报

4

主题

45

回帖

239

积分

中级会员

Rank: 3Rank: 3

积分
239
 楼主| 发表于 2024-10-22 14:40:55 | 显示全部楼层
赵雄帅 发表于 2024-10-22 13:38
全键盘用ASCII输入也可以的呀

不是这个意思哈哈,你现在操作的是弹出的键盘上输入的,当然可以是*,我的也行,我的意思是在键盘上输入完之后,点击entr,这时候会跳到文本显示控件上,这时候本文显示控件不是*,是显示出来的密码,我看论坛上说用单片机给dgus变量发送*就行,但是现在不懂咋发送
回复

使用道具 举报

37

主题

146

回帖

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2024-10-22 15:00:09 | 显示全部楼层
本帖最后由 赵雄帅 于 2024-10-22 15:02 编辑
LBS 发表于 2024-10-22 14:40
不是这个意思哈哈,你现在操作的是弹出的键盘上输入的,当然可以是*,我的也行,我的意思是在键盘上输入完 ...

明白了,那你就把第三个参数设置大一点,总不可能是无限输入的对吧,比如你密码最大输入是10个字母,那你就设置成10,然后它读过来以后,用个for循环判断结束字符,如果你输入3个字母abc,但是你读取的还是10个,所以读取到的10个大概就是abc 0xFF 00 00 00...没错,读出来的在字符结束时会加个0xFF,那你就用循环去判断这个buf的第几个是0xFF,就知道是几位了,这个你需要尝试一下,我不知道ASCII录入读取以后结束符是不是0xFF,我之前用的GBK录入读取对应地址时结束符是0xFF
Github搬运工
回复

使用道具 举报

37

主题

146

回帖

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2024-10-22 15:10:59 | 显示全部楼层
LBS 发表于 2024-10-22 14:40
不是这个意思哈哈,你现在操作的是弹出的键盘上输入的,当然可以是*,我的也行,我的意思是在键盘上输入完 ...

我倒是有个疑问,如果你是用于密码输入的话,那么输完密码以后不应该就直接跳转页面并清除输入密码的内容了吗?为什么还要去做个文本去显示*号呢?
Github搬运工
回复

使用道具 举报

4

主题

45

回帖

239

积分

中级会员

Rank: 3Rank: 3

积分
239
 楼主| 发表于 2024-10-22 16:29:16 | 显示全部楼层
赵雄帅 发表于 2024-10-22 15:00
明白了,那你就把第三个参数设置大一点,总不可能是无限输入的对吧,比如你密码最大输入是10个字母,那你 ...

这个思路可以,请问我想去判断有几个字节,比如密码123,就是0x31 0x32 0x33三个字节,那么我定义i去计数,是char i=0 ,之后i++去计数,还是定义int i=0; 因为char 是一个字节,int 是4个字节吧
回复

使用道具 举报

4

主题

45

回帖

239

积分

中级会员

Rank: 3Rank: 3

积分
239
 楼主| 发表于 2024-10-22 16:30:35 | 显示全部楼层
赵雄帅 发表于 2024-10-22 15:10
我倒是有个疑问,如果你是用于密码输入的话,那么输完密码以后不应该就直接跳转页面并清除输入密码的内容 ...

哈哈 是这样的,我这个功能是密码登录,有用户名和密码,输入之后点击登录才进行判断密码是否正确然后跳转
回复

使用道具 举报

37

主题

146

回帖

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2024-10-23 08:38:18 | 显示全部楼层
LBS 发表于 2024-10-22 16:29
这个思路可以,请问我想去判断有几个字节,比如密码123,就是0x31 0x32 0x33三个字节,那么我定义i去计数 ...

i是数组buf的下标,那就看你最大字节是多少了
如果不超过255个字节,定义成:
unsigned char buf[10],i;

超过255不超过65535定义成:
unsigned char buf[10];
unsigned int i;

你用sys_read_vp(5000,buf,字)函数去读,读到buf里面,那么读到的buf[0] = 0x31,buf[1] = 0x32...,然后去循环判断就可以
Github搬运工
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 01:00 , Processed in 0.078107 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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