QSerialPortを使用してシリアルデバイスに書き込むツールを作成しました。私は次のエラーメッセージが表示されるまで、一定の時間のためにそれを実行します:Qt5 - ASSERT: "bytesTransferred == writeChunkBuffer.size()"
ASSERT: "bytesTransferredが== writeChunkBuffer.size()" ファイルに qserialport_win.cpp、ライン511
マイ送信機能
/**
* @brief Send text to device
* @param text
* @return Success/Fail
*/
bool Serial::send(QString text)
{
if (connectionStatus && qsp.isWritable()) {
QByteArray buffer = text.toLatin1();
if (buffer.size() != qsp.write(buffer))
qDebug() << "Send does not work";
qsp.flush();
msleep(15);
return true;
} else {
return false;
}
}
私はそれを正しく理解していれば、私は15msのを待って、その後、それを繰り返して、デバイスへのフラッシュを(20文字程度です)のテキストを記述します。このようになります。なぜこのメッセージが出るのか分かりません。
//編集:
しばらくすると、問題の原因がわかりました。私は言及するのを忘れた、なぜ私は15ミリ秒待つ。それはドキュメントの一部であり、私がデータを送った後に待つ。データを送信することに関連する最大の問題は、別のスレッドでQSerialPortを実行することでした。それを使うことで、私は困っている。私はそれをMainThreadに移し、Qtのシグナルスロットデザインを使用しました。