CH582开发板上有一个USB接口,可以接键盘鼠标等外设,我想用CH582控制USB键盘的LED指示灯,在实践中遇到问题,希望沁恒官方人员帮忙。
基础知识:
一般的键盘有三个指示灯,分别是Num Lock指示灯、Caps lock指示灯、scroll lock指示灯。
Num Lock指示灯-----点击小键盘左上角的Num Lock键即可开启,开启后可以输入小键盘上的数字。
Caps lock指示灯-----点击Caps Lock键可以开启该指示灯,该键的作用是大小写转换。
scroll lock指示灯-----点击键盘上的ScrollLock键即可开启该指示灯,它是滚动锁定键。
键值:
Num Lock-----83---0X53
Caps lock-----57---0X39
scroll lock-----71---0X47
Locking Caps Lock-----130---0X82
Locking Num Lock-----131---0X83
Locking Scroll Lock-----132---0X84
遇到的问题:
1,我使用官方的例程HostU2Enum可以正确打印键值,按一下Num Lock键,Num Lock指示灯可以点亮,但是再按一下就不熄灭,程序名字是SETorOFFNumLock,应该是可以设定Num Lock灯的亮和灭,但我看了好半天也不知道在哪里修改。
2,我还需要控制Caps Lock和Scroll Lock指示灯的亮灭,其中OUT的数据在哪里修改,我也没有找到。
3,OUT数据是下面程序中tmp[] = {0x21, 0x09, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00};倒数第二个字节的0X01吗?
CH58x_usb2hostClass.c中/*********************************************************************
* @fn U2SETorOFFNumLock
*
* @brief NumLock的点灯判断
*
* @param buf - 点灯键值
*
* @return 错误码
*/
uint8_t U2SETorOFFNumLock(uint8_t *buf)
{
uint8_t tmp[] = {0x21, 0x09, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00};
uint8_t len, s;
if((buf[2] == 0x53) & (buf[0] | buf[1] | buf[3] | buf[4] | buf[5] | buf[6] | buf[7] == 0))
{
for(s = 0; s != sizeof(tmp); s++)
{
((uint8_t *)pU2SetupReq) = tmp;
}
s = U2HostCtrlTransfer(U2Com_Buffer, &len); // 执行控制传输
if(s != ERR_SUCCESS)
{
return (s);
}
}
return (ERR_SUCCESS);
}
引用: nmg 发表于 2022-4-27 17:44 这个问题是不是还没解决?
前2天已经将问题反馈给soso,soso和技术已经有沟通并正在处理,具体情况你单聊soso。
引用: tagetage 发表于 2022-4-27 20:22 前2天已经将问题反馈给soso,soso和技术已经有沟通并正在处理,具体情况你单聊soso。
说的不是一件事情,这个帖子不是求助沁恒吗,问题我看沁恒还没回复,想问你是不是解决了,需要再找沁恒帮忙看看吧
引用: nmg 发表于 2022-4-28 10:07 说的不是一件事情,这个帖子不是求助沁恒吗,问题我看沁恒还没回复,想问你是不是解决了,需要再找沁恒帮 ...
我求助的问题还没有解决,沁恒作为厂家不着急回复,我就更一点也不急了。