IOS Характеристики записи BLE c Проблема - PullRequest
0 голосов
/ 16 июня 2020

У меня есть устройство bluetooth с двойным типом bluetooth. При чтении данных с устройства проблем нет, но когда я использую CBCharacteristicWriteWithResponse или CBCharacteristicWriteWithoutResponse для записи значений, значение на устройстве не меняется. Для android он работает нормально с характеристиками ответа или без него c type.

[peripheral setNotifyValue:YES forCharacteristic:characteristic];

Я установил для notify значение YES. Я не отправляю данные размером более 20 байт. Все та же проблема.

if ([command isKindOfClass:[NSData class]]) {
                    NSData *cmdData = (NSData *)command;
                    command = [[NSString alloc] initWithData:cmdData encoding:NSASCIIStringEncoding];
                }
                command = [command stringByAppendingString:@"\r\n"];
                
                while ([command length] != 0) {
                    NSString* str = command;
                    
                    if ([command length] > 20) {
                        str = [command substringToIndex:20];
                    }
                    DebugLog(@"SENT:%@",str);
                    NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
                    [self.discoveredPeripheral writeValue:data forCharacteristic:self.selectedCharacteristic type:CBCharacteristicWriteWithResponse];
                    
                    command = [command substringFromIndex:[str length]];
                }

Я использую этот метод для отладки.

- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
 {
   if (error) {
    DebugLog(@"didWriteValueForCharacteristic ERROR: %@",error);
}
else {
    DebugLog(@"didWriteValueForCharacteristic: %@",characteristic.UUID.UUIDString);
}
}

Получение этой ошибки при записи характеристик.

 error NSError * domain: @"CBATTErrorDomain" - code: 3 
 0x14db57d0 _userInfo __NSDictionaryI * 1 key/value pair 
 0x14d66550 [0] (null)
 @"NSLocalizedDescription" : @"Writing is not permitted." key 
 __NSCFConstantString * @"NSLocalizedDescription" 0x376b3cf4 value 
 __NSCFConstantString * @"Writing is not permitted." 0x37d109e4 
...