美文网首页ios开发那些事
iOS—swift版蓝牙解析

iOS—swift版蓝牙解析

作者: 羽之_HB | 来源:发表于2018-02-01 18:08 被阅读764次

            对于iOS蓝牙我就不做过多的介绍了,请自行百度。

            此处我们用的是ble4.0低功耗蓝牙,下面我们来说一下蓝牙解析。

            当我们对发送数据的特征开启监听的时候,下面的回掉会为我们返回数据

    蓝牙数据

                此处当我们收到数据后,我们用另一个队列来解析它,也许这个时候你会问,蓝牙的发送速率是最低20ms,否则不满足协议,在这个时间里我们拥有足够的时间来解析数据,此处不是我多此一举啊,听我慢慢解释。ble要求我们发送间隔大于20ms,但是有些人不听话你就没办法了,说安卓可以啊,你的lightblue也可以啊,如下图

    lightblue示意图

            这个时候你需要创建队列来执行你的任务

    data数据转换

        先简单介绍下我们的蓝牙数据格式

    蓝牙数据

            上图中我画出了两个数据包,但是他们出现在3帧数据里

            0 :消息头

            1:消息长度

            2:消息编号(第几条消息)

            3:组系统id(暂时不管)

            4:组件id(暂时不管)

            5 ~ (n-2):消息数据

            n-1:crc第八位

            n:crc高八位

            对于上面的消息,我们发现数据包错乱了,因此我们得首先获取正确的数据包,根据上面的数据类型,我们可以把解析分为8个步骤

    解析步骤

        现在开始获取完整数据包。此处我们每校验一个数据就开始进入下一个步骤一旦数据错误,我们就会到之前开始校验数据的下一位,并且移除掉开始检验数据的那一位

    获取正确的消息包-01 获取正确的消息包-02 获取正确的消息包-03

    当获得一个完整的数据包之后,就要解析数据了,数据解析尽量用位运算,这种操作运行速度快,如果是oc,我们可以直接采用结构体解析,其中注意结构体的对其就行 ,此处解析的时候,大家一定要先类型转换再位运算,防止越界

    蓝牙数据解析

        float数据解析(我swift刚入门几个月,必要的时候还的靠OC)

    float数据解析

    相关文章

      网友评论

        本文标题:iOS—swift版蓝牙解析

        本文链接:https://www.haomeiwen.com/subject/mytovxtx.html