我尝试在调用方法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.
任何想法?
答案 0 :(得分:3)
我刚想通了,我必须使用NSData
而不是Bytes Array
初始化NSString
:
const uint8_t bytes[] = {0xef};
NSData *valData = [NSData dataWithBytes:bytes length:sizeof(bytes)];