|

楼主 |
发表于 2025-9-9 08:41:05
|
显示全部楼层
- typedef struct
- {
- u16 pageID; //按键所在页面的ID(DGUS软件控件视图顺序)
- u16 Xs; //触控区域左上角坐标
- u16 Ys;
- u16 Xe; //触控区域右上角坐标
- u16 Ye;
- u16 picNext; //按键按下后切换的页面对应的ID,0xFF**表示不进行页面切换
- u16 picOn; //按扭按压效果图对应的页面ID,0xFF**表示没有按压效果
- u16 TPCode; //0xFE05,固定值
- u8 FixValue; //0xFE,固定值
- u16 vp; //控件的变量地址
- u8 TPMode; //按键返回值写入方式
- u16 keyCode; //按键返回值
- u8 Hold_Time; //单位0.1秒,按压时间超过此值才响应,0x00表示立即响应
- u8 NoUse[10]; //0x00,固定值
- }STUT_ReturnKeyCode; //按键返回控件参数
- /**
- * @brief 修改按键返回控件的页面切换参数
- * @param pageID 按键所在的页面ID
- * @param keyID 触控控件ID(DGUS软件控件视图顺序),注意需减去基础控件的数量
- * @param keyCode 触控按键返回的键值,0x00-0x7F
- * @param switchPageID 待设置的按键切换页面对应的ID
- * @remark 经测试,此函数无效,具体错误待检查
- */
- void GUI_Key_ModifyPage_ReturnKeyCode(u16 pageID,u8 keyID,u8 keyCode,u8 switchPageID)
- {
- u8 keyCMD[72] = {0};
- STUT_ReturnKeyCode key;
- //写入读取按键控件的指令
- keyCMD[0] = 0x5A; //触控指令高字节
- keyCMD[1] = 0xA5; //触控指令低字节
- keyCMD[2] = (pageID >> 8) & 0xFF;
- keyCMD[3] = pageID & 0xFF;
- keyCMD[4] = keyID;
- keyCMD[5] = keyCode;
- keyCMD[6] = 0x00; //读取模式
- keyCMD[7] = 0x02;
- sys_write_vp(DF_ADDR_KeyAccessCMD,keyCMD,36);
- //等待CPU操作完成
- while(1)
- {
- sys_read_vp(DF_ADDR_KeyAccessCMD,keyCMD,1);
- if((0 == keyCMD[0]) && (0 == keyCMD[1]))
- break;
- sys_delay_about_ms(1);//这个延时必须加,可以防止莫名其妙的错误
- }
- //读取控件参数
- sys_read_vp(DF_ADDR_KeyAccessCMD,(u8 *)&key,36);
- //写入设置按键控件的指令
- key.picNext = switchPageID; //修改切换的页面
- keyCMD[6] = 0x00; //写入模式
- keyCMD[7] = 0x03;
- memcpy(&keyCMD[8],&key,sizeof(key)); //将参数赋值到指令中
- sys_write_vp(DF_ADDR_KeyAccessCMD,keyCMD,36);
- //等待CPU操作完成
- while(1)
- {
- sys_read_vp(DF_ADDR_KeyAccessCMD,keyCMD,1);
- if((0 == keyCMD[0]) && (0 == keyCMD[1]))
- break;
- sys_delay_about_ms(1);//这个延时必须加,可以防止莫名其妙的错误
- }
- }
复制代码
|
|