问题标签 [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.
c++ - 当使用 gdbus emit 发出信号时,Gio::DBus 的子类不会调用 on_signal()
我正在尝试在 linux 上用 C++ 实现一个简单的 dbus 本地 IPC 示例。现在我想简单地处理一个在总线上发出的信号:
为了处理这个信号,我按照以下示例实现了一个简单的 dbus 应用程序:
这是应用程序源代码:
- 你可以从这里找到/克隆/构建应用程序: https ://github.com/ortymd/wp-mesh
我的主要问题是当 gdbus发出信号时应用程序不会触发on_signal回调:
- 以下是应用程序使用的 dbus 连接的详细信息:
我有点困惑gdbus emit不包含 busname 的参数,但我希望这可以工作,并且我正在尝试找到丢失的部分。
我会很感激任何建议。
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
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.txt和https://git.kernel.org/pub/scm/bluetooth/bluez。 git/tree/doc/adapter-api.txt供参考,以及其他一些关于 SO 的帖子。在https://www.linumiz.com/中也有很多信息。
当前的完整代码可在此处获得:btservice
linux - 如何在linux中将两个bash调用合并为一个
我有 2 个 linux gnome 命令,我想合并为一个。
一个是给我标题:
当另一个给我程序名称时:
现在调用几乎相同,但我无法一次检索两个参数。如何在一个通话中get_meta_window
同时使用?get_title
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 命令先运行?
linux - 如何通过 TCP 在 GDBusServer 上设置 keepalive?
在 Linux 系统的 TCP 套接字上托管GDBusServer时,如何激活套接字本身的 keepalive 机制?似乎没有 API 可以访问服务器后面的原始套接字(或GSocket )的选项。我最终也有兴趣从客户端做同样的事情。
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 描述(GMainLoop,GDBusProxy),但它并没有太大帮助。我也看到了这个问题,但是那里列出的代码不完整,我不确定我应该从那里拿什么,不应该拿什么。
properties - Gdbus 属性设置表单客户端不工作
基于 fatmimin hello world 示例,我在界面中添加了一个属性:
make gen 做它的事情,导致两个函数称为:
我没有在 server.c 中添加任何代码来“连接”到这个属性(就像 Hello World 方法一样,使用 g_signal_connect())
当从客户端调用这些时,只有 get 函数起作用。我无法设置值。
使用 gdbus 工具确实有效:
我已经研究了好几天了,找不到任何属性示例代码或任何其他建议,那么我在这里做错了什么?
提前致谢
glib - gbdus中除了使用这个方法还有其他方法可以设置接口的属性吗?
gbdus中除了使用org.freedesktop.DBus.Properties之外,还有其他方法可以设置接口的属性吗:</p>
有没有更方便的API?
bash - 如何在bash中保存从gdbus调用返回的文件描述符?
我正在尝试使用
获取 bash 脚本中的抑制剂锁。此方法的内省如下所示:
在我的调用gdbus
完成后,使用systemd-inhibit --list
. 我认为这是因为锁被获取,然后在退出时立即释放gdbus
。
如何pipe_fd
从方法调用中复制返回的文件描述符,以便在退出调用后不会立即释放锁?