我正在构建一个通用的DBus代理接收器,用户可以利用它来配置通用信号侦听器并将它们代理到另一个服务中。
因此,我需要能够听到所有的巴士信号:
from dbus import SessionBus
def handler(*args, **kwargs):
print(args, kwargs)
# ...
bus = SessionBus()
bus.add_signal_receiver(handler, signal_name=None, dbus_interface=None, path=None)这种方法的问题在于,我无法从处理程序的args和kwargs中判断哪个接口/信号名称/路径与信号关联:
args=(dbus.String(':1.22395'), dbus.String(''), dbus.String(':1.22395')) kwargs={}是否有一种简单的方法来检查DBus以获得更多关于接收信号的信息?我猜它应该存在(dbus-monitor --monitor做的事情或多或少和我想做的一样),但我在网上找不到任何参考资料。
发布于 2022-02-02 23:46:33
查看sender_keyword、destination_keyword等add_signal_receiver()关键字参数。
您可能想考虑使用或者其他一些更现代的D总线绑定。dbus-python很古老,不太像Pythonic。这是不太积极地维护,当然不是主动开发的。
https://stackoverflow.com/questions/70962851
复制相似问题