У меня есть два приложения: одно периферийное (на iPad 4-го поколения, работающего под управлением iOS 7), и одно центральное (iPhone 5c с iOS7).Ядро Bluetooth - Периферийное устройство не может быть записано центральным
Я хочу иметь записываемую характеристику внутри периферийного устройства, что центральная часть записывает несколько байтов (приблизительно 4 байта, но может варьироваться от исполнения к исполнению).
Я настройка периферийного устройства следующим образом:
-(void)startPeripheral
{
CBMutableService *service = [[CBMutableService alloc]initWithType:[CBUUID UUIDWithString:kMyServiceUUID] primary:YES];
CBMutableCharacteristic *ch = [[CBMutableCharacteristic alloc]initWithType:[CBUUID UUIDWithString:kMyWriteUUID] properties:CBCharacteristicPropertyWrite value:nil permissions:CBAttributePermissionsWriteable];
service.characteristics = @[ch];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@[[CBUUID UUIDWithString:kMyServiceUUID]], CBAdvertisementDataServiceUUIDsKey, @"My Peripheral", CBAdvertisementDataLocalNameKey, nil];
[self.peripheralManager addService:service];
[self.peripheralManager startAdvertising:dict];
NSLog(@"Service = %@",service);
}
Это все, кажется, работает на первое, периферический рекламирует услугу, и мои центральные может сканировать, найти, обнаруживает обслуживание и характеристику и найти характеристику его интересует в. Проблема возникает, когда я пытаюсь написать характеристику.
На центральной У меня есть следующий метод:
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
NSLog(@"Service/Characteristics = %@",service.characteristics);
for(CBCharacteristic *ch in service.characteristics)
{
NSLog(@"Characteristic properties = %x",ch.properties);
NSLog(@"Characterisctic = %@",ch.UUID);
if([ch.UUID isEqual:[CBUUID UUIDWithString:kMyWriteUUID]])
{
// We've found our write characteristic
NSLog(@"Writing data to characteristic %@",ch.UUID);
NSData *data = [NSData dataWithBytes:(Byte[]){1,2,3,4} length:4];
[peripheral writeValue:data forCharacteristic:ch type:CBCharacteristicWriteWithResponse];
}
}
}
я получаю обратный вызов didWriteValueForCharacteristic, который указывает на ошибку:
Ошибка домена = CBATTErrorDomain Code = 14 "Вряд ли ошибка."
Это не очень полезно.
Может ли кто-нибудь выявить и решить любые проблемы?
Спасибо, Рич
погуглить эту проблему он появляется, я не единственный человек, который испытал Это. Я также обнаружил, что стек Bluetooth LE очень неустойчив, требуя регулярных перезагрузок устройств для исправления проблем. Кроме того, если я запускаю периферию на iPhone 5c, я не могу подключиться к нему, я могу подключиться только к периферийному устройству, когда он запускается на iPad. Я быстро прихожу к выводу, что периферийная поддержка в основных Bluetooth-библиотеках не работает должным образом. –
Вы когда-нибудь находили дополнительную информацию и/или разрешение?Я также вижу страшную «маловероятную ошибку». (Не похоже, что маловероятно. 8)) – AndrewCr