O QSerialPort pode ler mais de 512 bytes de dados?
Quero usar o QSerialPort para ler dados transmitidos de um dispositivo. O dispositivo transmite um quadro de 4000 bytes de dados de cada vez. Eu tento com o seguinte código simples
QSerialPort *serialPort;
char receivedData[4000];
int numRead = 0;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/* Initialize serial port*/
serialPort = new QSerialPort(this);
QString portName = "COM6";
qint32 baudRate = 460800;
serialPort->setPortName(portName);
serialPort->setBaudRate(baudRate);
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setParity(QSerialPort::NoParity);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setFlowControl(QSerialPort::NoFlowControl);
serialPort->setReadBufferSize(4000);
if (!serialPort->open(QIODevice::ReadOnly)) {
qDebug() << "Cannot open comport";
}
connect(serialPort, SIGNAL(readyRead()), this, SLOT(serialReceived()));
}
void MainWindow::serialReceived()
{
numRead = serialPort->read(receivedData, 4000);
serialPort->flush();
}
O problema é: sempre mostra que apenas 512 bytes de dados são lidos. Como posso ler todo o quadro de dados de 4000 bytes? (quando estou usando o Matlab para ler esse quadro de 4000 bytes, está funcionando bem)