gpt4 book ai didi

python - BlueZ 示例 GATT 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:39 25 4
gpt4 key购买 nike

我正在学习 BlueZ 和 BLE。在 bluez/test 目录中有一个 python 'example gatt server'。我已经阅读了代码并且几乎理解了它是如何工作的,但是有些东西还不清楚。例如,有一个方法可以在特征值发生变化时发出通知(在本例中是电池电量值):

    def notify_battery_level(self):
if not self.notifying:
return
self.PropertiesChanged(
GATT_CHRC_IFACE,
{ 'Value': [dbus.Byte(self.battery_lvl)] }, [])

PropertiesChanged 方法是这样定义的:

@dbus.service.signal(DBUS_PROP_IFACE,
signature='sa{sv}as')
def PropertiesChanged(self, interface, changed, invalidated):
pass

我开始宣传并运行这个示例,然后我使用智能手机上的 BLE 扫描仪应用程序来读取特性(在本例中为电池电量)。好吧,self.battery_lvl 是一个整数(例如 24),但在 ble 扫描仪上,作为特征值,我看到“24% 电池电量”。问题是代码中没有任何地方将“%电池电量”添加到 self.battery_lvl(仅 24)。那么这些附加信息添加在哪里呢?对不起我的英语不好。如果您需要更多信息,请告诉我

最佳答案

电池电量示例使用蓝牙服务采用的 UUID (0x180F) 和属性格式(请参阅 this )。这样,当手机应用程序找到该服务并看到UUID时,就会知道这是电池服务,并在读取该值时添加%。与使用自定义服务/特性相比,这是一个主要优势,您可以在远程端添加智能,因为本地端具有预定义的格式。请注意,这也适用于采用的心率服务/特性(应用程序将立即添加 bpm)、采用的温度服务/特性(应用程序将立即添加 (°C) 等。

有关采用的服务和特性的完整列表,请参阅以下链接:-

有关此主题的进一步阅读:-

我希望这会有所帮助。

关于python - BlueZ 示例 GATT 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55223284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com