【发布时间】:2016-07-10 02:40:39
【问题描述】:
我有一个 dbus-send 调用: dbus-send --system --print-reply --dest=org.freedesktop.ModemManager1 "/org/freedesktop/ModemManager1/Modem/0" org.freedesktop.DBus.Properties.Get string: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 的对象上没有这样的接口 `org.freedesktop.DBus.Properties.Get'
有什么想法可以实现吗?
【问题讨论】: