从BLE设备获取响应 [英] Getting response from BLE device

查看:65
本文介绍了从BLE设备获取响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对使用蓝牙设备非常陌生。到目前为止,一切都运行得很好。但是有个问题我不知道该怎么处理。 我有一个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
}

如果您的特征不支持注释,您可以尝试将响应类型设置为.with Reponse的数据写入外围设备,如下所示:

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

记住还要设置外围设备委托,因为该外围设备在每次成功写入后都会触发此方法:

    //write response
    func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
        //data is in characteristic.value
    }

这篇关于从BLE设备获取响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆