Corebluetooth为特性写入十六进制值

时间:2015-11-13 13:55:20

标签: ios hex core-bluetooth

我尝试在调用方法NSString * const SET_BUZZER_ON = @"0xef";时为特征写十六进制值didDiscoverCharacteristicsForService,然后检查我是否处于正确的特征中:

NSData* valData = [self dataFromHexString:SET_BUZZER_ON];
[aPeripheral writeValue:valData forCharacteristic:aChar type:CBCharacteristicWriteWithResponse];

代码执行没有问题,但是当调用方法didWriteValueForCharacteristic时,我得到了错误:

Error writing characteristic value: The value's length is invalid.

任何想法?

1 个答案:

答案 0 :(得分:3)

我刚想通了,我必须使用NSData而不是Bytes Array初始化NSString

const uint8_t bytes[] = {0xef};
NSData *valData = [NSData dataWithBytes:bytes length:sizeof(bytes)];