-已解决-根据 GPIO 输入更新 BLE GATT 特性

问题描述 投票:0回答:1

新手正在从事 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 上执行此操作。

python-3.x bluetooth bluetooth-lowenergy dbus bluetooth-gatt
1个回答
0
投票

在 ukBaz 的帮助下,我能够解决这个问题,并且根据我的快速初始测试,系统运行得相当完美。我的代码中有一个缺陷,与任何库或硬件无关。

© www.soinside.com 2019 - 2024. All rights reserved.