2

我正在使用pygattlib与 Python 中的蓝牙设备交互。它工作得很好,但是当我尝试在我的代码中使用 DBus 时会出现问题。

如果我导入gattliband GLib.MainLoop().run(),程序在调用run().
我发现 gattlib 有自己的 MainLoop 用于内部异步调用。

我没有找到任何可以涵盖此特定问题的内容,只是一些在 C 中具有多个主循环的示例。

这是 Python 代码的相关部分:

import gattlib as bt

try:
    from gi.repository import GLib
except ImportError:
    import glib as GLib
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop

[...do stuff with gattlib here...]

DBusGMainLoop(set_as_default=True)
dbusService = SystemDBus()
try:
    loop = GLib.MainLoop()
    loop.run() # it stalls here, doesn't respond to DBus or anything
except KeyboardInterrupt:
    GLib.MainLoop().quit()
4

0 回答 0