找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 439|回复: 1
收起左侧

迪文触摸屏多用户密码登陆后台OS处理程序

[复制链接]
ID:1101997 发表于 2023-12-5 06:13 | 显示全部楼层 |阅读模式
项目用户登陆要求,用户使用初始密码0,不需要输入密码直接登陆,但一旦更改,就必须用更改后的密码登陆。

所以用户名标签上对应的不是一个数值输入控件,是一个按键返回控件,因为每个用户返回的键值不同所以就确定是哪个用户的登陆请求,收到请求后判断是不是密码0,若是就直接登陆,不是则触发一个位置设置有效分辩率以外的数字输入控件来接收密码。

功能实现还算不错。



//用户登陆界面
void PageUserLogin(void) {
static BOOL fInit = FAIL;
U16 whUserSel;
U32 lhPass1;
U32 lhPass2;
U8 rgbh[20],bh;


  if(!fInit) {
    fInit = TRUE;
    Write_Dgus(0xff00,0);
    Write_Dgus(0xff01,0);
    Write_Dgus(0xff02,0);
    for(bh=0;bh<USER_MAXSIZE;bh++) {
      MyStrCpy(rgbh,vsUser.rgsItem[bh].rgbhUser,12);
      write_dgus_vp(0xf000+bh*8,rgbh,6);
    }  
  }   
  whUserSel = Read_Dgus(0xff00);
  if(whUserSel > 0) {
    if(whUserSel <= USER_MAXSIZE) {
      vsRunInfo.whUser = whUserSel-1;  
      if(0==vsUser.rgsItem[vsRunInfo.whUser].lhPass) {
        vsRunInfo.whPageNum = 2;
        fInit = FAIL;
      }  
      else SimTouchKey(1210,410);
    }      
    Write_Dgus(0xff00,0);
  }
  lhPass1  = Read_Dgus(0xff01)*65536L + Read_Dgus(0xff02);
  lhPass2  = Read_Dgus(0xff01)*65536L + Read_Dgus(0xff02);
  if((lhPass1 >0)&&(lhPass1==lhPass2)) {
    if(lhPass1==vsUser.rgsItem[vsRunInfo.whUser].lhPass) {
      vsRunInfo.whPageNum = 2;
      fInit = FAIL;
    }
    Write_Dgus(0xff01,0);
    Write_Dgus(0xff02,0);
  }   
}  


//模拟按键
void SimTouchKey(U16 whX,U16 whY) {
U8 rgbh[8];  

  rgbh[0] = 0x5a;
  rgbh[1] = 0xa5;
  rgbh[2] = 0;
  rgbh[3] = 4;          //点击
  rgbh[4] = whX/256;
  rgbh[5] = whX%256;
  rgbh[6] = whY/256;
  rgbh[7] = whY%256;
  write_dgus_vp(0x00d4,rgbh,4);
}  

登陆界面设计

登陆界面设计
回复

使用道具 举报

ID:1101997 发表于 2023-12-5 06:14 | 显示全部楼层
贴出的代码是实际提供给用户使用的商业代码,安全可靠。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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