CH376连接扫描枪设备

我使用CH376连接扫描枪,代码是通过修改论坛提供的“376操作鼠标键盘”例程得到的。 现在调试的枚举已经通过(其中各个步骤均通过,扫描枪也进入了工作状态),但使用CH37X_Get_int_in获取数据一直获取不到,CH37X_Get_int_in()里的代码如下: uint8_t CH37X_Get_int_in(uint8_t tog, uint8_t endp_int) { uint8_t s; tog = tog ? 0x80 : 0x00; CH37X_IssueTkn(0x80, (0 << 4) | DEF_USB_PID_IN); s = CH37X_Wait_inter(); if(s == USB_INT_SUCCESS) { CH37X_RD_USBData(data_buf); //键盘中断端点数据长度一般为8字节,鼠标为4字节 /*for(j = 0; j != t; j ++) printf("%02x ",(unsigned short)data_buf[j]);*/ if( endp_int == Device_Atti.Device[0].Device_endp) Device_Atti.Device[0].tog = Device_Atti.Device[0].tog ? FALSE : TRUE; else Device_Atti.Device[1].tog = Device_Atti.Device[1].tog ? FALSE : TRUE; } return s; } 其中s = CH37X_Wait_inter();在有扫描数据和没扫描数据均返回错误代码0x28;

我应该如何操作才能正确取到扫描枪数据?

s == USB_INT_SUCCESS 这个里面“S”的状态是多少?还有确认你的ENDP_INIT这个变量是否正确。


s == USB_INT_SUCCESS 这个里面的"S"的状态是0x28, ENDP_INIT(端点地址)里的变量值是0x03,端点地址里的值我不知道是否正确的,我在设置地址的时候不管设置为0x05还是0x03,ENDP_INIT(端点地址)里的变量值都是0x03!


端点号是需要你从配置描述符里面的端点描述符来获取的,将配置描述符贴出来看下你的端点号是否正确。


端点地址改变不了?不可能,除非你的编译器形参穿不进去。你先确定的扫描枪上传端点到底是什么,然后再往那个端点读数据


问题已经得到解决,确实是端点号与配置描述符里的不一样, 不一样的原因是因为我使用的是32位MCU,在进行端点描述结构体赋值时出现错位,导致读取来的出现端点号出现错误! 多谢各位大侠相助


只有登录才能回复,可以选择微信账号登录