2016-03-23 17 views
1

Bir dbus-call çağrısı var: dbus-gönder - sistem - print-reply --dest = org.freedesktop.ModemManager1 "/ org/freedesktop/ModemManager1/Modem/0 "org.freedesktop.DBus.Properties.Get dizesi: org.freedesktop.ModemManager1.Modem dizesi:" SignalQuality "Kabuk dbus-gönderen C içinde dbus çağrı

Ve aynı şeyi yapan basit bir C kodu yazmak istiyorum, iyi, C yol.

Beni, ben sınırlı başarı ile g_dbus_proxy aramaları denedi C

bu dönüştürmek gerekir anlamaya yardımcı olmak için bana mantıklı yeterli bilgi, ya da bir şey bulamıyorum.

#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; 
    } 

Ama sürekli başarısız hatası ile başarısız:

denedim Böyle bir arabirim `org.freedesktop.DBus.Properties.Get' yolda nesne üzerinde/org/freedesktop'un/ModemManager1/Modem/0

Bunu nasıl alacağınıza dair herhangi bir fikir var mı?

cevap

1

Sana g_dbus_proxy_new_for_bus_sync(..) çağırdığınızda Arabirim_adı'nı"org.freedesktop.DBus.Properties" olması gerektiğini düşünüyorum, bu yüzden "org.freedesktop olmalıdır

#define MM_DBUS_GET_PROPERTIES "org.freedesktop.DBus.Properties" 

ve METHOD_NAME deneyin. g_dbus_proxy_call_sync()'u çağırdığınızda DBus.Properties.Get ", bu nedenle şu adımları deneyin:

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);