iOS BLE 蓝牙 8.1 及更低版本 BLE 订阅特征通知无响应
Posted
技术标签:
【中文标题】iOS BLE 蓝牙 8.1 及更低版本 BLE 订阅特征通知无响应【英文标题】:iOS BLE Bluetooth 8.1 and lower BLE subscribed characteristic notification no response 【发布时间】:2015-10-09 13:34:09 【问题描述】:您好,我是 ios 和目标 c 的新手,这是我的第一个应用程序,我不确定如何调试此问题。
应用程序将二进制文件发送到 STM 芯片(通过 BT 进行固件更新)。当我在 ios9 iphone 6 上运行我的应用程序时,它运行良好,没有问题,STM 芯片被刷新。当我在 iOS8 和更低版本上运行应用程序时,它不起作用。
信息流: Central 在特征 X = 0x61
中发送一个字符` _dataToSend1 = [@"a" dataUsingEncoding:NSUTF8StringEncoding];
[_discoveredPeripheral writeValue:_dataToSend1 forCharacteristic:_WriteChX type:CBCharacteristicWriteWithResponse];
[_discoveredPeripheral readValueForCharacteristic:_WriteChX];`
外设应通过特性 Y 通知响应:
- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
NSLog(@"Here");
if ([characteristic.UUID isEqual:[CBUUIDUUIDWithString:TRANSFER_CHARACTERISTIC_UUIDY]])
NSLog(@"Recived");
.
.some other stuff
.
在 iOS 9 上,我收到通知,在旧版本上,程序挂起,因为 CHY 没有响应,如果我在旧 iOS 上的调试控制台中向 CHX 写入值时设置了一个刹车点,它也可以工作?!我真的不知道如何调试这个......
编辑:所以我可以成功读取发送值 61 的特征 X。但似乎设备没有收到它。如果我第二次发送相同的命令 0x61,那么我会通过通知得到正确的响应......所以我找到了解决方法,但没有找到原因......
【问题讨论】:
【参考方案1】:尝试在写入和读取之间设置一些时间间隔。
【讨论】:
以上是关于iOS BLE 蓝牙 8.1 及更低版本 BLE 订阅特征通知无响应的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows Phone 8.1 上连接和断开蓝牙 BLE