我正在尝试通过QSerialPort(实际上是通过RS232连接)发送大量数据。目前,我可以获得约300个字节的80000个字节。我相信使用Putty,我可以看到所有数据都在传输,所以问题出在接收代码上。
接收方代码:
m_serial->waitForReadyRead(1000);
m_serial->waitForBytesWritten(20);
const QByteArray data = m_serial->readAll();
发射器代码:
QByteArray sendData;
sendData.setRawData((char *)dataBuf, m->bufSize + sizeof(*mHeader) + 1);
m_serial->write(sendData);
如果我发送任意数量的数据(至少是我得到的数据),我将获得有效数据。
将数据分解为单独的传输的唯一解决方案是
编辑:我应该提到我正在使用一个异步实现(来自QTs示例的一个-异步终端程序。不过,它仅发送和接收少量数据)
程序使用以下命令连接到readData()函数:
connect(m_serial, &QSerialPort::readyRead, this, &MainWindow::readData);