問題タブ [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.

0 投票する
1 に答える
345 参照

c++ - USB デバイスを検出できません

これが私のコードです:

「Dreamcheeky Thunder Missile Launcher」USB おもちゃを接続しましたが、Vendor ID や Product ID、または少なくとも関連するものを取得できません。次の画像を参照してください

ここに画像の説明を入力

しかし、USBDView ソフトウェアを使用すると、すべての詳細を取得できます。次の画像を参照してください

ここに画像の説明を入力

私のコードの問題は何ですか?または、それが単に適切でない場合は?

0 投票する
1 に答える
395 参照

qt - Qt 5.0.2 でポートを開くことができません

Qtでリアルタイムアプリケーションを設計しています。QExtserialport でスタックした設計には、UART 通信を介して信号を感知して送信するハードウェア部分があります。GUIインターフェースを表示するアプリケーションを設計しています。次のコードは Qt でポートを開きません。しかし、ミニコム、キュートコムの表示値です。

ヘッダファイル.h

メインウィンドウ.cpp

メインウィンドウ.cpp

常に「Port ttyS0 CanNot Open」と表示されます

0 投票する
1 に答える
1031 参照

c++ - qextserialport 奇妙な読み取り

私はWindows 7 x64を使用していますが、PCの情報でArduinoで送信するという問題があり、ポートを読み取るときに、Arduino send(0000000) PCの読み取り (0000+000) または同様のもの (00000+00) の奇妙なアーティファクトを受け取ります - ( 0+000000) などです。

例として、スクリーンショットを示します

ここに画像の説明を入力

ここに画像の説明を入力

ポートを開く

データの読み取り

データ送信 arduino for PC

何が問題なのか理解できず、すべてを試しました。QexSerialPort ライブラリの例は、読み取りが多すぎます。助けが必要です。助けてくれてありがとう。

0 投票する
1 に答える
1930 参照

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()一部のバイトが到着したときにのみ呼び出され、プログラムがパケットと「非同期」になり、一部のパケットのみを読み取ることができます(他のパケットはバッファに残ります)。

それにもかかわらず、大量のデータが到着する場合、この「非同期状態」は発生しません。

これが私が作成したスレッドです。この特定の問題に対処するために別のスレッドを作成します。

私を助けてくれたみんな、どうもありがとう!

0 投票する
1 に答える
1381 参照

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 バイトを超えたときに接続されている関数を呼び出そうとしましたが、混乱が生じ、いくつかのパケットが失われ始めました。

0 投票する
1 に答える
1503 参照

qt - Qt: ボーレート 250k をサポートするシリアル ライブラリ

私は両方QSerialPortQExtSerialPort試してみましたが、どちらも 250k を正しくサポートできないようです。QExtSerialPortリストされているボータイプであるため、サポートされているようですが、ボードに接続するために使用するたびに、ボーレートが正しく設定されていないなどのジャンクデータが返されます。他のすべての設定を確認しましたが、miniterm を使用してテストしたところ、ボードは 250k 以上で動作します。他のライブラリはありますか、それとも別のことを試す必要がありますQExtSerialPortか?

0 投票する
2 に答える
381 参照

c++ - Serial Hexa ダイアログ (Python コードから C++/Qt 5.0)

RS232 ポート (シリアル) で指紋と対話する必要があります。私は魅力のように機能するpythonコードを持っています:

しかし、このコードを C++/Qt 用に変換する必要があります。どの関数を使用する必要があるのか​​ 正確にはわかりません。

私はこれを試しました:

可能であれば、QextSerialPort 拡張機能を使用したいと考えています。私は試しましたが、成功しませんでした。どのような変換を行う必要があるかを正確に理解していないと思います。

- 編集 -

私の質問は、シリアルポートを管理するクラスに関するものではありません。申し訳ありませんが、私の質問はあまり明確ではありませんでした。Python のコードと同じコードを再現するための解決策がわかりません: RS232 で hex に文字を送信します。