問題タブ [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++ - Qt4 から Qt5 への QtAddon SerialPort
プロジェクトを Qt4 から Qt5 に移行しています。プロジェクト自体の移行が完了し、現在はライブラリに取り組んでいます。これまでのところ、変換してプロジェクトにリンクする際に多くの問題はありませんでしたが、これは未定義の参照をスローしています。
プロジェクトは QtSerialPort を使用し、Qt4 バージョンを使用して完全にコンパイルされ、.pro ファイルで次のようにリンクされました。
Qt5 を使用して、または Qt5 用にシリアル ポート ライブラリをコンパイルし、次のようにリンクしました。
しかし、私はこれらのエラーを受け取り続けます:
「ldが1終了ステータスを返した」ため、リンカーエラーであることはわかっていますが、libQt5SerialPortd.a、libQt5SerialPort.dll、およびlibQt5SerialPortd.dllをリンクしようとしましたが、同じエラーがスローされます
(ちなみに、誰かがlibNAMEdの違いを知っている場合.a と libNAME.a あなたの知識を共有してください)
QtAddOn が別のライブラリにあるのではないでしょうか? そうしないと、QtAddOn を持つ関数だけでなく、他の多くの関数を認識できないためです。
どうもありがとうございました。スタックオーバーフローなしで何をするかわかりません。
編集わかりました、SerialPortInfo 宣言された変数を QSerialPortInfo に変更するように指示するこれを見つけました。プロジェクトでそれを実行しましたが、新しいエラーが発生していますが、どの #include を入れるべきかわかりません:
これらのそれぞれを試してみましたが、すべてエラーが発生します。試してみて、何かが明らかになるかどうかを確認してください
c++ - 別のスレッドで QSerialPort をセットアップする方法は?
公式ドキュメントに従って、私はこれをやろうとしています:
ワーカー コンストラクター:
コンパイル エラーはありませんが、実行すると次のようにスローされます。
serial
つまり、私が作成したスレッドではなく、メインスレッドを親として持っていることを教えてくれます。
コンストラクターでシリアルをインスタンス化せず、呼び出した後にトリガーされるメインプロセスで同じ結果になりますthread->start()
。
私は何が欠けていますか?
送信機能の例 (スロット):
c++ - QSerialPort 信号の受信に関する問題
シリアル ポートをテストする簡単なプログラムを作成しようとしていますが、QSerialPort を動作させるのに問題があります。QSerialPort オブジェクトからシグナルを受信しません。おそらく何か関係があると思われる3つのランタイム警告/エラーが表示されます。
エラーは次のとおりです。
以下のコード スニペットは、エラーを再現するために提供できる最小のサンプルです。信号の接続は表示されませんが、これらのエラーが表示されない理由だと思います。open 関数を呼び出さないと、エラーは発生しません。
テスト システムは Redhat 5.6 です。QT 4.7.4 の静的バージョン。QSerialPort の最新バージョン (現在 GIT から構築されています)。
c++ - Arduino と Qt を接続する
QtからArduinoに「R」文字を送信
し、そのRを待って、ArduinoでLEDを点滅させます。しかし、うまくいきません...
waitFotBytesWritten または ASCI に問題がある可能性があると思います...
NB: どんな信号でも問題ありません。char である必要はありません。
私のQtコード:
私のArduinoコード
Qt出力は次のように述べています:
どんな助けでも感謝します
完全なコードは次のとおりです。
Qt:
アルドゥイーノ:
c++ - QSerialPort readLine() は readAll() に比べて非常に遅い
シリアルポート (Qt では QtSerialPort/QSerialPort を使用) から読み取っているデータは、改行 '\n' で区切られ、'\r' 文字を返します。これは、解析のためにそれを調べる方法です。行の長さは非常に長い場合がありますが、各行の形式からデータを抽出するのは非常に簡単です。
readData() は次のように定義されます。
ただし、このQIODevice::readLine()
関数は非常に遅く、QIODevice::readAll() と比較して全周波数でデータを受信することを明確にブロックしています。
各行を解析するためreadLine()
にループする必要がないように、誰かが関数を適切に使用する方法を説明できますか? 「ターミナル」Qt ウィジェットの例を使用して、この非同期シリアルポート読み取り機能を作成しました。readAll()
QByteArray
事前に感謝します-これは、ここでまだ回答されていない一般的な問題のようです。