繁体   English   中英

BlueZ示例GATT服务器

[英]BlueZ example gatt server

我正在学习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'中添加'%Battery Level'(仅24)。 那么,这些附加信息又添加在哪里呢? 对不起我的英语不好。 如果您需要其他信息,请告诉我

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

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

有关此主题的更多信息,请:

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM