首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从shell dbus调用C中的dbus-发送

从shell dbus调用C中的dbus-发送
EN

Stack Overflow用户
提问于 2016-03-23 00:00:54
回答 1查看 956关注 0票数 3

我有一个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电话,但取得了有限的成功。

我试过:

代码语言:javascript
复制
#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‘。

有什么办法让这件事发生吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-23 22:55:38

我认为当你打电话给interface_name时,org.freedesktop.DBus.Properties应该是"org.freedesktop.DBus.Properties“,所以试试

代码语言:javascript
复制
#define MM_DBUS_GET_PROPERTIES  "org.freedesktop.DBus.Properties"

当您调用method_name时,G应该是"org.freedesktop.DBus.Properties.Get“,所以请尝试:

代码语言:javascript
复制
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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36167457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档