请问有没有使用582M做复合BLE HID设备的例子,比如键盘中带有触摸板控制鼠标移动。

目前使用的方法是按照USB HID,也就是修改了hidReportMap,在里面新增了report id。不过没有用,只能按照BLE keyborad用。

该问题已经解决,现在有一个新的问题,蓝牙会不定期的断连。

Disconnected.. Reason:8

对于这个reason是否有文档可以说明具体原因。


8是超时断开,这个是主从机连续几个包交互失败导致的,大概率是程序阻塞,导致蓝牙任务无法按时执行。或者由于干扰或者硬件本身导致通讯失败。错误代码在ble标准协议文档里面有的,网上可以找到。


目前根据现象来看,应该和程序阻塞有关。我的代码逻辑如下:

if (events & USB_LOOP_EVENT){


? ? ? ? usbhandle();

? ? ? ? tmos_start_task(USBTaskID, USB_LOOP_EVENT, 15);


? ? ? ? return (events ^ USB_LOOP_EVENT);

}

usbhandle()函数中会去读取USB收到的数据,数据直接通过调用HidDev_Report函数通过蓝牙传输出去。我现在有几个问题需要请教一下:

1,在这个15ms中之内如果有大量的USB数据,是否会导致USB的buffer装满,使得程序阻塞。

2,USB中实际上收到的是鼠标HID数据,也就是一次会有4byte的数据。假设在15ms之内有多次鼠标数据,那么这个数据是一次性从USB buffer中读出来,还是每次只读4byte,分多次读取?

3,如果15ms内有多次鼠标操作,那么是不是会多次调用蓝牙发送函数造成程序阻塞。

4,又或者直接把蓝牙的buffer用满了,造成程序阻塞。


问题比较多,希望得到解答,谢谢。



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