我有一个dbus-发送呼叫:dbus-发送--system --打印--应答--dest=org.freedesktop.ModemManager 1“/org/freedesktop/ModemManager1 1/Modem/0”org.freedesktop.DBus.Properties.Get字符串:org.freedesktop.ModemManager1.Modem字符串:“SignalQuality”
我想写一个简单的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 1/Modem/0的对象上没有这样的接口`org.freedesktop.DBus.Properties.Get‘。
有什么办法让这件事发生吗?
发布于 2016-03-23 22:55:38
我认为当你打电话给interface_name时,org.freedesktop.DBus.Properties应该是"org.freedesktop.DBus.Properties“,所以试试
#define MM_DBUS_GET_PROPERTIES "org.freedesktop.DBus.Properties"当您调用method_name时,G应该是"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);https://stackoverflow.com/questions/36167457
复制相似问题