从 QSerialPort 读取所有输入

Read all input from QSerialPort

我正在接收这种形状的数据:

Q1\n
9.70E-6\n
OK>

通过 QSerialPort 从外部设备,但使用我的阅读程序

QString request = "Hello";
qDebug() << "TransAction started!";
QByteArray requestData = request.toLocal8Bit();
qDebug() << "Writing data: " << requestData;
serial->write(requestData);
qDebug() << "Data written";
if(serial->waitForBytesWritten(waitTimeout))
{
     if(serial->waitForReadyRead(waitTimeout))
                {
                    qDebug() << "Waiting for data!";
                    QByteArray responseData = serial->readAll();
                    while(serial->waitForReadyRead(100))
                        responseData += serial->readAll();
                    responseData.replace('\n', ' ');
                    QString response(responseData);
                    QByteArray response_arr = response.toLocal8Bit();
                    qDebug() << "Response is: " << response_arr.toHex();
                    emit this->response(response);
                }
                else
                {
                    qDebug() << "Wait read response timeout";
                    emit this->timeout(tr("Wait read response timeout %1").arg(QTime::currentTime().toString()));
                }
            }
            else
            {
                qDebug() << "Wait write request timeout!";
                emit this->timeout(tr("Wait write request timeout %1").arg(QTime::currentTime().toString()));
            }

我只得到

Q1

作为回应。如何修改我的代码以便能够读取所有输入数据?
更新:
使用此处描述的串行端口脚本对其进行测试时:,一切正常。显然问题是 qt 版本在第一个换行符后停止读取。如果我添加

也会出现此问题
char buffer[1000];
                    for(int i = 0; i < 1000; i++)
                    {
                        int tmp = serial->read(buffer, 1000);
                        if(tmp > 0)
                            qDebug() << buffer;
                    }

直接在行

之后
qDebug() << "Waiting for data!";

然后我仍然只得到第一行(没有\n)。更改时间不会更改接收到的数据。

这个问题(部分)描述了我的问题的答案:。我的问题(为什么我没有收到任何进一步的数据)是我没有在输入行之后发送 \x00D,因此设备只是回应我的输入,然后等待 Enter。输入和第一行一模一样后,我误以为只是得到第一行,没有别的。