我正在从串行端口读取信息。我如何等待换行符进来,然后处理数据?也就是说,我如何确保一次分块整行。
此代码不起作用:
void MainWindow::readData()
{
QByteArray data = serial->readAll(); //reads in one character at a time (or maybe more)
console->putData(data);
charBuffer.append(data);
if (data.contains("\n")) //read into a structure until newline received.
{
//call parsedata
sensorValues->parseData(charBuffer); //send the data to be parsed.
//empty out the structure
charBuffer = "";
}
}
假设串口发送“Sensor1 200\n”。
数据可能包含以下内容:“Se”然后是“n”、“sor 2”、“00\n”等等。
如何阻止调用 parseData 直到我有一行文本?
附加信息:
readData 设置为插槽:
connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));