синхронную версию для общения с ком портом в другом потоке. На линуксе нормально все работает.
В виндовсе идет запись, но при чтении всегда пусто.
Даже стоит для теста waitForReadyRead(5000) - 5 секунд.
Мониторю с помощью Serial Port Monitor. И вижу как сообщение пишется в ком порт и получаю нужный ответ, но программа ждет до конца 5 секунд и нету данных.
mSerial->write(msg, len);
mSerial->flush();
QByteArray output;
while (mSerial->waitForReadyRead(5000))
{
output += mSerial->readAll();
if(output.size() >= 14)
break;
}
qDebug() << output.size() << " " << output;
какая версия Qt?
5.15.2. Пробовал и mingw и msvc 2015. Оба 64 бит
А если попробовать через eventloop и коннект сигнала? Просто когда я игрался с QTcpSocket (который тоже является наследником QIODevice), в доке было четко сказано что поведение waitForReadyRead() - на виндк может быть рандомным, и советуется его не юзать.
Действительно в доке для сокета есть предупреждение про виндовс. Для QSerialPort не нашел. Но кто знает как оно работает и может быть забыли написать
Вот потому я и предположил. Я сначала хотел написать что помню что сами кутовцы на винде не советуют его юзать, но потом пошел проверил доку и нашел только в сокете, но не в сериалпорте. Тоже думаю что возможно забыли там указать.
активно юзал при своей реализации modbus, в принципе нормально, трабл не было замечено
Обсуждают сегодня