Home Articles

iOS 8蓝牙LE Central无法为特性2A06写入值

Asked
Viewed 1444 times
2

我正在开发一款iPhone应用程序,需要在iOS 7.0和8.0上使用CoreBluetooth框架支持Immediate Alert service的蓝牙低功耗设备上写入 Value . 与设备的连接工作正常,但每当我尝试在设备上写入值时,没有任何事情发生(该值未保存在设备上 . 因此,设备没有响铃) . 以下是用于写入值的代码:

+ (void)writeValueForCharacteristic:(CBCharacteristic *)characteristic peripheral:(CBPeripheral *)peripheral alarm:(BOOL)alarm
{    
    NSData  * data = nil;
    if (alarm) {
        uint8_t value = 2;
        data = [NSData dataWithBytes:&value length:sizeof(value)];
    } else {
        uint8_t value = 0;
        data = [NSData dataWithBytes:&value length:sizeof(value)];
    }
    [peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];
}

上述代码执行前的设备日志和状态:

- (void)beginAlarm
{
    NSLog(@"characteristic : %@",discAlertCharacteristic);
    NSLog(@"peripheral : %@",discPeripheral);
    NSLog(@"service : %@",service);

    [BluetoothUtility writeValueForCharacteristic:discAlertCharacteristic peripheral:discPeripheral alarm:YES];
}
characteristic : CBCharacteristic: 0x146ea8d0, UUID = 2A06, properties = 0x14, value = (null), notifying = NO
service : CBService: 0x146ecc90, isPrimary = YES, UUID = 1802
peripheral : CBPeripheral: 0x146dd110, identifier = B0A195DC-7273-B3F5-BA70-0219A61F8904, name = LA-TAG a87, state = connected

我已经使用BLE Utility app测试了我的蓝牙设备并且工作正常 .

1 Answer

  • 0
    if (getCharacteristic.properties.rawValue == 0xE){
    
                  let sentValue:[UInt8] = [0x38, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x02]
    
                  let sentData = Data(bytes: sentValue)
    
                  self.peripheralDevice.writeValue(sentData, for: getCharacteristic, type: CBCharacteristicWriteType.withResponse)
    
     }
    

Related