0

我正在开发一个 Qt 程序来从 Arduino MEGA 获取数据,并且我不断面临接收最终不需要的换行符的问题,这完全搞砸了解析和验证方案。

//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