蓝牙发送数据字符串长度超出问题
发布于 6 年前 作者 litan 14761 次浏览 来自 问答

wx.writeBLECharacteristicValue该方法发送的长度过长,wx.onBLECharacteristicValueChange接收到的数据会把超出的给抹掉。将字符串分段成适合长度,多次调用 wx.writeBLECharacteristicValue写入时,wx.onBLECharacteristicValueChange仅仅只调用一次,值为第一次发送的数据。

8 回复

对可能是android平台的问题,我用iPhone手机没发现问题。

@王翊夫if  

是的设置timeout,300ms以上,但是数据过长发送特慢。。

微信号:chenyudaozhuang

收到,那就是安卓平台上的问题。

问题可以详细说说看么?


1. 写入的特征值是支持 write 还是 writeWithoutResponse? 

2. 如果是支持write的话,多次调用时有等待上一次写入成功后再执行下一次写入么?

3. notify的行为是由iPhone机器的蓝牙广播程序决定的,那程序的逻辑是收到写入数据后直接进行notify么?

我的蓝牙广播数据是通过iphone手机,安卓机通过小程序搜索,然后发送数据到iphone机。wx.writeBLECharacteristicValue多次写入后wx.onBLECharacteristicValueChange执行不及时,导致数据丢失。

比如我现在写入5个数据,每个20个字符。按常理,应该写入一个,就会执行onBLECharacteristicValueChange一次,然而问题就出在这,有时写入5个,wx.onBLECharacteristicValueChange执行4次或者3次,导致接收到的数据不完成整。

@A_CHNZ 

特征值最好只支持write或者writeWithoutResponse;

安卓平台写入之间可能得设置一个timeout,现在同时频繁写入多次会有点问题,6.5.13版本会fix,你微信号多少呢?


那么安卓平台的会概不?

小问下,我发现整个编辑软件的风格都比较像mac,是不是小程序偏向ios。@王翊夫if

  1. write 和writeWithoutResponse都支持。

  2. 是的上次写入后再执行写一次写入,我用的是递归。

notify的行为是由iPhone机器的蓝牙广播程序决定的’,意思是说完全取决于蓝牙块的程序与小程序无关对不。

至于‘那程序的逻辑是收到写入数据后直接进行notify么?’,这个有时不是收到写入就立马进行notify,而是直接跳过本次收到的写入,去执行下一次写入的notify。

非常感谢你的回答,在线等待。

麻烦说下有问题的手机系统和微信版本。

写入的特征值是支持 write 还是 writeWithoutResponse?

如果是支持write的话,多次调用时有等待上一次写入成功后再执行下一次写入么?

notify的行为是由设备决定的,设备是收到写入数据就执行notify的么?

回到顶部