問題タブ [qtdbus]
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.
qt - QDBusAbstractAdaptor オブジェクトは、実装された dbus インターフェイスをエクスポートしません
Qt とその DBus 機能を備えた BlueZ v5.5 のペアリング エージェントを実装しようとしています。
私は、PairingAgentAdaptor と呼ばれる qdbusxml2cpp ツールによって生成されたアダプター クラスと、アダプター クラスのインスタンス化のパラメーターとして与える実装されたメソッド (PairingAgent) を持つクラスを持っています。
オブジェクトを新しいエージェントとして登録することができ、BlueZ デーモンは私のエージェントが登録されていると言います。携帯電話をコンピューターとペアリングしようとすると、BlueZ デーモンは次のように言います。
何が間違っているのかわかりません。ヒントを教えてください。
敬具マイケル
コード:
main.cpp
pairingagentadaptor.h
c++ - D-Bus でデバイス名を取得するには?
ブルートゥース デバイス (Bluetooth ソケットやスピーカーなど) とやり取りするアプリケーションを Linux で C++ で開発しています。D-Bus コマンドを使用して、ペアリングされたデバイスのリストを取得します。
dbus-send --system --dest=org.bluez --print-reply $BTADAPTER org.bluez.Adapter.ListDevices
戻り値:
これは素晴らしいことですが、MAC だけでなく、デバイスの名前 (「linvor」や「GT-I9300」など) も必要です。
それらの名前を取得する適切な方法を教えてください。
c++ - QtDBUS: DBUS 経由で Enum を送信
私は c++ で qt dbus バインディングを使用しています。
現在、カスタム タイプ (クラス、構造体など) を dbus 経由で送信できますが、列挙型を送信することはできません。
c++ - 別のコンピューター上のセッション DBus に接続する
セッション バスに接続して、Qt DBus テストを実行できます。
しかし、別のコンピューターからこの DBus に接続できますか? 私はこのようなことができることを知っています:
しかし、どうすればポートを取得できますか? 何を試しても、接続がないようです。または、ここで間違ったパスにいるので、セッション バスの代わりに Peer 2 Peer DBus を使用する必要がありますか?
私が見ることができるように、サービス名が正しいとほぼ確信していqdbusviewer
ます。出力を使用する場合dbus-monitor
、私にとってはあまり意味がありません。ポートが表示されないなどです。
別のコンピューターから接続する方法を教えてください。
PS: SSH ( http://gabriel.sourceforge.net/howto.html )経由でトンネリングするための gabriel のようなものがあることを認識しています。これは私がやっていることではなく、「直接的なつながり」を探しています。
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 - 予期しない応答署名: 「oa{sv}」を取得、「(oa{sv})」を予期
C++/QtDBus の使用。次のように記述された関数への DBus 呼び出しからの応答を取得しようとしています。
typedef QPair< QDBusObjectPath, QVariantMap > Transfer;
次のように定義されたタイプを登録しました (qDBusRegisterMetaType) QDBusPendingCallWatcher
:
エラーが発生します:
予期しない応答署名: 取得済み
"oa{sv}"
、予期された"(oa{sv})"
どうしたの?「(oa{sv})」の括弧は何ですか?
qt - 「D-Bus リモートコントロールカーの例」と呼ばれる dbus の例の「car.xml」ファイルはどのように生成されますか?
D-Bus を利用したプログラムを作成しようとしています。私は Qt で提供されている例をほぼ同じように調べました。「D-Bus リモート コントロール カーの例」と呼ばれるそのうちの 1 つに、次の内容の「car.xml」という名前のファイルがあります。
私が間違っていなければ、「qdbuscpp2xml」という名前のツールを使用してこのファイルを生成することになっています。このコマンドを使用してxmlを生成すると:
生成された XML ファイルで次のコンテンツを取得します。
次の行で car.xml とは異なります。
別のファイルを取得するのはなぜですか? サンプルに含まれているファイル (car.xml) は手動で作成されましたか?