收藏
回答

蓝牙发送数据字符串长度超出问题

问题模块
API和组件

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


最后一次编辑于  2017-08-09  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

8 个回答

  • 王翊夫if
    王翊夫if
    2017-08-11

    @A_CHNZ 

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

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


    2017-08-11
    赞同
    回复
  • 王翊夫if
    王翊夫if
    2017-08-10

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

    问题可以详细说说看么?


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

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

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


    2017-08-10
    赞同
    回复
  • 王翊夫if
    王翊夫if
    2017-08-09

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

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

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

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

    2017-08-09
    赞同
    回复
  • Achen
    Achen
    2017-08-11

    @王翊夫if  

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

    微信号:chenyudaozhuang

    2017-08-11
    赞同
    回复
  • Achen
    Achen
    2017-08-10

    那么安卓平台的会概不?

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

    2017-08-10
    赞同
    回复
  • Achen
    Achen
    2017-08-10

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


    2017-08-10
    赞同
    回复
  • Achen
    Achen
    2017-08-10
    1. write 和writeWithoutResponse都支持。

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


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

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


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


    2017-08-10
    赞同
    回复
  • Achen
    Achen
    2017-08-10

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

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

    2017-08-10
    赞同
    回复