目前APP同硬件模块通信的方式主要有几种模式: 蓝牙连接模式、WiFi 连接模式(Socket 或 HTTP server)、DLNA 音视频共享 (iOS端还可使用AirPlay)。最近测试了 A PP与外设 通 过 蓝牙方式 实现 硬件 连 接 的功能,对相关的开发实现和测试方法进行一些整理, 在此分享给大家。
蓝牙基础知识
1. iOS平台下蓝牙开发可以使用 MFI(ExternalAccessory 框架) 或 BLE (CoreBluetooth 框架) 进行,但实际开发中基本都使用 CoreBluetooth 框架,因为它功能更强大,支持蓝牙4.0标准。
2. 蓝牙4.0 BLE (Bluetooth low energy) : 它的优点在于传输快,耗电低,但传输数据有限,虽然这个传输字节大小硬件工程师可调,但也不会太大。
3. CoreBluetooth框架的核心是peripheral和 central, 可以理解成外设和中心, 发起连接的是central,被连接的设备为 peripheral,它们是一组相对概念。 比如,当手机去连接控制蓝牙耳机时,你的手机就是central,当手机蓝牙被另一个手机连接并为其提供服务时就是peripheral。
4. Service和Characteristic:蓝牙 设备 通过GATT协 议 定 义的数据通讯方式。一个 peripheral可以提供多种 服务Service,一种Service 又可以包含多个不同的 特征Characteristic。特征就是具体键值对,提供数据的地方。每个特征属性分为读、写、通知等几种方式。
5. central通过peripheral 的 Characteristic 来读写外设的数据,和获取通知。 Peripheral广播自己的Service和characteristic,Central订阅某一个具体的characteristic,Peripheral就和Central之间通过characteristic建立了一个双向的数据通道
6. 外设peripheral、服务Service、特征characteristic之间的关系:
7. UUID: 蓝牙上的唯一标示符,为了区分不同服务和特征,就用UUID来表示。