问题标签 [qtdbus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
125 浏览

qtdbus - QDBus registerObject 暴露了不存在的对象

我正在努力在 DBus 上公开 Qt 5.3 中的接口。我有一个适配器,它实现了以 openSuse Imagewriter 的代码为模型的 org.freedesktop.DBus.ObjectManager 类。

当我使用“/com/company/blah/service”之类的路径调用 registerObject 时,我看到了正确的接口。问题是,我不仅在 d-feet 的对象树中看到“/com/company/blah/service”,而且还看到“/”、“/com”、“/com/company”和“ /com/company/blah”,它们中的每一个都暴露了 Introspectable、Peer 和 Properties,尽管事实上这些对象在我的代码中并不存在。

当我在我的对象上创建另一个适配器并将其放置在“/com/company/blah/service2”时,它会按照我的预期显示为 d-feet 中的新行。给我:/ /com <- ? /com/company <- ? /com/company/blah <- ? /com/company/blah/服务 /com/company/blah/service2

做一些阅读,我没有看到需要这种结构的对象路径的限制,也没有看到 registerObject 或 qt 库中的任何选项来防止暴露这些(假)对象。

我使用 qdbusxml2cpp 来生成我的适配器类。代码在 Debian 8 VM 上运行。

有没有办法让这些对象不出现?

0 投票
1 回答
8600 浏览

c++ - 无法在没有 $DISPLAY for X11 的情况下自动启动 dbus-daemon

我有一个绑定到 D-Bus 的 QT/C++ 终端应用程序,但是当我尝试在会话总线上绑定时,出现以下错误:

“无法在没有 $DISPLAY for X11 的情况下自动启动 dbus-daemon”

这只是一个简单的终端应用程序,代码片段:

我不需要 X11 支持,所以我只是在寻找最简单的方法来处理这个错误

0 投票
1 回答
1282 浏览

c++ - 通过 dbus 共享对象

我的项目来源于这个例子:http ://doc.qt.io/qt-5/qtdbus-remotecontrolledshower-example.html

有两个进程,淋浴器和控制器,控制器可以向淋浴器发送简单的消息(我只是将那个项目中的汽车重命名为淋浴器)并将花哨的汽车 GUI 更改为一个简单的 Widget。我这样做没有任何问题。我的问题是当我尝试使用自定义类发送消息时

我在接收消息对象的淋浴类中添加了一个方法

这是我定义淋浴界面的 xml

和专业文件

我无法编译这个,我得到这个错误日志

我不知道发生了什么,我按照本教程中概述的步骤操作:https ://techbase.kde.org/Development/Tutorials/D-Bus/CustomTypes#DBusChat.pro我不知道我是什么俯瞰。

0 投票
1 回答
1063 浏览

c++ - Qt DBus没有收到信号

我一直试图让 Qt DBus 工作,但没有运气。似乎我的应用程序没有收到它应该收到的信号。我已经使用 DBus 进行了监控dbus-monitor --system,它表明确实正在生成信号。当我使用 Qt 进行方法 DBus 方法调用时,响应会很好地返回。即使在 QDBUS_DEBUG=1 的情况下运行,也不会打印任何内容表明 Qt 收到了信号。我错过了一些明显的东西吗?

这是应该工作的代码,但没有(没有打印到控制台):

0 投票
1 回答
337 浏览

c++ - 服务器重新启动后重新连接到 QDBus 服务器 (Qt C++)

我正在测试使用 DBus 进行 QT C++ 项目(Linux)的进程间通信。

我没有使用总线守护程序,而是使用 unix 路径/套接字。

在穿越神秘的 QT DBUS 世界之后,一切似乎都进展顺利,直到我想测试我的一个接口的稳健性。

杀死服务器进程并重新启动它后,连接超时..我清理连接对象(客户端)并尝试重新连接到服务器。

客户端似乎无法重新连接,我收到以下错误:errName:org.freedesktop.DBus.Error.NoServer errMesage:无法连接到套接字/tmp/abcd:连接被拒绝

我试过: - QDBusConnection::disconnectFromPeer(addr); - 清理所有相关对象,因此不存在对连接的引用。

当我重新启动客户端时,连接到(重新启动的)服务器没有问题。

0 投票
1 回答
287 浏览

qt - 使用 Qt5 从 QDBusConnection 获取服务名称

我们的框架最近从 Qt4 更新到 Qt5。但是这里我们在 d-bus 事件处理上遇到了一些问题。

原始代码QDBusConnection::sender().name()返回空字符串。并且官方建议的替代方式QDBusContext::connection()返回类似“1.40”,“1.101”的东西(应该是地址什么的,并且是正确的)。

我们也尝试使用msg.service()where msg is a QDBusMessage,但仍然得到以前的地址。

我们需要得到它的名称,就像com.stackoverflow.HelpMe我们发送到的一样,QDBusConnection::connect()以确保即使重新启动 d-bus 服务可能会导致地址更改,我们也可以区分不同的服务。

感谢您的任何建议。

0 投票
1 回答
834 浏览

c++ - qdbusxml2cpp 无法正常工作

我正在做一个基于 Qt 的小型应用程序,以在我的嵌入式 Linux 附近获取所有 Wifi 承载,为此我将 Connman 与 QtDBus 一起使用。为了获取所有 wifi 信号,我正在尝试使用qdbusxml2cpp应用程序获取自动生成的适配器代码。为此,我使用 connman-dbus.conf 文件作为具有以下内容的服务的描述:

然后,我执行下一个命令:

但是这样做的结果是以下代码:

connmandbusexample.cpp

connmandbusexample.h

如您所见,这段代码没有用,所以我想知道我是否对 qdbusxml2cpp 做错了什么。另外,我不知道我是否可以通过使用 QtDBus 的其他更正确的方法来做到这一点。最后,是否可以从不使用 root 权限的 Qt App 连接到 wifi 网络?我认为以上所有这些都是非常相关的问题,可以帮助解决这个话题。

0 投票
2 回答
2294 浏览

qt - 如何获取 QDBusConnection::connect() 失败原因

我正在尝试以这种方式连接到 D-Bus 信号:

QDBusConnection::connect()返回一个布尔值,我如何获得扩展的错误信息?如果检查QDBusConnection::lastError()它不返回有用的信息(原样QDBusError::isValid()false

0 投票
8 回答
69066 浏览

python - 如何解决 ImportError: No module named 'dbus'?

我已经安装anaconda4在我的 ubuntu 上,并且我的 Python 上有这些模块:

我尝试安装dbus-python (1.2.4)pydbus (0.2)但是,它们都不起作用!

在python 3.5.1中测试了一个简单的程序后,出现错误:

当我pydbus在 Python 2.7.11 和 3.5.1 中使用时:

我收到此错误:

唯一有效的是这个例子PyQT4我没有任何教程。

问题是什么?是我的安装还是其他?

0 投票
0 回答
597 浏览

c++ - 如何让 Qt Dbus 响应更快?(当主线程忙时)

我正在使用 Qt DBus 来监控信号。然而,由于主 Qt 线程经常忙于长时间运行的任务(我目前无法更改设计),因此在另一个程序发送 qt-dbus 消息和调用插槽之间存在很长的延迟。我怎样才能减少这种延迟?

当收到信号时,我连接一个要调用的插槽,如下所示:

使用 Qt 4.8.6。