Я изучаю BlueZ и BLE.В каталоге bluez / test находится «пример сервера gatt» на python.Я прочитал код и почти понял, как он работает, но что-то не понятно.Например, есть этот метод, который уведомляет, когда значение характеристики изменяется (в данном примере это значение уровня заряда батареи):
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
I 'Начинаю рекламу и запускаю этот пример, затем я использую на своем смартфоне приложение сканера BLE для считывания характеристики (в данном случае уровня заряда батареи).Ну, self.battery_lvl - это целое число (например, 24), но на самом сканере в качестве значения характеристики я вижу «уровень заряда батареи 24%».Проблема в том, что нигде в коде не добавлен «% уровень заряда батареи» к self.battery_lvl (просто 24).Так, где эта дополнительная информация добавлена?Извините за мой английский.Если вам нужна дополнительная информация, пожалуйста, скажите мне