【发布时间】:2017-06-27 06:03:35
【问题描述】:
通过 iOS (writeValue: forCharacteristic: type :) 方法发送数据可以正常工作,没有错误,但值不会改变。你知道为什么吗?
> 2017-06-27 14:53:54.846963+0900 BluetoothSample[12662:5477661] Did
> write characteristic <CBCharacteristic: 0x1700ad500, UUID =
> 2A588021-4FB2-40F5- 8204-85315DEF11C5, properties = 0xA, value =
> <1357>, notifying = NO>
uint8_t val = 123;
NSData * valData = [NSData dataWithBytes:(void*)&val length:sizeof(val)];
[self.discoveredPeripheral writeValue:valData forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
- (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
if (error) {
NSLog(@"didWriteValueForCharacteristic With error: %@", [error localizedDescription]);
self.receivePaketDataTextView.text = [[NSString alloc] initWithFormat:@"%@",[error localizedDescription]];
return ;
}
self.receivePaketDataTextView.text = [[NSString alloc] initWithFormat:@"%@",characteristic.value];
}
当我尝试写入时,只打印相同的日志。
【问题讨论】:
-
哪个值不变?在您的外围设备中的价值?你的外围设备是什么?
-
我尝试把ble的特征值改成123,但是没有变化。
-
我明白了,但是哪里你没看到变化吗?在您的外围设备上?你的外设是什么?另一个 iOS 设备?其他设备?你如何读取价值?你接到你的
didWriteValueForCBPeripheralDelegate方法的电话了吗?您是否在该方法中遇到错误? -
其他设备(不是 iOS 设备)的值不变。 ReadValueForCharacteristic 工作正常。 writeValue 也可以正常工作并返回返回值,但不返回值。
-
在您的 iOS 中心,
didWriteValueForCharacteristic中的特征值不会反映您刚刚编写的更改。您需要发出显式读取以获取新值。这是设计使然
标签: ios objective-c bluetooth bluetooth-lowenergy core-bluetooth