CH592HID_Keyboard连续发送按键值问题

1694745083563.jpg

mytemp_data0_len=8;

需要发送例如;1234567+回车,发送结果只有12,len是打印了,不知道什么问题

发送数据之后,需要释放。举例,先发送按键A,然后释放;再发送按键B,然后释放。这样可以发送所需要的所有键值。


释放了,发送8个0x00,不是就是释放吗



发送数据之后,还需要判断是否发送成功。实际在发送数据的时候,建议一个个的发送出去,或者一个数据包里面填写几个字节,但是填写字节过多不一定会完全被识别到。

或者可以像例程一样测试,发送一个,里面释放,再发送下一个。

注意判断返回值即是否发送成功。

image.png

image.png


方法二不适合,因为发送传感器值到文本里面,键值会有重复的 ,如0.0005,只能显示0.5

用原工程测试,效果如下

1694779899844573.jpg

1694779899141924.png



1694780122150664.png

1694780131171529.jpg

还有就是换成按间隔发送数据也有问题

上面是读到按键后,打开键值发送时间20ms,发送数据0.864 偶尔会有个数据是正常


发送失败则再次发送,连接间隔调小一些。先从比较大的间隔发送,然后降低速度。发送失败不仅要检查有效键值的发送,还需要注意释放键(0)的发送,否则一直得不到释放会出现上图的情况。


BLE_BUFF_NUM 控制器缓存的包数量  这个最大值是多少, 意思是缓存到这么多个包后在发送吗


BLE_BUFF_NUM是缓存包的数量,防止发送包异常进行缓存的操作。

比如主机在一直往外发包的时候,蓝牙系统不一定来得及处理,因此预留一个缓冲稍后再发送避免直接丢弃。

一般是在大数据量的时候使用到,可以给15,不建议给更大,会消耗RAM。一般情况蓝牙传输使用默认例程的5即可。



现在能正常发出来,但是我们测试发现,安卓手机与电脑上没有问题,但是换成华为手机就会出现 偶尔符号错位,如发送0.0005 接收到 00.005


需要判断数据发送的准确性,即发送数据是否成功,数据是否为正确,释放按键是否成功。

可以蓝牙抓包查看发送的数据是否为正确。


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