シリアル ポートから受信したデータの読み取り速度に問題があります。QSerialPort クラスを使用しています。私はそれを正しく設定しました(送信機に設定されているものと同じシリアルポートオプションを設定してください)。MainWindow コンストラクターで、生データを読み取るときに、QSerialPort からの信号を MainWindow のメソッド (readData()) に接続しました。次のようになります。
MainWindow()
{
std::shared_ptr<QSerialPort> serial; //don't aks me why shared_prt - it has to be shared_ptr, no other option.
serial = std::shared_ptr<QSerialPort>(new QSeralPort)
connect(serial.get(),SIGNAL( readyRead()),this,SLOT(readData()));
}
void MainWindow::readData()
{
QByteArray data = serial->readLine();
qDebug() << data;
}
データは「s03445\n」のようになります。プログラムはデータを正しく読み取って表示しますが、非常に遅いです (たとえば、"s3445" を出力します)。データは約 20 Hz の周波数で送信されます (400 サンプル - その後 1 秒の一時停止)、私のプログラム データでは、約 3 ~ 4 Hz の周波数で存在します。また、単純なシリアル ポート ターミナル (Hercules) を介して送信機に接続すると、フル スピードでデータを受信できることも注目に値します。その行動の理由は何ですか?私は何を間違っていますか?助言がありますか?