USB发送数据异常
本帖最后由 一杯茶 于 2018-8-6 15:18 编辑使用STM32F205模拟USB键盘,使用USBD_HID_SendReport发送键盘模拟值时出现异常。 USBD_HID_SendReport(&hUsbDeviceFS,Keybd1,8);
其中Keybd1为模拟的数据{0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00}
8个字节为0时发送正常。但只要发送的8个字节有不为0,就会出现不断重复发送的情况,根本停不下来。
使用抓包软件看了下数据:数据明显异常。不知道问题出在哪,有遇到同样问题的吗?
发送了键盘值之后,需要接着发送一个空值(即你说的0),否则电脑就会误以为你一直按着键盘按键不放。。。:):):) 修改数据长度看看 zcl201207 发表于 2018-8-6 20:44
发送了键盘值之后,需要接着发送一个空值(即你说的0),否则电脑就会误以为你一直按着键盘按键不放。。。: ...
添加发送空值也不行,抓包显示还是出现异常:按照程序设置应该是键值和空值交替发送才对。不光二者不是交替发送还多了莫名奇妙的数据。
下面是主程序和抓包截图:
int main(void)
{
uint8_t txbuffer= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uint8_t sendbuffer={0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x00};
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_USB_DEVICE_Init();
HAL_Delay(10000);
while (1)
{
USBD_HID_SendReport(&hUsbDeviceFS,sendbuffer,8); // uint8_t sendbuffer={0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x00};
USBD_HID_SendReport(&hUsbDeviceFS,txbuffer,8); // uint8_t txbuffer= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
}
}
本帖最后由 一杯茶 于 2018-8-7 09:07 编辑
feixiang20 发表于 2018-8-7 00:14
修改数据长度看看
后面那个12字节长度的东西是莫名出现的,并不是我发送的。发送长度修改为7后,那个12字节长度的东西没有再出现但是还是不对,数据没有交替出现,而是都是重复发送几次。
执行一次报告发送函数,仅仅是把要发送的数据拷到数据缓冲区,不代表立即发送到主机,也就是说运行报告函数和数据发送到主机不是同步的,你仔细想想看,这样主机收到的数据是不是几乎不会严格交替。:):):) zcl201207 发表于 2018-8-7 22:01
执行一次报告发送函数,仅仅是把要发送的数据拷到数据缓冲区,不代表立即发送到主机,也就是说运行报告函数 ...
顿悟,呵呵,感谢!! 楼主 最后怎么处理的呀?发出来参考参考 感谢!
页:
[1]