gpt4 book ai didi

c - 从 shell dbus-send 在 C 中调用 dbus

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:13 24 4
gpt4 key购买 nike

我有一个 dbus-send 调用:dbus-send --system --print-reply --dest=org.freedesktop.ModemManager1 "/org/freedesktop/ModemManager1/Modem/0"org.freedesktop.DBus.Properties.Get 字符串:org.freedesktop.ModemManager1.Modem字符串:“信号质量”

我想编写一个简单的 C 代码来完成完全相同的事情,好吧,C 方式。

我找不到足够的信息或任何对我有意义的信息来帮助我弄清楚将其转换为 C 需要什么。

我已尝试调用 g_dbus_proxy,但收效甚微。

我试过:

#define MM_DBUS_SERVICE "org.freedesktop.ModemManager1"
#define MM_DBUS_PATH "/org/freedesktop/ModemManager1/Modem/0"
#define MM_DBUS_GET_PROPERTIES "org.freedesktop.DBus.Properties.Get"

proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
G_DBUS_PROXY_FLAGS_NONE,
NULL,
MM_DBUS_SERVICE,
MM_DBUS_PATH,
MM_DBUS_GET_PROPERTIES,
NULL, NULL);
ret = g_dbus_proxy_call_sync (proxy,
"SignalQuality",
NULL,
G_DBUS_CALL_FLAGS_NONE, -1,
NULL, &error);
if (!ret) {
g_dbus_error_strip_remote_error (error);
g_print ("failed: %s\n", error->message);
g_error_free (error);
return;
}

但它总是因错误而失败失败:在路径/org/freedesktop/ModemManager1/Modem/0 的对象上没有这样的接口(interface)“org.freedesktop.DBus.Properties.Get”

有什么想法可以实现吗?

最佳答案

我认为当您调用 g_dbus_proxy_new_for_bus_sync(..)interface_name 应该是"org.freedesktop.DBus.Properties" ,所以试试

#define MM_DBUS_GET_PROPERTIES  "org.freedesktop.DBus.Properties"
当您调用 g_dbus_proxy_call_sync() 时,

method_name 应该是"org.freedesktop.DBus.Properties.Get" ,所以尝试:

ret = g_dbus_proxy_call_sync (proxy,
"org.freedesktop.DBus.Properties.Get",
g_variant_new ("(ss)",
"org.freedesktop.ModemManager1.Modem",
"SignalQuality"),
G_DBUS_CALL_FLAGS_NONE, -1,
NULL, &error);

关于c - 从 shell dbus-send 在 C 中调用 dbus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com