Android BLE 中心设备与外设进行大数据的读写

来源:互联网 发布:电梯安全知 编辑:程序博客网 时间:2024/05/10 22:29

    众所周知,蓝牙低功耗(BLE)是为省电而设计,其省电原理是因为通过特征值进行读写的时候,自定义的特征值一次最大传输的数据量为20字节;由于一次传输的数据量很小,所以,非常省电;

   那问题来了,如何用BLE来进行较大数据的读写呢,原理很简单,只需要将大数据进行拆分再合并既可;

   开发过BLE的人都会有这种感觉:蓝牙连接太不稳定了,拆分了再合并靠谱吗,会不会中途断开,发送的顺序会不会在对方收到后会不会乱掉,等等诸多问题。

   结论:现在测试过后发现:蓝牙并没有想象中的那么不堪,在测试中经过多次测试,发现蓝牙协议很靠谱,在发送一段数据过程中,蓝牙如果断开,其会立即重新连接,再上次断开的地方继续发送,很是靠谱;

   另外,关于拆分和合并,不同人有不同的方法,我的方法很简单,就是将20字节的数,20字节包含序号位+内容;合并的时候采用了map来存储序号和内容,序号作为键值;

   PS:如何实现大数据的读写呢?

   中心设备上有onCharacteristicRead() 和onCharacteristicWrite()的回调;外设有onCharacteristicReadRequest()和onCharacteristicWriteRequst()回调;大家可以尽可能多的使用这几个回调;

   以中心向外设写大数据为例:首先大数据已经被拆分了,先向外设写序号1 的内容,然后当onCharacteristicWrite()回调时,则说明上次的写完成了,此时可以在回调中继续写序号2……,直到结束,当然外设在收到每一段数据后都需要进行合并处理啊~;记住:一定要等到收到回调之后才可以进行下一次读写,否则就会失败;

0 0
原创粉丝点击