|
本帖最后由 bigjimmy8257 于 2019-8-12 09:53 编辑
Smobiler 的专家,您好。
上周我在我之前的帖子中,提到了我发现的蓝牙控件接收二进制数据时候出现的问题,(原帖在此,请参考 https://www.smobiler.com/forum.php?mod=viewthread&tid=12016 )
但是那个帖子沉太深了,我怕不能被看到,因此这里再写一贴。
我发现当使用蓝牙模块接收经典蓝牙设备的数据时(BLE设备的我没有测试,不知道是什么情况),
如果 接收的二进制数据中有 0x0, 0x80-0xFF 的字节数据,DataReceived事件会将一个接收数据包分成多个数据包处理,比如说,发送方发出的数据是8个二进制字节:
{ 0x20, 0x0, 0x60, 0x80, 0xA0, 0x30, 0x50, 0x70 }, 这个包在接收方会被拆成5个子数据包:
第一个包 : e.Data = { 0x20 }, e.Data.Length = 1
第二个包: e.Data = { 0x0 } , e.Data.Length = 0
第三个包: e.Data = { 0x60 }, e.Data.Length = 1
第四个包 e.Data = { 0x0 }, e.Data.Length = 0
第五个包: e.Data = { 0x30, 0x50, 0x70 } , e.Data.Length = 3
这个会导致数据接收的错误。而且由于在对第四个数据包的处理,将连续数据合并成一个 0x0, 使得接收方完全失去了对原始数据的恢复能力。
我使用其他的蓝牙APP进行测试 (我使用的是‘蓝牙串口’这个工具),它可以正常的接收这些二进制的字节数据。
因为在二进制数据传输的时候,上述0, 0x80 -0xFF 的数据是很正常的数据,我怀疑这个是一个bug。
我使用的蓝牙模块型号是 DX BT-18,如果您需要我的设备用于重现问题,请告诉我收件地址,我可以将设备寄给您。
现在我卡在这个位置上,如果这个问题解决不了的话,就无法再进行下去,前期所做的工作就全部白费了,时间很紧急,麻烦开发团队给评估一下,是否这个确实是bug,是否可以修改,
如果修改的话,会在哪个版本何时推出,(或者能做一个临时的内测版本供使用?)
非常感谢
大杰米。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|