Я использую QextSerialPort в Windows, чтобы мое приложение Qt / C ++ могло выполнять чтение и запись с / на последовательный порт.
Я хочу читать байты с последовательного порта, только когда есть байты для чтения.
Сначала я попытался подключить сигнал QextSerialPort::readyRead()
к слоту в моем основном классе, но заметил, что приложение зависает.
Затем я попытался использовать QextSerialPort::read(char *, uint64)
, который возвращает количество прочитанных байтов, и после этого я предпринял еще одну неудачную попытку объединения QextSerialPort::bytesAvailable()
и QextSerialPort::read(char *, uint64)
, чтобы посмотреть, поможет ли это моему приложению не блокировать.
Однако приложение всегда блокируется и должно быть уничтожено, поскольку оно не реагирует на события мыши или клавиатуры. Я утверждаю, что приложение зависает, потому что процедура чтения блокируется.
Есть ли способ выполнить неблокирующее чтение с помощью QextSerialPort?
Если нет, какую библиотеку я должен использовать, чтобы иметь возможность неблокирующего чтения с последовательного порта в Windows?
UPDATE:
Я попытался использовать QextSerialPort::atEnd()
для проверки наличия байтов для чтения вместо QextSerialPort::bytesAvailable()
или QextSerialPort::size()
, и он всегда возвращает false.