我从串行端口(在 Qt 中,使用 QtSerialPort/QSerialPort)读取的数据由换行符“\n”分隔并返回“\r”字符,这是我打算查看它以进行解析的方式。行长可能很长,但是很容易从每一行的格式中提取数据。
//signal/slot connection on readyRead() is as follows:
connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));
其中 readData() 定义为:
void MainWindow::readData()
{
//As mentioned below, which I will reiterate, I have already tried the addition of
// canReadLine():
if (serial->canReadLine()){
QByteArray data = serial->readLine();
//QByteArray allData = serial->readAll();
parseSerialBytes(data);
//console->putData(data);
//console->putData(alldata);
}
}
但是,与 QIODevice::readAll() 相比,该QIODevice::readLine()
函数非常慢,并且明显阻止了全频接收数据
有人可以解释一下如何正确使用该readLine()
函数,这样我就不必循环readAll()
到QByteArray
解析每一行了吗?我使用“终端”Qt Widgets 示例来创建这个异步串行端口读取功能。
提前致谢 - 这似乎是一个常见问题,我还没有在这里看到答案。