3

シリアル ポートから受信したデータの読み取り速度に問題があります。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) を介して送信機に接続すると、フル スピードでデータを受信できることも注目に値します。その行動の理由は何ですか?私は何を間違っていますか?助言がありますか?

4

0 に答える 0