如何解决接收蓝牙控制点发送的响应
我在控制点和编写程序方面遇到麻烦。我知道控制点的特征是0x2AD9(健身机器)。该文档指出: 当服务器执行了4.16.2.2至4.16.2.17节中描述的任何过程时,或者如果该过程产生了本节以下定义的错误,则服务器应向客户端指示健身机控制点特征。 / p>
来自控制点的响应应包括响应代码(0x80),请求操作码(对于请求控制为0x00)和结果代码(对于成功为0x01)
连接到外围设备并发现其特征后,我正在调用写代码。对于控制点特性,我已将notify设置为true。我的写代码是
private func sendInitialCommand() {
let data: [UInt8] = [0x00]
let cmd = Data(data)
peripheral.writeValue(cmd,for: fitnessMachineCharacteristic!,type: .withResponse)
print("command sent")
}
然后我打电话给
func peripheral(_ peripheral: CBPeripheral,didWriteValueFor characteristic: CBCharacteristic,error: Error?) {
peripheral.readValue(for: fitnessMachineCharacteristic)
print("write success \(String(describing: characteristic.properties))")
}
打印语句为
成功写入CBCharacteristicProperties(rawValue: 40)
响应是原始值吗?如果是这样,我如何将其转换为可用数据。文档说响应是Uint8,但是尝试执行此操作会显示错误:
参数类型“ CBCharacteristicProperties”与预期的类型“序列”不符
这是我的问题。我找不到答案在哪里。我正在调用.withResponse,因此它应该显示在didWriteValueFor中,但是我不知道从那里过去。控制点的值仅包含.write,而不包含.read或.notify。我的控制台读取到即使写入控制点后该控制点的值也为零,所以无法从中拉出字节。
我不想继续进行下一个操作,而不确认是否已授予访问权限。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。