获取 BLE 设备的响应

2024-01-28

我对使用蓝牙设备还很陌生。到目前为止一切都很完美。但有一个问题我不知道如何处理。 我有一个 LED 灯设备,我可以改变一切,从颜色到速度、闪烁、褪色等等。 现在我想读取当前的设备状态(例如设备是打开还是关闭)。我有一份该设备的文件,上面写着:

询问: a) 发送命令:【0XEF】+【0X01】+【0X77】 b) 控制器响应: 【0X66】+【8位设备名称(0x14)】+【8位开关】+【8位模式值】+【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
}

如果您的特性不支持通知,您可以尝试将响应类型设置为 .withReponse 的数据写入外设,如下所示:

peripheral.writeValue(data, for: characteristic, type: .withResponse)

请记住也设置外设委托,之后外设将在每次成功写入后触发此方法:

    //write response
    func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
        //data is in characteristic.value
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 BLE 设备的响应 的相关文章

随机推荐