我正在开发一个 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
基本上,一堆换行符被插入到每条数据的各个点。有人对这里可能发生的事情有任何想法吗?提前致谢 :)