新手正在从事 BLE 项目。使用 https://github.com/Douglas6/cputemp(根据我的具体需求定制)让 GATT 服务器与广告、服务等一起使用。还让客户端工作并从服务器获取通知(使用 Bleak)。
下一步我需要一些帮助,即:根据通过 GPIO 的输入更新特征值。 (实际上,只需将特征设置为 1 或 0 —— 非常简单。)
我遇到的障碍是实际更新特性的代码块中的概念。我有从 GPIO 接收信号的代码。
是否可以通过Douglas6的代码来处理这个问题?我需要一个单独的代码库来处理它吗?我被困住了。
这是我迄今为止尝试调整 Douglas6 的原始代码的方法。 value 变量生成如下值:[dbus.Byte(49)] 或 [dbus.Byte(48)]。但是当代码运行时,我收到以下错误:
TypeError: Characteristic.PropertiesChanged() missing 1 required positional argument: 'invalidated'
但我认为这主要是由于我缺乏Python经验、类等。我之前遇到过TypeError,并通过将值作为dbus传递来解决。字节。
class RecordCharacteristic(Characteristic):
RECORD_CHARACTERISTIC_UUID = "8e6ae78d-5f47-4fe8-9cf5-aca46adbeefb"
def update_setting(self):
value = []
value.append(dbus.Byte(str(button_status.status).encode()))
self.PropertiesChanged("org.bluez.GattCharacteristic1", {"Value": value}, [])
在 Raspberry pi5 上执行此操作。
在 ukBaz 的帮助下,我能够解决这个问题,并且根据我的快速初始测试,系统运行得相当完美。我的代码中有一个缺陷,与任何库或硬件无关。