美文网首页
蓝牙设备连接----eg:蓝牙打印----(蓝牙连接设备)

蓝牙设备连接----eg:蓝牙打印----(蓝牙连接设备)

作者: 圆小米123 | 来源:发表于2017-11-03 12:02 被阅读0次

蓝牙实现打印实现

蓝牙连接外设,通过系统框架实现,步骤如下:判断是否打开蓝牙——> 搜索蓝牙设备——>连接蓝牙设备——>扫描蓝牙服务——>搜索服务特性——>如果有打印特性 即可实现打印

判断蓝牙是否打开

  CBCentralManager *manager = [[CBCentralManageralloc]init];       self.manager = manager;      一旦设置代理在运行程序的时候,就会调用协议里一个必须要完成的方法:       - (void)centralManagerDidUpdateState:(CBCentralManager *)central;

蓝牙扫描设备

- (void)scanForPeripheralsWithServices:(nullable NSArray *)serviceUUIDs options:(nullable NSDictionary *)options;

第一个参数serviceUUIDs表示扫描带有相关服务的外部设备,例如填写@[[CBUUIDUUIDWithString:@"需要连接的外部设备的服务的UUID"]],即表示带有需要连接的外部设备的服务的UUID的外部设备,nil表示扫描全部设备;   

   options 暂时可以写一个@{CBCentralManagerScanOptionAllowDuplicatesKey :@YES}这样的参数,YES表示会让中心设备不断地监听外部设备的消息,NO就是不能

筛选设备并根据指定蓝牙设备名字连接

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI;      在这个方法里,我们可以根据我们获取到的硬件的某些条件进行筛选,然后连接我们需要连接的外部设备,例如连接名字带有A的外部设备: 

     if ([peripheral.namehasPrefix:@"A"] ) {         

   [manager connectPeripheral:peripheraloptions:nil];    //连接设备       

   }

判断连接成功失败-代理方法---(如果连接成功就可以处理你想处理的事情啦~)

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral;(连接成功)     

  - (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral*)peripheral error:(nullableNSError *)error;(连接失败)

pragma mark ---------------- 发现服务的代理 -----------------

( 4、我们在连接成功的方法中开始扫描外部设备的服务[peripheral discoverServices:nil];)

 - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(nullable NSError *)error

#pragma mark ---------------- 服务特性的代理 -------------------- - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(nullable NSError *)error { if (error)

#pragma mark ---------------- 写入数据的回调 -------------------- - (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error {

扫描到特征之后,我们就可以拿到相应的特征进行读写操作。   

   例如进行读取数据的操作:

   if ([characteristics.UUID.UUIDStringisEqualToString:@"你需要的特征的UUID"]){           

 //读取特征数据           

 [peripheral readValueForCharacteristic:characteristics];   

    }       

这就读取了特征包含的相关信息,只要读取就会进入另外一个方法:   

    - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic*)characteristic error:(NSError *)error;       

在这个方法里,我们就可以拿到我们需要的数据了。进行写的操作是       

[peripheralwriteValue:data类型的数据 forCharacteristic:使用到的特征 type:CBCharacteristicWriteWithResponse];       最后的type类型有两个,分别是CBCharacteristicWriteWithResponse和                                                  CBCharacteristicWriteWithoutResponse;     

 选择第一个,每往硬件写入一次数据都会进入 

      - (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic*)characteristic error:(NSError *)error;

相关文章

网友评论

      本文标题:蓝牙设备连接----eg:蓝牙打印----(蓝牙连接设备)

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