iOS—swift版蓝牙解析

        对于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数据解析
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Guide to BluetoothSecurity原文 本出版物可免费从以下网址获得:https://doi.o...
    公子小水阅读 8,253评论 0 6
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,987评论 1 13
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,135评论 6 13
  • 获取验证码倒计时的按钮。 在你需要的时候调用: 这样就实现了你的获取验证码倒计时,不过还有一个最重要的问题:当你初...
    追梦小怪兽阅读 2,455评论 0 4
  • 一是早睡是一种习惯 二是微笑是一种思维 三是整洁是一种态度 四是运动是一种精神 五是旅行是一种享受 六是阅读是一种...
    栖居侠客阅读 245评论 0 0