TI中文支持网
TI专业的中文技术问题搜集分享网站

BLE 4.0主机连续发送数据

Hi all:

     在主机(android手机)连续发送100个字节的数据,我先把它分成5个数据包,然后连续发送,发送代码如下:

do{
        if(len <= 20)
             System.arraycopy(tmp, 2, WriteBytes, 0, len – 2);
        else

        {

            System.arraycopy(tmp, 2 + flags, WriteBytes, 0, 20);            flags += 20;
        }            len -= 20;
            characteristic.setValue(value[0],
            BluetoothGattCharacteristic.FORMAT_UINT8, 0);
            characteristic.setValue(WriteBytes);
 
           mBluetoothLeService.writeCharacteristic(characteristic);
}while(len > 0);

但是在接收的时候,一直接到一包数据,而且用串口打印的时候打印了两次;

  我感觉发送的时候不能这样连续发?谢谢解答呀!

Yan:

hewu,

主机发送的write请求,是需要等slave回复之后才能再次发送。

除非用write without response…

hua huamao:

楼上正解,主机读写数据的时候,需要从机的允许,然后通过读写回调函数来发送数据,而且必须要和相应的服务UUID、特征值的UUID对应,数据长度一致才可以的。所以连续发送,相应的在从机那边要做好对应的设置。

hewu:

回复 Yan:

Hi Yan:

    两个模块之间串口透传已经调通,但是手机和模块之间的还没有调通,问题是android这边不晓得这个slave回复的是什么,怎么来判断一包已经传送完成,可以传送下一包数据,Ti有没有类似的app demo供参考呢?

sanming li:

楼主,我也遇到了这样的问题,我的android是从机,主机每隔100ms发送一个数据包,android这边通过蓝牙接收数据,正常情况下数每隔100ms蓝牙接收到一个数据,但是有些时候蓝牙接收了两个相同的数据,我是通过log打印出来的,在界面上打印了两次,请问您知道这是什么原因吗?

yi zhang23:

安卓系统连带响应的write都没有流控机制?不至于这么弱吧。。。

即使没有流控,连续写5个数据包也不至于缓存承载不了吧,2541还能缓存4个呢。。

至于接收到两遍就更无法理解了,期待大神解答。

赞(0)
未经允许不得转载:TI中文支持网 » BLE 4.0主机连续发送数据
分享到: 更多 (0)