[英]Getting response from BLE device
我对使用蓝牙设备很陌生。 到目前为止,一切正常。 但是有一个我不知道如何处理的问题。 我有一个led灯设备,可以在其中更改从颜色到速度,闪烁,褪色等的所有内容。 现在,我想读取当前设备状态(例如,设备是打开还是关闭)。 我有该设备的文件,上面写着:
查询:a)发送顺序:【0XEF】+【0X01】+【0X77】b)控制器响应:【0X66】+【8bit设备名称(0x14】】+【8bit swtich开/关】+【8bit模式值】+ 【8位运行/暂停状态】+【8位速度值】+【8位红色数据】+【8位绿色数据】+【8位蓝色数据】+【8位预热期间】+【8位版本号】+【0X99】
如何获得控制器响应? didWriteValueFor函数只是向我返回写入调用是否成功。
如果特性支持通知,您可以通过该行进行通知:
peripheral.setNotifyValue(true, for: characteristic)
将具有该特征的外围设备的委托设置为适当的文件非常重要,在我的情况下是:
peripheral.delegate = self
之后,当某些事情发生变化时,外设将在您的代码中触发此方法:
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
//data is in characteristic.value
}
如果您的特征不支持noyfying,则可以尝试将响应类型设置为.withReponse的数据写入外设,如下所示:
peripheral.writeValue(data, for: characteristic, type: .withResponse)
记住也要设置外围设备委托,在该外围设备每次成功写入后将触发此方法:
//write response
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
//data is in characteristic.value
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.