如何使用 Python 在自定义 dbus 上导出对象?

Posted

技术标签:

【中文标题】如何使用 Python 在自定义 dbus 上导出对象?【英文标题】:How to export an object on a custom dbus using Python? 【发布时间】:2012-02-26 11:04:09 【问题描述】:

我想在自定义总线(即不是 SessionBus 或 SystemBus)上提供 dbus 方法和信号。如果我从命令行启动 dbus-daemon 的测试副本,如dbus-daemon man page 中所述,如下所示:

dbus-daemon --session --print-address

然后返回例如地址:

unix:abstract=/tmp/dbus-vthAiAw4am,guid=60da6b6ef244a0dbdb9710a800002218

我可以使用 d-feet 中的这个地址来“连接到其他总线”,那里什么都没有。现在,我想在该总线上声明一个名称并导出对象以使用 Python 提供 dbus 方法和信号。我尝试阅读dbus.service.BusName 后面的代码,我通常会在会话或系统总线中传递,但我只是迷路了。任何人都知道如何做到这一点(如果可能的话)?

【问题讨论】:

【参考方案1】:

查看 d-feet 的源代码当然比浏览整个 dbus-python 库更容易找到答案。在声明总线名称时,可以使用问题中的地址,方法是传入带有地址作为参数的dbus.bus.BusConnection 对象,如下所示:

bus_name = dbus.service.BusName('my.testbus.test', dbus.bus.BusConnection('unix:abstract=/tmp/dbus-vthAiAw4am'))

然后我可以导出方法并在此总线上发出信号。

【讨论】:

以上是关于如何使用 Python 在自定义 dbus 上导出对象?的主要内容,如果未能解决你的问题,请参考以下文章

Python Dbus:如何导出接口属性

如何导出DBUS_SESSION_BUS_ADDRESS

dataTables导出按钮显示在自定义位置?

dataTables导出按钮显示在自定义位置?

如何在自定义 CDN 服务器上静态部署 python ***包?

如何在 Windows 上运行 python dbus?