python - 如何在 bluez 中编写客户端特征配置描述符

标签 python linux notifications bluez

我在我的 Linux 板上使用 bluez 附带的 example-gatt-server.py 脚本。我想向我的自定义特征之一添加通知。为此,我需要定义客户端特征配置描述符并将其添加到我的自定义特征中。这是我这样做的方式-

类 ClientCharacteristicConfigurationDescriptor(描述符):

CCCD_UUID = '2902'

def __init__(self, bus, index, characteristic):
    self.value = array.array('B')
    self.value = self.value.tolist()
    #self.value = []

    Descriptor.__init__(
            self, bus, index,
            self.CCCD_UUID,
            ['read', 'write'],
            characteristic)

def ReadValue(self):
    print("I am reading CCCD value")
    print(self.value)
    return self.value

def WriteValue(self, value):
    print("I am writing CCCD value")
    print type(value)
    #self.value = value
    print(value)

此代码的灵感来自 example-gatt-server 文件中已定义的 CharacteristicUserDescriptionDescriptor 类。 上面的代码在阅读或写作时给我错误。它甚至不打印“我正在读取 CCCD 值”声明。我在这里缺少什么?

谢谢!

最佳答案

Bluez 处理客户端特征配置描述符 (CCCD)。您不需要在代码中自己定义它。
如果您为相应的特征定义了标志“通知”,通知支持应该由 Bluez 透明地处理。

正如您所注意到的,example-gatt-server 定义了特征用户描述 (CUD) 而不是 CCCD。

关于python - 如何在 bluez 中编写客户端特征配置描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658513/

相关文章:

python - Elasticsearch python API : Delete documents by query

python - Dask 是否支持自定义图形中具有多个输出的函数?

linux - 如何列出 Mercurial 中属于不同分支的所有文件?

c++ - 尝试在 Ubuntu Linux 中构建全局键盘 Hook 时出错

java - 开源 Java EE 通知框架

android: 使用 AlarmManager 运行后台任务

Python单杠双图

Python WTForms : How to dynamically set options of a SelectField in FieldList of FormFields?

c++ - 将事件设置为零的文件描述符添加到 epoll 是否有效?

java - extras(通知文本)未通过