2016-08-15 33 views
1

我使用dbus-cxx通過dbus進行方法調用。現在有方法返回多個參數,我不知道如何接收第一個參數旁邊的任何參數。在dbus-cxx中調用方法後收到多個參數

我初始化代理方法:

DBus::MethodProxy<int>& info_proxy = *(object->create_method<int>(ServerName, "Info")); 

並且當我搶的返回值,它只是在這種情況下,三種可能的輸出的第一個值。

描述方法的XML看起來是這樣的:

<method name="Info"> 
    <arg type="i" direction="out" name="rate"/> 
    <arg type="i" direction="out" name="freq"/> 
    <arg type="i" direction="out" name="nch"/> 
</method> 

調用從內QDBusViewer提供輸出Arguments: 1813099, 44100, 2的方法,因此提供三種輸出,但我無法弄清楚如何訪問這些。

編輯:我得到它的工作,通過使用工具DBUS-CXX-xml2cpp我得到了使用DBus::CallMessage而不是DBus::MethodProxy方法定義。得到的答覆包含方法返回的所有參數。

+0

爲什麼不用代碼生成器('dbus-cxx-xml2cpp'工具)從XML生成類?但是如果你親自操作,我希望看到類似這樣的東西:'DBus :: MethodProxy '。 – Velkan

+0

我在構建工具時遇到了一些困難,因此我決定手工完成。 我有像你之前建議的功能,但是當我運行該程序時,我得到'拋出'std :: shared_ptr '的實例後調用terminate,我無法找到問題。 – Dorni

+0

如果很難構建,那麼使用OS自帶的dbus wrapper是很有意義的:它可能是'dbus-C++'(或者找到一個打包的'dbus-cxx')。什麼是構建錯誤? DBu s :: Error'異常中的錯誤是什麼? – Velkan

回答

0

我知道它的工作,通過使用工具dbus-cxx-xml2cpp我有一個方法的定義,使用DBus::CallMessage而不是DBus::MethodProxy。得到的答覆包含方法返回的所有參數。

相關問題