简介:
很早前就像总结一下手机通过蓝牙连接外设的知识点,但是由于项目比较急,也没有时间去总结。今天刚好看到一篇别人的博客,我就结合的总结了一下。
实现的流程:
-
建立中心角色
-
扫描外设(discover)
-
连接外设(connect)
-
扫描外设中的服务和特征(discover)
- 4.1 获取外设的services
- 4.2 获取外设的Characteristics,获取Characteristics的值,获取Characteristics的Descriptor和Descriptor的值
5. 与外设做数据交互(explore and interact)
6. 订阅Characteristic的通知
7.断开连接(disconnect)
8.模拟器蓝牙调试,慎用,最好还是用真机去调试。
代码实现:
#import <Foundation/Foundation.h> #import <CoreBluetooth/CoreBluetooth.h> #define MyPeripheralName @"MyPeripheralName" #define MySUUID @"XXXX" #define MyCUUID @"XXXX" #define kNotificationConnected @"kNotificationConnected" #define kNotificationDisconnected @"kNotificationDisconnected" typedef enum _EN_Command_Type { EN_Command_Invalid = -1, EN_Command_Start = 0x0, EN_Command_Mode1 = 0x1, EN_Command_Mode2, EN_Command_Mode3, EN_Command_Mode4, EN_Command_Mode5, EN_Command_Mode6, EN_Command_Mode7, EN_Command_Mode8, EN_Command_Mode9, EN_Command_Stop, EN_Command_Shutdown,//关机 }EN_CommandType; @interface MSBluetoothManager : NSObject<CBCentralManagerDelegate,CBPeripheralDelegate> @property (nonatomic,assign)BOOL bluetoothPowerOn; /** * 单例方法 * * @return 单例 */ +(MSBluetoothManager*)shareInstance; /** * 开始扫描 */ -(void)startScan; /** * 停止扫描 */ -(void)stopScan; /** * 连接 */ -(void)startconnect; /** * 取消连接 */ -(void)cancelConnect; /** * 向设备写数据 */ -(BOOL)writeData:(NSData*)data; /** * 是否可以准备好写数据 * * @return 是否可以准备好写数据 */ -(BOOL)isReady; /** * 发送命令 * * @param command 命令内容 * * @return 是否发送成功 */ -(BOOL)sendCommand:(EN_CommandType)command; @end