对于iOS蓝牙我就不做过多的介绍了,请自行百度。
此处我们用的是ble4.0低功耗蓝牙,下面我们来说一下蓝牙解析。
当我们对发送数据的特征开启监听的时候,下面的回掉会为我们返回数据
此处当我们收到数据后,我们用另一个队列来解析它,也许这个时候你会问,蓝牙的发送速率是最低20ms,否则不满足协议,在这个时间里我们拥有足够的时间来解析数据,此处不是我多此一举啊,听我慢慢解释。ble要求我们发送间隔大于20ms,但是有些人不听话你就没办法了,说安卓可以啊,你的lightblue也可以啊,如下图
这个时候你需要创建队列来执行你的任务
先简单介绍下我们的蓝牙数据格式
上图中我画出了两个数据包,但是他们出现在3帧数据里
0 :消息头
1:消息长度
2:消息编号(第几条消息)
3:组系统id(暂时不管)
4:组件id(暂时不管)
5 ~ (n-2):消息数据
n-1:crc第八位
n:crc高八位
对于上面的消息,我们发现数据包错乱了,因此我们得首先获取正确的数据包,根据上面的数据类型,我们可以把解析分为8个步骤
现在开始获取完整数据包。此处我们每校验一个数据就开始进入下一个步骤一旦数据错误,我们就会到之前开始校验数据的下一位,并且移除掉开始检验数据的那一位
当获得一个完整的数据包之后,就要解析数据了,数据解析尽量用位运算,这种操作运行速度快,如果是oc,我们可以直接采用结构体解析,其中注意结构体的对其就行 ,此处解析的时候,大家一定要先类型转换再位运算,防止越界
float数据解析(我swift刚入门几个月,必要的时候还的靠OC)