2016-08-15 8 views
1

私はdbus-cxxを使用してdbus経由でメソッド呼び出しを行います。現在、複数の引数を返すメソッドがあり、最初の引数のほかに引数を受け取る方法を理解できませんでした。メソッド呼び出し後に複数の引数を受け取るdbus-cxx

IプロキシメソッドInitialize:

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

およびIは、戻り値を取得するとき、それはこの場合の三つの可能な出力の最初の値のみです。

方法を記述するXMLは次のようになります。QDBusViewer内からメソッドを呼び出す

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

は出力Arguments: 1813099, 44100, 2を提供するので、それは3つの出力を提供しますが、私はこれらにアクセスする方法を見つけ出すことはできません。

EDIT:私はそれが私が代わりにDBus::MethodProxyDBus::CallMessageを使用する方法の定義を得たツールのdbus-CXX-xml2cppを使用することにより、作業ました。結果の返信には、メソッドが返すすべての引数が含まれていました。

+0

なぜコードジェネレータ( 'dbus-cxx-xml2cpp'ツール)を使ってXMLからクラスを生成しないのですか?しかし、あなたが手で行っているなら、私はそれに似たものがあると期待します: 'DBus :: MethodProxy ' – Velkan

+0

私はツールの構築にいくつかの困難を経験したので、手作業で行うことにしました。 私は前に示唆したような機能を持っていましたが、プログラムを実行すると 'std :: shared_ptr 'のインスタンスを投げた後に呼び出されて終了し、問題を見つけることができません。 – Dorni

+0

ビルドが難しい場合は、OSに付属のdbusラッパーを使用することが理にかなっています。おそらく 'dbus-C++'(またはパッケージ化された 'dbus-cxx')です。ビルドエラーとは何ですか? 'DBu :: Error'例外のエラーは何ですか? – Velkan

答えて

0

ツールを使用して、私はそれを稼働させましたdbus-cxx-xml2cppDBus::MethodProxyの代わりにDBus::CallMessageを使用するメソッド定義があります。結果の返信には、メソッドが返すすべての引数が含まれていました。

関連する問題