問題タブ [qextserialport]
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.
c++ - USB デバイスを検出できません
これが私のコードです:
「Dreamcheeky Thunder Missile Launcher」USB おもちゃを接続しましたが、Vendor ID や Product ID、または少なくとも関連するものを取得できません。次の画像を参照してください
しかし、USBDView ソフトウェアを使用すると、すべての詳細を取得できます。次の画像を参照してください
私のコードの問題は何ですか?または、それが単に適切でない場合は?
qt - Qt 5.0.2 でポートを開くことができません
Qtでリアルタイムアプリケーションを設計しています。QExtserialport でスタックした設計には、UART 通信を介して信号を感知して送信するハードウェア部分があります。GUIインターフェースを表示するアプリケーションを設計しています。次のコードは Qt でポートを開きません。しかし、ミニコム、キュートコムの表示値です。
ヘッダファイル.h
メインウィンドウ.cpp
メインウィンドウ.cpp
常に「Port ttyS0 CanNot Open」と表示されます
c++ - qextserialport 奇妙な読み取り
私はWindows 7 x64を使用していますが、PCの情報でArduinoで送信するという問題があり、ポートを読み取るときに、Arduino send(0000000) PCの読み取り (0000+000) または同様のもの (00000+00) の奇妙なアーティファクトを受け取ります - ( 0+000000) などです。
例として、スクリーンショットを示します
と
ポートを開く
データの読み取り
データ送信 arduino for PC
何が問題なのか理解できず、すべてを試しました。QexSerialPort ライブラリの例は、読み取りが多すぎます。助けが必要です。助けてくれてありがとう。
qt - 遅いデータ入力 (シリアル ポート) があると Qt プログラム (Raspberry Pi 上) の実行が遅くなる
Raspberry Pi で実行され、Pi のシリアル ポートを使用して Arduino と対話するプログラムを開発しています。
私のアーキテクチャは次のとおりです。PiはPanStamp(Arduino +ワイヤレストランシーバー)に接続され、データをワイヤレスで送信するSatellite(いくつかのセンサーを備えたPanStamp)があります。Pi はサテライトをアクティブ化および非アクティブ化できます。衛星は毎秒約 5 回データを送信し、Pi に接続された PanStamp はこのデータを受信し、シリアル ポートを使用して送信します。毎秒、Pi の PanStamp もいくつかのセンサーの読み取り値を送信します。
そのために、Qt フレームワーク、qextserialport (Qt のシグナル/スロットを実装するシリアル ポート ライブラリ) wiriginpi を使用して、GPIO といくつかの TCP および UDP ソケットを制御し、インターネット経由でデータを送信しています。
衛星がデータを送信しているときは、すべてがうまく機能しているようです。
しかし、サテライトをオフにすると、プログラム全体がかなり遅くなります。2秒おきくらいのデータしか出てこない… 通常は1秒おきに受信するはずです(PanStampがタイミングよくデータを送ってくれています、オシロスコープで確認しました)。
データと一緒に送信されたパケット数があり、失われたパケットはありません。つまり、一種のバッファか、データ フローを押さえている何かのように見えます。
最も奇妙なことは、衛星を再びオンにすると (「高速」データ フロー)、すべてがバッファリングされ、ゆっくりと処理されているように、Pi が「データのバースト」を示すことです。バストの大きさも、衛星がオフだった時間に比例しているように見えます。
何が起こっているのか/どうすればテストできるのか、誰かが知っていますか?
いくつかのコード:
シリアル ポートの初期化:
関数 incoming_data() (読み取るデータがあるたびに呼び出されます):
他の関数とデータ構造体は次のとおりです。
多くのテストと調査の後、私は最終的に何が起こっているのかを発見しました:readyRead()
新しいデータがあるたびに信号が発行されますが、ドキュメントには「readyRead()は再帰的に発行されない」incoming_data()
と書かれているため、どちらが接続されているように見えますreadyRead()
一部のバイトが到着したときにのみ呼び出され、プログラムがパケットと「非同期」になり、一部のパケットのみを読み取ることができます(他のパケットはバッファに残ります)。
それにもかかわらず、大量のデータが到着する場合、この「非同期状態」は発生しません。
これが私が作成したスレッドです。この特定の問題に対処するために別のスレッドを作成します。
私を助けてくれたみんな、どうもありがとう!
c++ - QextSerialPort (QIODevice) の readyRead() シグナルが十分な速さで呼び出されていません
Raspberry Pi で qextserialport を使用して、PanStamp (Arduino 互換デバイス) と通信しています。
Pi に接続されたこの PanStamp は、次の 2 つの機能を実行します。
- センサーの読み取り値を毎秒 (約 12 バイト) 送信します。
- ワイヤレス リンクを介して受信したすべてのデータを送信します (約 60 バイトを 1 秒あたり約 6 回)。
私のアーキテクチャは次のとおりです。
- ハブ: PanStamp + ラズベリーパイ;
- サテライト: PanStamp + いくつかのセンサー。
次の 2 つの状況があります。
- データをハブにワイヤレスで送信する衛星。この状況では、Pi はシリアル ポートを介して毎秒大量のデータを受信します。
- サテライトをオフにすると、Pi はシリアル ポート経由で毎秒約 12 バイトを受信します。
サテライトがオフの場合、readyRead()
バイトが到着するたびに信号が生成されるわけではなく、プログラムを「非同期」状態に追い込み、データパケットを読み取るたびに1つ以上がバッファにとどまります(成長し続けます)。
しかし、サテライトの電源を入れて Pi が大量のデータを受信し始めると、この「非同期」状態が消え、データのバーストが発生し (バッファが高速になり、空になった後)、プログラムが動作し始めます。リアルタイム"。
これが私のプログラムの出力の例です: www.tiago.eti.br/storage/iSEDE.log
ログでわかるように、使用可能なバイト数は増加し続け、データは毎秒送信されます ( で始まる行HUB:
は毎秒処理されていません。先頭にタイムスタンプがあります)。しばらくすると、バーストが発生し (衛星がオンになりました)、1 秒ごとに大量のデータが処理されます。衛星のデータの処理が開始され (で始まる行8
)、バッファが空になり、プログラムがデータの処理を開始します。 "リアルタイム"。
では、バッファが大きくなりすぎないようにし、データを失わないようにするにはどうすればよいでしょうか? readyRead()
バッファが 100 バイトを超えたときに接続されている関数を呼び出そうとしましたが、混乱が生じ、いくつかのパケットが失われ始めました。
qt - Qt: ボーレート 250k をサポートするシリアル ライブラリ
私は両方QSerialPort
をQExtSerialPort
試してみましたが、どちらも 250k を正しくサポートできないようです。QExtSerialPort
リストされているボータイプであるため、サポートされているようですが、ボードに接続するために使用するたびに、ボーレートが正しく設定されていないなどのジャンクデータが返されます。他のすべての設定を確認しましたが、miniterm を使用してテストしたところ、ボードは 250k 以上で動作します。他のライブラリはありますか、それとも別のことを試す必要がありますQExtSerialPort
か?
c++ - Serial Hexa ダイアログ (Python コードから C++/Qt 5.0)
RS232 ポート (シリアル) で指紋と対話する必要があります。私は魅力のように機能するpythonコードを持っています:
しかし、このコードを C++/Qt 用に変換する必要があります。どの関数を使用する必要があるのか 正確にはわかりません。
私はこれを試しました:
可能であれば、QextSerialPort 拡張機能を使用したいと考えています。私は試しましたが、成功しませんでした。どのような変換を行う必要があるかを正確に理解していないと思います。
- 編集 -
私の質問は、シリアルポートを管理するクラスに関するものではありません。申し訳ありませんが、私の質問はあまり明確ではありませんでした。Python のコードと同じコードを再現するための解決策がわかりません: RS232 で hex に文字を送信します。