最近用到了蓝牙,外部蓝牙设备是读卡器,给读卡器发送指令,接受读卡器返回数据。只设计到了中心模式。概念性的东西就不说了,自行百度吧。
蓝牙的连接大体步骤:
1、建立中心角色—扫描外设(discover)
2、连接外设(connect)
3、扫描外设中的服务和特征(discover)
4、外设做数据交互(explore and interact)
5、断开连接(disconnect)。
准备工作:
1、添加CoreBluetooth.framework
2、在用到蓝牙的页面加入协议 CBCentralManagerDelegate CBPeripheralDelegate
3、用到的属性(中心管理者,外设(基本上每次只连接一个),特征。)
在viewDidLoad中对中心管理者进行初始化 [self centralManager];
开始连接:
1、检查中心设备蓝牙状态、可用则搜索周边外设
2、筛选符合条件的外设进行连接
3、连接外设成功(查找服务)、失败等状态对应不同的代理方法
4、发现服务,继续向下查找特征characteristics,找到之后订阅特征,开始监听,需要写指令给蓝牙设备的也是在这个方法里面写。
读取数据的唯一方法,那个value就是返回的数据,一般还会做一些处理,每个设备都有不同的处理,这个值是十六进制的
其他的一些代理方法,监控读写状态
5、断开连接
总结:连接外设很简单,难的是对写入的数据和读取数据的处理,进制类型的转换,一般蓝牙厂商会有文档说明数据处理的规则,but我们的文档并不准😄。有问题的可以简信我哦。