你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USB发送数据异常

[复制链接]
一杯茶 提问时间:2018-8-6 15:08 /
本帖最后由 一杯茶 于 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,就会出现不断重复发送的情况,根本停不下来。

使用抓包软件看了下数据:数据明显异常。不知道问题出在哪,有遇到同样问题的吗?
TIM图片20180806150804.png
收藏 评论7 发布时间:2018-8-6 15:08

举报

7个回答
zcl201207 回答时间:2018-8-6 20:44:24
发送了键盘值之后,需要接着发送一个空值(即你说的0),否则电脑就会误以为你一直按着键盘按键不放。。。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

feixiang20 回答时间:2018-8-7 00:14:40
修改数据长度看看

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

一杯茶 回答时间:2018-8-7 08:57:59
zcl201207 发表于 2018-8-6 20:44
发送了键盘值之后,需要接着发送一个空值(即你说的0),否则电脑就会误以为你一直按着键盘按键不放。。。: ...

添加发送空值也不行,抓包显示还是出现异常:按照程序设置应该是键值和空值交替发送才对。不光二者不是交替发送还多了莫名奇妙的数据。
下面是主程序和抓包截图:

int main(void)                                                                                                                                   
{

   uint8_t txbuffer[8]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
   uint8_t sendbuffer[8]={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[8]={0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x00};
    USBD_HID_SendReport(&hUsbDeviceFS,txbuffer,8);     // uint8_t txbuffer[8]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  }

}

抓的数据包

抓的数据包
一杯茶 回答时间:2018-8-7 09:00:42
本帖最后由 一杯茶 于 2018-8-7 09:07 编辑
feixiang20 发表于 2018-8-7 00:14
修改数据长度看看

后面那个12字节长度的东西是莫名出现的,并不是我发送的。发送长度修改为7后,那个12字节长度的东西没有再出现但是还是不对,数据没有交替出现,而是都是重复发送几次。

修改长度后的抓包数据

修改长度后的抓包数据
zcl201207 回答时间:2018-8-7 22:01:28
执行一次报告发送函数,仅仅是把要发送的数据拷到数据缓冲区,不代表立即发送到主机,也就是说运行报告函数和数据发送到主机不是同步的,你仔细想想看,这样主机收到的数据是不是几乎不会严格交替。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

一杯茶 回答时间:2018-8-9 17:55:39
zcl201207 发表于 2018-8-7 22:01
执行一次报告发送函数,仅仅是把要发送的数据拷到数据缓冲区,不代表立即发送到主机,也就是说运行报告函数 ...

顿悟,呵呵,感谢!!
ljd2018 回答时间:2018-9-11 11:31:59
楼主 最后怎么处理的呀?发出来参考参考 感谢!
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版