【发布时间】:2021-12-10 06:27:34
【问题描述】:
我需要使用 Python dbus 库通过 DBus 和 Bluez 将数据写入蓝牙设备。
但只知道如何连接和断开设备:
import dbus
system_bus = dbus.SystemBus()
device = system_bus.get_object('org.bluez','/org/bluez/hci0/dev_FF_FF_99_96_64_60')
object = dbus.Interface(device, dbus_interface='org.bluez.Device1')
object.Connect()
object.Disconnect()
这是来自 DFeet 应用程序的方法描述:
<method name="WriteValue">
<arg name="value" type="ay" direction="in"/>
<arg name="options" type="a{sv}" direction="in"/>
</method>
更新:添加了写入转换字节的代码
import dbus
import binascii
system_bus = dbus.SystemBus()
device = system_bus.get_object('org.bluez','/org/bluez/hci0/dev_FF_FF_99_96_64_60')
object = dbus.Interface(device, dbus_interface='org.bluez.Device1')
object.Connect()
device_2 = system_bus.get_object('org.bluez','/org/bluez/hci0/dev_FF_FF_99_96_64_60/service000c/char000d')
object_2 = dbus.Interface(device_2, dbus_interface='org.bluez.GattCharacteristic1')
#bytes = dbus.ByteArray(binascii.unhexlify("025a06000000"))
bytes = binascii.unhexlify("025a06000000")
object_2.WriteValue(bytes,{})
object.Disconnect()
【问题讨论】:
-
这是蓝牙 LE 设备还是蓝牙经典设备?假设它是 BLE,您需要找到要写入的 GattCharacteristic1 接口的 DBus 路径。更多信息可能对您有帮助:stackoverflow.com/a/63751113/7721752
-
@ukBaz 是的,它是 BLE。我已经找到了路径和接口,我的核心问题是如何准备字节或字节数组(例如“025a06000000”)并发送它。
-
您可能想要更新您的问题,显示您如何进行写入以及如何转换为字节。对于您在此处给出的示例:
binascii.unhexlify("025a06000000")=b'\x02\x5a\x06\x00\x00\x00' -
@ukBaz 感谢您的回答。添加了写入命令,但不确定是“bytearray”还是“unhexlify”的结果。我会尽快使用 BtleJuice 框架进行检查。
标签: python bluetooth dbus bluez