1建立中心角色
#import <CoreBluetooth/CoreBluetooth.h>
CBCentralManager *manager;
manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
2掃描外設(shè)(discover)
[manager scanForPeripheralsWithServices:nil options:options];
3連接外設(shè)(connect)
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
if([peripheral.name? isEqualToString:BLE_SERVICE_NAME]){
[self connect:peripheral];
}
s);
}
-(BOOL)connect:(CBPeripheral *)peripheral{
self.manager.delegate = self;
[self.manager connectPeripheral:peripheral
options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBConnectPeripheralOptionNotifyOnDisconnectionKey]];
}
4掃描外設(shè)中的服務(wù)和特征(discover)
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {? ? ? ? ? ? NSLog(@"Did connect to peripheral: %@", peripheral);? ? _testPeripheral = peripheral;? ? ? ? ? ? [peripheral setDelegate:self];
//查找服務(wù)? ? [peripheral discoverServices:nil];? ? ? ? ? ? ? }
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {? ? ? ? ? ? ? NSLog(@"didDiscoverServices");? ? ? ? ? ? if (error)? ? {? ? ? ? NSLog(@"Discovered services for %@ with error: %@", peripheral.name, [error localizedDescription]);? ? ? ? ? ? ? ? ? ? if ([self.delegate respondsToSelector:@selector(DidNotifyFailConnectService:withPeripheral:error:)])? ? ? ? ? ? [self.delegate DidNotifyFailConnectService:nil withPeripheral:nil error:nil];? ? ? ? ? ? ? ? ? ? return;? ? }? ? ? ? ? ? ? for (CBService *service in peripheral.services)? ? {? ? ? ? ? //發(fā)現(xiàn)服務(wù)? ? ? ? if ([service.UUID isEqual:[CBUUID UUIDWithString:UUIDSTR_ISSC_PROPRIETARY_SERVICE]])? ? ? ? {? ? ? ? ? ? NSLog(@"Service found with UUID: %@", service.UUID);//查找特征 ? ? ? ? ?[peripheral discoverCharacteristics:nil forService:service];? ? ? ? ? ? break;? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? ? } }12345678910111213141516171819202122- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{? ? ? ? if (error)? ? {? ? ? ? NSLog(@"Discovered characteristics for %@ with error: %@", service.UUID, [error localizedDescription]);? ? ? ? ? ? ? ? [self error];? ? ? ? return;? ? }? ? ? ? NSLog(@"服務(wù):%@",service.UUID);? ? for (CBCharacteristic *characteristic in service.characteristics)? ? { ? ? //發(fā)現(xiàn)特征 ? ? ? ? ? ?if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"xxxxxxx"]]) {? ? ? ? ? ? ? ? NSLog(@"監(jiān)聽:%@",characteristic);//監(jiān)聽特征 ? ? ? ? ? ? ? [self.peripheral setNotifyValue:YES forCharacteristic:characteristic];? ? ? ? ? ? }? ? ? ? ? ? }}
5與外設(shè)做數(shù)據(jù)交互(讀 與 寫)
讀
- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{? ? if (error)? ? {? ? ? ? NSLog(@"Error updating value for characteristic %@ error: %@", characteristic.UUID, [error localizedDescription]);? ? ? ? self.error_b = BluetoothError_System;? ? ? ? [self error];? ? ? ? return;? ? }? ? //? ? NSLog(@"收到的數(shù)據(jù):%@",characteristic.value);? ? [self decodeData:characteristic.value];}
寫
12NSData *d2 = [[PBABluetoothDecode sharedManager] HexStringToNSData:@"0x02"];? ? ? ? ? ? ? ? [self.peripheral writeValue:d2 forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];