问题标签 [gdbus]

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 回答
22 浏览

c++ - 当使用 gdbus emit 发出信号时,Gio::DBus 的子类不会调用 on_signal()

我正在尝试在 linux 上用 C++ 实现一个简单的 dbus 本地 IPC 示例。现在我想简单地处理一个在总线上发出的信号:

为了处理这个信号,我按照以下示例实现了一个简单的 dbus 应用程序:

这是应用程序源代码:

我的主要问题是当 gdbus发出信号时应用程序不会触发on_signal回调:

  • 以下是应用程序使用的 dbus 连接的详细信息:

我有点困惑gdbus emit不包含 busname 的参数,但我希望这可以工作,并且我正在尝试找到丢失的部分。

我会很感激任何建议。

0 投票
0 回答
61 浏览

c - 如何使用 GDBusProxy 仅根据 DBus 接口名称获取事件/信号?

使用原始 dbus 库,可以在 DBUS 接口上接收任何事件,而无需指定发送者。[完整示例][1]

我找不到使用 glib gdbus-codegen 进行类似操作的答案/示例。您必须通过指向完整路径(应该是唯一的)将代理对象连接到远程 DBus 对象。

我的问题是实现信号接口的对象可能有很多名称未知。也许我做错了什么?

事件监听器的代码:

事件端的代码:

我想再次连接到接口而不使用侦听器端的 DBUS_EVENTER_PATH。[1]:https ://github.com/wware/stuff/blob/master/dbus-example/dbus-example.c

0 投票
1 回答
228 浏览

c - GLIB D-BUS 蓝牙 - 如何获取文件描述符?

我正在使用 BLUEZ 和 GLIB/D-BUS 连接 2 个 Raspberry Pi(也是笔记本电脑和 Raspberry Pi)。到目前为止,我可以取得公平的进展。

编辑:根据@ukBaz 的好建议,我正在使用笔记本电脑上的python 客户端,以及 Raspberry Pi 上的 C 代码服务器。

在“服务器”上,我可以使用自定义服务 UUID 和串行 RFCOMM 配置文件 UUID 注册设备,然后等待连接。与 python 客户端连接可以工作,我可以看到有一个可用的处理程序(请参阅下面的代码以获取调试输出)我正在使用此代码(在 dbus 循环中,代码为便于阅读而简化):

这是输出:

它显示有一个文件描述符fd 7,但是当我读取 GVariant 参数时,我得到了NULL.

如何访问文件描述符?我的理解是我需要能够从/向客户端读取/写入。

我使用了 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/device-api.txthttps://git.kernel.org/pub/scm/bluetooth/bluez。 git/tree/doc/adapter-api.txt供参考,以及其他一些关于 SO 的帖子。在https://www.linumiz.com/中也有很多信息。

当前的完整代码可在此处获得:btservice

0 投票
1 回答
40 浏览

linux - 如何在linux中将两个bash调用合并为一个

我有 2 个 linux gnome 命令,我想合并为一个。

一个是给我标题:

当另一个给我程序名称时:

现在调用几乎相同,但我无法一次检索两个参数。如何在一个通话中get_meta_window同时使用?get_title

0 投票
1 回答
110 浏览

c++ - cmake add_custom_command pre_build

我是第一次写 cmake 的例子。

这是 CMakeFiles.txt 的一部分:

gdbus-codegen-glibmm使用命令语法生成代码,使用add_custom_command.

然而,与我的预期相反,当我实际执行 cmake 和 make 时,它​​看起来像这样:

然后,如果继续make,就会输出add_custom_command中COMMANT的内容,并实际生成代码。

检查生成的代码后,继续执行 cmake .. 并再次 make 以正常构建。

Server/CMakeLists.txt, Client/CMakeLists.txt 我设置了${CODEGEN_TARGET}使用 ADD_DEPENDENCIES in 的依赖关系,但它的工作方式与我预期的不同。

如何让 gdbus-codegen-glibmm 命令先运行?

0 投票
0 回答
15 浏览

linux - 如何通过 TCP 在 GDBusServer 上设置 keepalive?

在 Linux 系统的 TCP 套接字上托管GDBusServer时,如何激活套接字本身的 keepalive 机制?似乎没有 API 可以访问服务器后面的原始套接字(或GSocket )的选项。我最终也有兴趣从客户端做同样的事情。

0 投票
0 回答
76 浏览

c++ - C++ GDBus。蓝牙服务注册和跳出循环

我需要用 C++ 在 Linux PC 上注册蓝牙服务,到目前为止,我可以用这样的代码来做到这一点:(从这里截取和缩短)。

Everyting 效果很好,我可以在 bluetoothctl 或 sdptool 浏览器中看到该服务(来自其他 PC)。

问题是:我想在注册后继续执行程序,但是我不明白如何在g_main_loop_run (loop);. 如果我只是删除对主循环(GMainLoop *loop = g_main_loop_new (nullptr, false);和以前的)的所有调用,那么服务将不再出现在 bluetoothctl/sdptool 浏览中。如果我在g_main_loop_quit(loop);之后添加行g_main_loop_run (loop);,它也不会被执行,因为循环仍在运行。那我该怎么办?

我已经阅读了 GMainLoop 和 GDBusProxy 描述(GMainLoopGDBusProxy),但它并没有太大帮助。我也看到了这个问题,但是那里列出的代码不完整,我不确定我应该从那里拿什么,不应该拿什么。

0 投票
1 回答
19 浏览

properties - Gdbus 属性设置表单客户端不工作

基于 fatmimin hello world 示例,我在界面中添加了一个属性:

make gen 做它的事情,导致两个函数称为:

我没有在 server.c 中添加任何代码来“连接”到这个属性(就像 Hello World 方法一样,使用 g_signal_connect())

当从客户端调用这些时,只有 get 函数起作用。我无法设置值。

使用 gdbus 工具确实有效:

我已经研究了好几天了,找不到任何属性示例代码或任何其他建议,那么我在这里做错了什么?

提前致谢

0 投票
1 回答
20 浏览

glib - gbdus中除了使用这个方法还有其他方法可以设置接口的属性吗?

gbdus中除了使用org.freedesktop.DBus.Properties之外,还有其他方法可以设置接口的属性吗:</p>

有没有更方便的API?

0 投票
1 回答
24 浏览

bash - 如何在bash中保存从gdbus调用返回的文件描述符?

我正在尝试使用

获取 bash 脚本中的抑制剂锁。此方法的内省如下所示:

在我的调用gdbus完成后,使用systemd-inhibit --list. 我认为这是因为锁被获取,然后在退出时立即释放gdbus

如何pipe_fd从方法调用中复制返回的文件描述符,以便在退出调用后不会立即释放锁?