正如标题所示。
我很难为此找到一个不错的python dbus模块。途中有很多烟,镜子和陷阱。
首先,让我们看看我做了什么。
[第一个诱杀装置是dbus-python。根本无法正常工作。甚至例子都坏了。
它似乎已过时,并由pydbus代替
(两者的版权所有者/作者似乎相同)
然后让我们看看pydbus。同样,这些示例也不是很好:
from pydbus import SystemBus
bus = SystemBus()
dev = bus.get('.NetworkManager', 'Devices/0')
给予
KeyError: 'object does not export any interfaces; you might need to pass object path as the 2nd argument for get()'
但是,如果我们尝试完全与该错误消息相反的事情。。
dev = bus.get('.NetworkManager')
我们通过许多方法获得了一个不错的对象:
dir(dev)
['ActivateConnection',
'ActivatingConnection',
'ActiveConnections',
'AddAndActivateConnection',
'AllDevices',
'Capabilities',
'CheckConnectivity',
'CheckPermissions',
'CheckpointCreate',
'CheckpointDestroy',
'CheckpointRollback',
'Connectivity',
....
]
到目前为止很好。让我们来看看是否可以使用该蓝牙技术:
dev = bus.get('org.bluez')
dir(dev)
['Introspect',
'RegisterAgent',
'RegisterProfile',
'RequestDefaultAgent',
'UnregisterAgent',
'UnregisterProfile'
]
因此,还是带有一些方法的不错的对象。但是,大多数事情都丢失了。让我们以这个为例:
https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/device-api.txt
无法通过pydbus获得提到的“连接”方法。。
[请不要建议我使用subprocess.Popen和bluetoothctl-那真是太la脚了。此外,我想学习dbus。
问题:
一些参考:
bluetoothctl
程序的源代码:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/client/main.c编辑:
当然有python bluez库。但这是GPL许可的。而且无法将设备与bluez配对,对吗?
正如标题所示。我很难为此找到一个不错的python dbus模块。途中有很多烟,镜子和陷阱。首先,让我们看看我做了什么。第一个...
EDIT: