迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1157|回复: 9

【开源】密码验证 利用指针对DGUS变量操作的C51代码

[复制链接]

4

主题

21

回帖

303

积分

中级会员

Rank: 3Rank: 3

积分
303
发表于 2023-1-30 15:14:59 | 显示全部楼层 |阅读模式
本帖最后由 rxz505260 于 2023-1-31 10:47 编辑

代码功能:
只做输入密码验证切换到需要的页面
代码中密码写死,可以添加代码从norflash读取和修改密码

  1. #define PASSWORD_INPUT_VP        0x502E      //密码输入框起始地址 双字 502E-502F

  2. u8 compare(u8* input,u8* password,u8 len);//密码比较函数
  3. void Page_Change(u16 PageID);//页面切换函数

  4. void encrypted_login_handler()
  5. {
  6.   u8 i=0;  
  7.   u8 variable_input[4]={0,0,0,0};                                        //密码框输入的数据
  8.   u8 Vp_Clear[4]={0,0,0,0};                                                //密码比对后密码框清零数据
  9.   u8 passdword[4]={0x07,0x5B,0xCD,0x15};                        //定义密码 123456789 也可从norflash读取
  10.   //密码登录  ******************************************
  11.   Read_Dgusii_Vp(PASSWORD_INPUT_VP,variable_input,2);        //读密码框数据到数组variable_input
  12.   for (i=0;i<4;i++)
  13.   {
  14.     if(variable_input==0) {}                        //密码框数据为0则无效
  15.      else                                                 //密码框数据非0开始比较
  16.     {
  17.       //将输入值和正确密码传入比较函数,传入的为数据指针
  18.       if (compare((u8*)&variable_input,(u8*)&passdword,4)==4)  //比对数组的4个数都通过
  19.     {
  20.       Page_Change(14);                                                                        //跳转页面14
  21.       Write_Dgusii_Vp(PASSWORD_INPUT_VP,(u8*)&Vp_Clear,2);                //密码框清零
  22.     }
  23.      else                                                                                                //比对失败
  24.      {
  25.         Page_Change(12);
  26.         Write_Dgusii_Vp(PASSWORD_INPUT_VP,(u8*)&Vp_Clear,2);
  27.       }
  28.    }
  29. }               
  30. }

  31. /*****************************************************************************
  32. 函 数 名  : u8 compare(u8* input,u8* password,u8 len)
  33. 功能描述  : 比对输入数据和预设密码值
  34. 输入参数  : u8* input:传入输入的密码数据指针,u8* password:传入正确的密码指针,u8 len:比较数据的个数
  35. 输出参数  : 返回比较成功的次数
  36. *****************************************************************************/
  37. u8 compare(u8* input,u8* password,u8 len)//密码比较函数
  38. {
  39.   u16 i=0;
  40.   while (i<len)
  41. {
  42.   if(*input==*password)        //顺序比较输入值和预设密码
  43.   i++;
  44.    else
  45.      break;                        //如遇不相等,则退出
  46.   input+=1;
  47.   password+=1;
  48. }
  49.   return i;//返回
  50. }
  51. /*****************************************************************************
  52. 函 数 名  :void Page_Change(u16 PageID)
  53. 功能描述  :页面切换
  54. 输入参数  : u16 PageID 页面号
  55. 输出参数  : 无

  56. *****************************************************************************/
  57. void Page_Change(u16 PageID)
  58. {
  59.         u8 buf[4];
  60.         buf[0] = 0x5a;
  61.         buf[1] = 0x01;
  62.         buf[2] = (u8)(PageID >> 8);
  63.         buf[3] = (u8)PageID;
  64. Write_Dgusii_Vp(0x84,buf,2);
  65.         do
  66.         {
  67.                 delay_us(500);
  68.                 Read_Dgusii_Vp(0x14,buf,2);
  69.         }while(*(u16*)buf!=PageID);
  70.         buf[0] = 0;
  71.         buf[1] = 0;
  72.         buf[2] = 0;
  73.         buf[3] = 0;
  74.         Write_Dgusii_Vp(0x16,buf,2);
  75. }
复制代码


回复

使用道具 举报

2

主题

140

回帖

3244

积分

论坛元老

Rank: 8Rank: 8

积分
3244
发表于 2023-1-31 10:03:18 | 显示全部楼层
学习学习
回复

使用道具 举报

0

主题

10

回帖

119

积分

注册会员

Rank: 2

积分
119
发表于 2023-6-8 11:49:53 | 显示全部楼层
你好楼主,有对应的整体工程文件吗,GUI+C 可以发我吗,1021315914@qq.com,谢谢楼主
回复

使用道具 举报

0

主题

750

回帖

4732

积分

论坛元老

Rank: 8Rank: 8

积分
4732
发表于 2023-6-8 22:15:05 | 显示全部楼层
楼主把核心业务逻辑贴出来了,赞赞赞
只会hellowrold
回复

使用道具 举报

0

主题

1

回帖

31

积分

新手上路

Rank: 1

积分
31
发表于 2023-6-29 10:18:17 | 显示全部楼层

你好楼主,有对应的整体工程文件吗,GUI+C 可以发我吗,1663782879@qq.com,谢谢楼主
回复

使用道具 举报

2

主题

1228

回帖

9877

积分

论坛元老

Rank: 8Rank: 8

积分
9877
发表于 2023-6-29 10:21:46 | 显示全部楼层
学习下楼主的核心代码,赞
回复

使用道具 举报

13

主题

89

回帖

2626

积分

金牌会员

Rank: 6Rank: 6

积分
2626
发表于 2023-6-30 08:59:32 | 显示全部楼层
谢谢楼主。目前开发的项目正需要。学习了。
回复

使用道具 举报

2

主题

13

回帖

113

积分

注册会员

Rank: 2

积分
113
发表于 2024-11-6 10:57:51 | 显示全部楼层
请问切换页面这个函数是怎么实现切换页面的?有点没看懂这里
回复

使用道具 举报

0

主题

785

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
13215
发表于 2024-11-6 11:01:09 | 显示全部楼层
本帖最后由 lijiayan 于 2024-11-6 11:02 编辑

系统变量接口0X0084是处理页面切换的,函数中应该是给0X0084地址给值

本帖子中包含更多资源

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

x
回复

使用道具 举报

2

主题

13

回帖

113

积分

注册会员

Rank: 2

积分
113
发表于 2024-11-6 18:01:37 | 显示全部楼层
小虎同学 发表于 2024-11-6 10:57
请问切换页面这个函数是怎么实现切换页面的?有点没看懂这里

哦,我明白了,触摸屏地址上数据的读写函数,感谢分享
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-11 15:00 , Processed in 0.034875 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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