問題タブ [qtserialport]
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++ - 文字を超えるC ++ QSerialPortの読み取り
私はArduino MEGAからデータを取得するQtプログラムを開発しています.最終的に不要な改行文字を受け取ることに常に直面しています.これは、解析と検証スキームを完全に台無しにします.
Arduinoに関しては、以下が毎秒実行されます。
Arduino ターミナル内ではすべて正常に動作しますが、Qt では次のようになります。
基本的に、一連の改行文字が各データのさまざまなポイントに挿入されています。ここで何が起こっているのか、誰か知っている人はいますか? 前もって感謝します :)
qt - QSerialPort を QML に登録するにはどうすればよいですか?
QSerialPort
の ENUMを使用できるように、QML でインスタンス化できない型として登録したいと思いQSerialPort
ます。
私は私のに登録しようとしQSerialPort
ましたmain.cpp
:
次のエラーが表示されます。
/Users/user/qt/5.4/clang_64/lib/QtQml.framework/Headers/qqml.h:234: エラー: ネストされた名前指定子 QML_GETTYPENAMES ^~~~~~~~~~~~ で名前が付けられた不完全なタイプ 'QSerialPort' ~~~~
ヒントをいただければ幸いです。ありがとう。
linux - Qt と仮想シリアル ポート
シリアルポートのペアを作成するために、これに従いました。それは正常に動作します。
現在、シリアルポート経由でデータを送信する Qt アプリ ( QtSerialPortを使用) を開発しています。本当に必要なのは、そのような仮想シリアルポートリンクです。しかしQSerialPortInfo::availablePorts()
、 /dev/pts/... ポートが見つからないようです。
Linuxでこのようなシリアルポートリンクを作成するには、どのアプローチを試す必要がありますか?
macos - mxe クロス コンパイラ Mac 上の QSerialPort
Mac OS X で qt 5.5.1 を使用しており、Windows 用のアプリケーションを開発したいと考えています。ここまでは順調ですね。.exe ファイルを生成するために、クロス コンパイラM クロス環境 (MXE)をインストールしました。コンパイラは動作しているようですが、mxe が Qt ライブラリのシリアルポートを認識していないという問題があります。qt5.5 を使用しているため、Qt シリアル ポートを手動でビルドする必要がなくなりました。Qt Serial Port は公式には Qt AFAIK の一部です。コマンドで Qt Makefile ジェネレーター ツールを実行すると、次のようになります。
次のエラー メッセージが表示されます。
アプリケーションの *.pro ファイルに、次の行を追加しました。
この時点で誰でも私を助けることができますか?serialport lib を mxe にリンクする必要があると思います。しかし、これを解決する方法がわかりません。
ありがとう!
c++ - 同じ方法でのシリアルポートの書き込みと読み取り
自動化が必要な電気テスト ソフトウェアを開発しています。私は PowerTek の PA4400A を使用しており、RS-232 を使用して彼と通信しています。ボタンを使用してコマンドを送信すると、約 4 秒後に別のボタンでコマンドを読み取ると、答えは完全で正しいものになります。ボタン メソッド内に読み取りおよび書き込みコマンドを配置すると、書き込みと読み取りの間に 10 秒の遅延があっても、応答が得られません。
変数宣言:
ポートの初期化:
ボタンの方法:
cxz は、マシンのコマンドを保持する QByteArray です。ボタン使用時の ans 値: " 00.00E+0 <(END OF DATA)>" 上記のメソッド使用時の ans 値: ""
私はこれが起こった理由とそれに対する可能な解決策を探しているだけです. 手伝ってくれてありがとう。
c++ - socat を使用してオープン QSerialPort に書き込めません
privateSerial
を使用してメンバー関数を介してポートを開くことができるクラスがあります。Serial::openPort()
QSerialPort serial_stream
メソッド送信:
socat 経由で仮想ポートを開きます:
次に、テスト関数で次のことを行います。
だから私が欲しかったのは、クラスでポートを開いてdata
送信できることでした。b はそうで、ポートを開くことができました。しかし、送信したいときは、次の情報を取得します。pts/2
pts/3
QSerialPort
Serial
true
QSerialPort
data
RSR232ケーブルと別のコンピューターでコードをテストしたので、問題はsocatの間違った使用に関係していると思います。
あなたの助けに感謝します。
編集: code_fodder からの最初の (いいえ) 回答の後、私は彼が私にやるように言ったことを行い、私の に for ループを追加しましたinitTestCase()
:
私がコメントしたように、利用可能なポートの数は 0 です (これは正しい方法ではないことが予想されます)。しかし、なぜSerial::instance().openPort("pts/3");
true を返すのでしょうか?
今言ったように、それは socat と関係があるに違いありません...
c++ - QSerialPortがQt5でより多くのデータの準備ができていることを知る方法は?
シリアル デバイスがさらにデータを受信する準備ができたときに通知を受ける方法はありますか?
QSerialPortの非同期API を使用して、シリアル経由でサーボ コントローラーにコマンドを供給するプログラムを実装しています。プログラムは動作しますが、輻輳が発生しているようです。
私のアプリケーションでは、可能な限り低遅延でコントローラーと同期したい最新のサーボ位置のレジストリを保持しています。新しいデータをできるだけ早くシリアル ポートにプッシュしようとすると、データが蓄積して通信が完全に途絶えてしまう可能性があります。
私の質問は、シリアル インターフェイスが非同期モードで使用QSerialPort
しているときに何らかの方法で新しいデータを受信する準備ができたときに通知を受け取ることはできますか?
私が見る唯一の他のオプションは、同期モードを使用してwaitForBytesWritten()を呼び出すことですが、私は本当にそれをしたくありません。
注: Qt5 ドキュメントのシリアル ポートの例を注意深く調べましたが、非同期書き込みの例では、終了する前にワンショット送信を実行するため、必要な情報が得られません。
qt - QSerialPort: データは 2 つのパケットに分割されます
QSerialPort クラスを使用して、Network<->Serial
コンバーター ( Moxa NPort ) を使用してネットワーク経由でハードウェア モジュールからデータを読み取ります。デバイスは正しいデータを送信しますが、受信側はデータ パケット全体を一度に読み取ることができません。たとえば、クライアントは次のように送信します。
受信者は取得します
まずはやってみる
2 回目の読み取り試行時。
ポートは次のように開かれます。
そして、これがプログラムの読み取り方法です。(以下の関数は、500ms 間隔のタイマーによって実行され、単純なポーリング プロトコルを実装しています)