как readyRead () работает в Qt?
Это мой первый вопрос на этом сайте!
У меня возникли некоторые проблемы при чтении данных с COM-порта, я отправляю полное сообщение с другого COM-порта, и когда я получаю его с помощью Qt, оно всегда разрезается на несколько вложенных сообщений.
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 !";
}
}
отправленные сообщения имеют длину 25 или 27 байт, и если я использую Putty или Hyperterminal для их чтения, у меня нет проблем. Также, если я использую 2 эмулируемых последовательных порта COM для связи, у меня нет этой проблемы ... Это происходит только с системой чтения Qt И с 2 физическими COM портами ...
Я думаю, что я не понимаю, когда сигнал ReadyRead излучается точно ...
Я очень запутался, заранее благодарю за помощь!