0

私はArduino MEGAからデータを取得するQtプログラムを開発しています.最終的に不要な改行文字を受け取ることに常に直面しています.これは、解析と検証スキームを完全に台無しにします.

//Setting up QSerialPort

void MainWindow::on_abrirPorta_clicked()
{
serial_port->setPortName(ui->nomePorta->text());
if(serial_port->open(QIODevice::ReadWrite))
{
    if(serial_port->setBaudRate(QSerialPort::Baud115200, QSerialPort::AllDirections)
            && serial_port->setParity(QSerialPort::NoParity)
            && serial_port->setDataBits(QSerialPort::Data8)
            && serial_port->setStopBits(QSerialPort::OneStop)
            && serial_port->setFlowControl(QSerialPort::NoFlowControl))
    {
        ui->lerPorta->setEnabled(true);
    }
    else
    {
        serial_port->close();
        ui->saida->append("Failed to open USB port");
    }
}
}

//Reading data

void MainWindow::readData()
{
serial_port->write("a");
if(serial_port->waitForReadyRead(500))
    if(serial_port->canReadLine())
    {
        QByteArray dados = serial_port->readAll();
        ui->saida->append(QString(dados));
    }
}

Arduinoに関しては、以下が毎秒実行されます。

       Serial.print("MV: ");
       Serial.println(MV);
       Serial.print("PV: ");
       Serial.println(PV);
       Serial.print("SV: ");
       Serial.println(SV);

Arduino ターミナル内ではすべて正常に動作しますが、Qt では次のようになります。

 MV: 26.51
 PV: 24.
 91
 SV: 30.00

 MV: 27.04
 PV: 24.91
 SV: 30.00

 MV: 27.57
 PV: 24.9
 0
 SV: 30.00

 MV: 28.11
 PV: 24.89
 SV: 30.00

 MV: 29.18
 PV: 24.88


 SV: 30.00

 MV: 29.72
 PV: 24.87
 SV: 30.00

 MV: 31.86
 PV: 24.85

 SV: 30.00

 MV: 32.40
 PV: 24.84
 SV: 30.0
 0

基本的に、一連の改行文字が各データのさまざまなポイントに挿入されています。ここで何が起こっているのか、誰か知っている人はいますか? 前もって感謝します :)

4

0 に答える 0