como o readyRead () funciona no Qt?
É a minha primeira pergunta neste site!
Tenho problemas para ler dados de uma porta COM, envio uma mensagem completa de outra porta COM e, quando a recebo com o Qt, ela é sempre cortada em várias sub-mensagens.
void SerialPortReader::init()
{
connect(m_serialPort, SIGNAL(readyRead()), this, SLOT(readData()));
}
void SerialPortReader::readData()
{
// m_serialPort->waitForReadyRead(200);
QByteArray byteArray = m_serialPort->readAll();
qDebug() << byteArray;
if(byteArray.startsWith(SOF) && byteArray.endsWith(EOF_LS)
&& byteArray.size() >= MIN_SIZE_DATA) {
decodeData(byteArray.constData());
} else {
qDebug() << "LIB SWCom : Unvalid trame !";
}
}
as mensagens enviadas têm 25 ou 27 bytes de comprimento; se eu usar o Putty ou um Hyperterminal para lê-las, não tenho problemas. Além disso, se eu usar 2 portas seriais emuladas COM para me comunicar, não tenho esse problema ... Isso ocorre apenas com o sistema de leitura Qt E com 2 portas COM físicas ...
Acho que não entendo quando o sinal readyRead é emitido exatamente ...
Estou muito confuso, Agradecemos antecipadamente a sua ajuda!