安卓蓝牙开发-接收分包数据
最近在开发一个安卓和蓝牙光谱仪设备通讯的程序,用的是传统蓝牙,下位机蓝牙发送的光谱数据比较大,分成了15个包发送。
其中14个包大小290个byte
,最后1个包大于100个byte
,而且一整个数据包由数据头、数据长度、数据、数据尾
这几个部分组成,所以接受的时候做了一个判断,定义了一个大容量数组,用笨方法循环拼接。
/**
* 用于接收蓝牙传入的byte[]并拼接包
* 同时发送广播
*/
public void run() {
// buffer store for the stream
int bytes; // bytes returned from read()
int times=1;
// Keep listening to the InputStream until an exception occurs
//开辟一个5000大小的byte数组,用于存储光谱数据流
byte[] longBuffer = new byte[5000];
while (true) {
try {
//先获取接收到的信息流有多少字节,获取到之后就开辟一个对应大小的空间
int count=0;
while(count==0){
count=mmInStream.available();
}