问题标签 [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.
gdbus - GDbus 信号示例程序
我是 GDbus 编程的新手。我需要使用 Dbus Glib 实现一个简单的 Dbus 发送-接收消息(信号)。我试图用谷歌搜索一些示例程序,但找不到。
任何人都可以发布任何此类示例程序或指向我一些示例程序教程吗?
提前致谢...
谢谢, 某人
c++ - 使用 gdbus-codegen 骨架时如何验证 D-Bus 属性
我正在使用gdbus
和创建 D-Bus 服务gdbus-codegen
。
内省是这样的:
我是这样执行gdbus-codegen
的:
我的 main.cpp 看起来像这样:
这可以按预期工作,我可以使用以下方法设置和获取属性:
和
问题:
我想同步验证属性的设置,如果失败能够返回错误。如何使用gdbus-codegen
- 生成的代码来实现这一点?
PS:
代码泄漏并且通常没有准备好生产。我现在很好:-)
编辑
经过继续研究,似乎 D-Bus 属性正在使用底层GObject
属性功能。当所有这些都由 -code 设置时,是否可以安装自定义验证器gdbus-codegen
?
c++ - 带有 D-Bus BlueZ 的基本 BLE 客户端
我正在使用(每个人最喜欢的)BlueZ 5.40 编译并运行具有实验性功能,我需要扫描 LE 设备,配对并连接到一个并通过 D-Bus API 读/写特征。我研究了 hcitool、gatttool 和 bluetootctl 的来源,并使用 GDBus 做了一个基本的应用程序。但是,它有几个问题。
- 扫描不添加 /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX obj。org.bluez 总线的路径(使用 d-feet 检查)。考虑到它不是基于 D-Bus 的,这并不奇怪,但是当我使用 StartDiscovery 时,它根本没有检测到我的设备。bluetoothctl 也没有。
之后,我使用 gatttool 和 simple-agent 作为解决方法来创建对象路径,然后使用我的程序进行连接,但我遇到了另一个问题:
- 当我尝试读取特征时,我收到“连接已关闭 (18)”错误。我怀疑这与蓝牙设备之间的连接无关,它谈论的是 D-Bus 本身,因为当我尝试使用 SetDiscoveryFilter 仅为 LE 设备设置扫描过滤器时,我收到相同的错误。
每当我只使用 Connect 和 Disconnect 功能时,一切似乎都工作正常,但用于此类应用程序的用途......有限。所以我的问题是:
如何使用 GDBus 扫描 LE 设备?如果这不可能,如何手动添加设备或说服蓝牙为我做呢?
如何正确读取特征?
即使在缩短之后代码也相当长,所以我把它放在pastebin上:
http://pastebin.com/YNLMF0qC。
编译g++ -std=c++11 $(pkg-config --cflags glib-2.0 gobject-2.0 gio-2.0) ./main.cpp $(pkg-config --libs glib-2.0 gobject-2.0 gio-2.0 bluez)
dbus - 如何为 bluez 5.35 在 gdbus 对象 (/org/bluez/hci1) 上添加接口?
我正在使用 bluez5.35 进行应用程序开发,在调试时遇到 /org/bluez/hci1 仅提供 8 个接口。(org.bluez.Adapter1、CyclingSpeedManager1、HeartRateManager1、Media1、NetworkServer1、ThermometerManager1、DBus.Introspectable、DBus。特性)。
我想使用更多与现有设置无关的接口(例如 org.bluez.Network1)。下面是我设置的快照(附快照)。
请告诉我,我怎样才能添加 org.bluez.Network1 与 /org/bluez/hci 接口?有没有我需要更改的配置文件?或任何其他方式来实现这一目标?
dbus - 每个 dbus API 上的替代 GDBus API 是什么?
例如,我使用了 g_dbus_connection_setup_with_g_main函数。但是在这里我可以发现这个功能已被弃用。但是没有哪个功能可以替代该功能的信息。我在哪里可以找到这些信息?
python - 如何将 Windows 7 Pro 上的套接字传输 unix:// 替换为基于 python 的 dbus 系统?
我尝试使用这个库在 Windows 上实现 DBus:https ://github.com/LEW21/pydbus :
我收到错误:地址 unix:oath=/var/run/dbus/system_bus_socket 的未知或不支持的传输方法 unix://
如果有人知道适用于 Windows 的直接开箱即用的 dbus 系统,我会很高兴 :)
我正在为windows重写一个基于linux的软件的端口,该软件在后台使用DBus。
arrays - 如何通过 gdbus 发送二维数组?
我正在尝试通过 dbus 发送一个二维字符串数组。(我使用的是 gdbus api,带有 gdbus-codegen)。
我已经定义了 dbus 接口如下。
我正在尝试以下列方式创建 GVariant:
其中 pack_string_array 将一个 c 样式字符串数组打包到一个 gvariant 中。
但是,当我测试它时,程序崩溃并出现以下错误:
如何通过 dbus 发送字符串数组?
c - 使用 gdbus 查找 D-Bus 唯一地址
我试图找出使用 Linux 上的 GDBus 库获取 D-Bus 系统总线中对象的唯一 D-Bus 地址的最佳方法。
以下是我正在使用的库的版本号:
基本上,我想知道/org/bluez/hci0
使用 gdbus 库位于系统总线上的对象的唯一名称/地址。有没有人有我将如何使用 C 库做到这一点的例子?
现在我可以使用命令
弄清楚我需要的地址是:1.22
. 我几乎可以肯定有更好的方法来查找地址然后解析该命令的文本输出。
谢谢!
glib - 获取已拥有的总线名称的 GDBusConnection
我想为已经拥有的总线名称注册一个对象。下面是我如何在新总线上注册对象,但own_name
如果总线已经存在则失败。我可以通过其他方式检索 DBusConnection 对象以便调用register_object
吗?