問題タブ [qdbus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dbus - 同じオブジェクト パス内の qdbus 複数のインターフェイス
dbus サーバーで QDbus バインディングを使用して、サービスの下の同じオブジェクト パスで複数のインターフェイスを公開する方法を知る必要があります。qdbusxml2cpp を使用してアダプタ クラスを生成します。以下の構造は、質問を明確にすることができます。
可能であれば、サンプルコードを教えてください。
windows - QtService アプリケーションがサービスとして実行されている場合、システム バスに接続できません
Windows用の統合dbusを使用してQtを再コンパイルしました。
さらに、QtService
次のようにシステム バスにサービスとオブジェクトを登録するアプリケーションを実装しました。
パラメーターを指定してサービス アプリケーションを実行している場合-e
(通常のアプリケーションとして実行)、両方とも正常に動作しdbus-monitor
、qdbus --system
登録されたサービスとオブジェクトが表示されます。
ただし、アプリケーションを Windows サービスとして実行している場合、システム バスには何も登録されません。
サービスをデバッグするとエラー メッセージが表示される
D-Bus サーバーに接続されていません
呼び出すときregisterService(...)
とregisterObject(...)
。
環境変数を設定しました:
私のsystem.confファイル:
さらに、com.mycompany.Configuration.conf
system.d フォルダーにファイルがあります。
Windows サービス自体は com.mycompany.Configuration と呼ばれ、ローカル システム アカウントとして実行されます。
さらに、dbus の詳細な出力は、Windows サービスが開始されたときに何かが起こっていることを示しています。
問題が何であるかは本当にわかりません。助けていただければ幸いです。
編集: これには同じ問題があるようです: http://comments.gmane.org/gmane.comp.freedesktop.dbus/14895
c++ - Qt DBus 呼び出しで QDBusMessage から返されたデータを抽出するにはどうすればよいですか?
Qt の QDBus クラス ライブラリを使用して、WPA サプリカントの DBus インターフェイスを呼び出そうとしています。特に、「Get」プロパティ呼び出しを使用して「Interfaces」プロパティ値を取得しようとしています。
「Get」の DBus 仕様 (イントロスペクションによる) は次のとおりです。
十分に単純に思えます。2 つの文字列の入力と出力はバリアントです (これらは DBus 型です)。「Interfaces」プロパティについては、バリアントがオブジェクト パスの配列 (DBus タイプ「ao」) であると予想しています。
QDBusInterface::call()
を返す DBus メソッドを呼び出すために使用していますQDBusMessage
が、これからデータを抽出する方法がわかりません。
QDBusMessage::arguments()
を返しますQList<QVariant>
。オブジェクト パスの配列を見つけようとして、このリストの項目のさまざまな変換を試みましたが、代わりに空の文字列になってしまうようです。
QVariant::type()
それは役立つはずですが、 type を返すように見えるだけで、QDBusMessage
明らかに間違っています。例えば:
プリント:
実際のメッセージ データを抽出するにはどうすればよいですか?
qt - qdbus - 構造体引数で dbus 信号に接続できない
amarok d-bus 信号 StatusChange (参照: https://xmms2.org/wiki/MPRIS#StatusChange ) に接続しようとしています。インターフェイスと構造体は問題ありません。同じインターフェイスで単純な信号 CapsChange(int) に接続でき、GetStatus dbus メソッドでステータスを取得できるため、このマーシャル構造体は問題ありません。
しかし、呼び出すとき:
メッセージを受け取りました:
Object::connect: そのような信号はありません org::freedesktop::MediaPlayer::StatusChange(AmarokStatus)
SIGNAL(StatusChange(struct)) および SIGNAL(StatusChange(QDbusargument)) および他のタイプで試しましたが、同じメッセージです
D-Feet は、StatusChange の定義は、StatusChange(Struct of (Int32, Int32, Int32, Int32)) であり、dbus-monitor と同じであると言っています。信号 TrackChange(構造体の配列) と同じ問題。だから私は間違いなく connect() メソッドで何かをいじっています。
c++ - Qt C++ BlueZ 5 QDbus ライブラリ
BlueZ 5 では、DBus API が大幅に変更されました。以前、これに基づいて BlueZ 4 用の QDbus コントローラー ライブラリが動作していました: https://gitorious.org/qt-bluez-demos/
私はかなりグーグルで調べましたが、BlueZ 4 ライブラリを BlueZ 5 に変換するための既存の開始点が見つかりません。
注: Qt 4.8 を使用していますが、Qt 5.0 にはいくつかの QBluetooth 名前空間があるようですが、BlueZ 5 用にまだ更新されていません。
このライブラリも BlueZ 4 のみです。
誰か既存のコードを教えてもらえますか? ありがとう!
c++ - この「異なるサイズの型からポインターへのキャスト」警告を解決するにはどうすればよいですか?
D-Bus を介して通信する 2 つのプログラムがあります。1 つには 2 つのパラメーター、つまりconst char* data
andを受け取る関数がint size
あり、別のパラメーターには 型の値を返す関数がありますunsigned char
。このように最初のプログラムに関数呼び出しを配置しますが、サイズが異なる [-Wint-to-pointer-cast] の整数からポインターへのキャストへfunction((char*)program2->function().value(), 1)
の警告が表示されます。この警告を解決するにはどうすればよいですか? また、Qt ライブラリを使用しています。
編集:
実際には を受け取る関数で、 Qt によって提供されるコンストラクターの型のサイズと型const char*
を受け入れるint
にデータを追加し、他のプログラムは 0 ~ 255 の範囲の数値を返すことになっているため、. 私がしていることが間違っている場合、望ましい結果を得るための最良の方法は何ですか?QByteArray
const char*
int
unsinged char
また、program2->function を呼び出すと、以下が呼び出されます。
このクラスには、以下を呼び出す value() という関数があります。
注:この質問の主な目的は、プロキシクラス内で定義された関数を呼び出して返された結果への参照を作成する方法を見つけることであり、QByteArray
それを作成に受け入れられるものに変換する方法ではないため、QByteArray
またはQtCore
など。