問題タブ [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.
macos - Library-Path から開始されていない場合、Qt DBUS ライブラリをロードできない
多くの問題を経て OS X Mavericks で DBUS が動作するようになった後、最後の問題が 1 つあります。libdbus があるディレクトリにいない場合、アプリはバスと対話できません。
明確にするために、次の単純なプログラム、つまり基本的に Widgets-Template がテストに使用されます。
これを QT Creator から実行すると、次のようになります。
lib-Path (/opt/local/lib/; ポート経由でインストールされた dbus) に移動し、/path/to/project/executable を呼び出すと、次のようになります。
では、すべての場所からアプリを起動できるようにするにはどうすればよいでしょうか?
c++ - シェルからqtアプリにdbusメッセージを送信する
シェル/コンソールから qt アプリケーションに dbus-send を実行したいと考えています。
これは単純な QT アプリのコードです
ターミナルから、私はこのコマンドを送信します
次のエラーが表示されます: インターフェイス "com.mydomain.mcp" にシグネチャ "s" を持つメソッド "usb" が存在しません
私は何を間違っていますか?
ありがとう
c++ - Qt DBus プロパティをマップに変換
DBus インターフェイスのプロパティを取得する必要があるので、取得しましたinterface.property(name)
。それは QVariant を返しますが、QVariant が返すことができるマップは のみですがQMap<QString, QVariant>
、私は が必要QMap<QString, QDBusVariant>
です。私は何をすべきか?
c++ - DBUS には同期が必要ですか?
DBUS 呼び出しがどのように同期または安全に行われるかについて疑問がありますか? これはより概念的な質問です。SOCKET ではこのような状況が発生しないことはわかっています。プロデューサがタスク (ソケット/パイプの recvfrm と sendfrm()) を終了しない限り、コンシューマはブロックされます。基本的に、プロデューサーとコンシューマーのジョブは、ソケットの両側でそれぞれ明確に定義されています。
これがシナリオです。実際、私は自分のプロジェクトで QT-DBUS を使用しています。ただし、これは QT DBUS に固有のものではないと思います。この質問は、どの DBUS にも当てはまります。
クラスの「GetTemperatureValue()」という関数があります。このクラスは、そのサービスを DBUS - "GetTemperatureValue()" に登録します。また、「GetTemperatureValue()」は DBUS クライアントから呼び出すことができます。ここで、「GetTemperatureValue()」によって返される値が定期的に変更されている場合。タイマーが非常に頻繁に温度値を変更しているとしましょう。クライアントが DBUS 呼び出しを介して "GetTemperatureValue()" という呼び出しを呼び出すと、ガベージ値が取得されません。保護がないため、返される温度値が壊れている可能性があります。ここで保護する必要はありますか?保護が必要な場合、どのように保護できますか?
これもqt-dbusの例です - http://www.tune2wizard.com/linux-qt-signals-and-slots-qt-d-bus/
c++ - dbus セッション接続: dbus 信号を qt スロットに接続するにはどうすればよいですか?
したがって、私の人生では、オブジェクトをセッションバスに接続することはできません。そこで、「my_obj」の「wakeup」を dBus 信号「profileChanged」に接続しようとしています。しかし、(qbusviewer を介して) このシグナルが発信されていることは確かですが、「ウェイクアップ」は実行されません。ここに私のコードのスニペットがあります:
qDBus は、「profileChanged」の形式が「void (QString)」であることを示しており、エラーも警告も表示されません。その特定の信号の qdbus 出力は次のとおりです。
だから、これはうまくいくと思います。いくつかのドキュメントの奥深くに埋もれている細かい詳細が欠けていると確信しています。私がどこで間違っているのか誰にもわかりますか?
c++ - カスタム タイプの DBus プロパティを取得しようとすると致命的なエラーが発生する
UDisks2を Qt アプリケーションと接続しようとしていますが、カスタム プロパティを読み取るとプログラムがクラッシュします。
SMART 属性の場合、すべて問題ありません (カスタム プロパティを含む) が、RAID デバイス プロパティActiveDevicesを読み取ろうとすると、Qt の致命的なエラーが発生し、アプリがクラッシュします。
以下は、動作を説明するテスト プログラムです。
このコードを実行すると、次の出力が生成されます
そのようなケースに遭遇した人はいますか?カスタムタイプが宣言されていない場合(メイン関数のコンテンツのみを保持)、結果は同じであるため、コードに関連しているとはまったく思いません。
c++ - net.connman.Manager の GetService メソッドから D-Bus 引数とオブジェクト パスを動的に抽出します。
DBus と、組み込みデバイス用のワイヤレス マネージャーである connman を利用するアプリケーションを開発する予定です。私の理解では、DBus はプログラムで使用されるメソッドを公開し、開発者がこれらのメソッドを独自のプログラムで使用できるようにします。
Qt に QtDbus モジュールがあることは知っています。私の理解が正しければ、net.connman.Manager インターフェイスの下の GetServices メソッドは、利用可能なワイヤレス ネットワークを示します。qdbusviewer プログラムからの GetServices メソッドの出力を調べると、各ワイヤレス ネットワークに固有のオブジェクト パスがあることがわかります。
net.connman.Services インターフェイスで Connect および Disconnect メソッドを使用するには、Connect/Disconnect を呼び出すことができる新しいインターフェイスを作成できるように、オブジェクト パスが必要です。Qt DBus呼び出しで QDBusMessage から返されたデータを抽出するにはどうすればよいですか? 、しかし、オブジェクトパスを返そうとすると空白になるだけです:
オブジェクトパスを取得するための私のコードは次のとおりです。
GetService メソッドによって返される引数とオブジェクト パスを抽出するにはどうすればよいですか? 誰かがこれを正しく行いましたか? 私はQtとプログラミングが初めてなので、助けていただければ幸いです。
ありがとう
qt - Windows 7 の Qt5.4.1 で QtDbus が機能しない
Qt Creator dbus サンプルを実行すると、実行できませんでした。QtDbus モジュールまたは前提条件を動作させるための設定や機能はありますか?
たとえば、chat
プロジェクトで:
戻り1
、プログラムは終了しました。
c++ - posixスレッドでqt dbusバインディングを使用するには?
私はライブラリを動的にロードし、posix スレッドで実行を開始するアプリケーション用のライブラリを作成しています。アプリケーションの開発者に QThreads を使用するように依頼しましたが、何も変更できないとのことでした。
私のライブラリで Qt Dbus バインディングを使用したいのですが、QThread コンテキストで実行されていないため、うまく機能しません。私は2つのことに気づきました:
- 非同期呼び出しへの応答がありません ( QDBusPendingCallWatcher のドキュメントで説明されているように)。同期 (ブロッキング) 呼び出しは正常に機能しています。
dbus インターフェイスの作成時に次のメッセージが表示されます。
QSocketNotifier: QThread で開始されたスレッドで
のみ使用できます QSocketNotifier: QThread で開始されたスレッドでのみ使用できます
私が見つけたすべての情報は、それを機能させるために QThread を作成する必要があり、posix スレッドを使用しないと言っていましたが、私には選択の余地がありません。
QSocketNotifier を非 QThread コンテキストから機能させることは可能ですか? はいの場合、どのように?
PSソースからqtライブラリをコンパイルでき、好きなことを何でもできます。したがって、パッチを当てても問題ありません。
カスタム イベント ディスパッチャのインストールを有効にする qt 4.8 用のこのパッチを見つけました。しかし、それが何かを壊すかどうか、そしてスレッドセーフかどうかはわかりません。少し遊んで、動作するかどうかを確認します。