Как узнать, когда QSerialPort готов к большему количеству данных в Qt5?
Есть ли какой-нибудь способ получить уведомление, когда мое последовательное устройство готово получить больше данных?
Я реализую программу, которая передает команды сервоконтроллеру по последовательному интерфейсу, используя асинхронный API QSerialPort. Программа работает, но кажется, что я испытываю заторы.
В моем приложении я веду реестр наиболее обновленных позиций сервопривода, которые я хочу синхронизировать с контроллером с минимально возможной задержкой. Моя попытка отправить новые данные в последовательный порт так быстро, как позволяет время, приводит меня к тому, что я считаю накоплением данных, которое полностью нарушает связь.
У меня вопрос, могу ли я получить уведомление, когда последовательный интерфейс готов каким-либо образом получать новые данные при использовании QSerialPort
в асинхронном режиме?
Единственный другой вариант, который я вижу, это использовать синхронный режим и вызывать waitForBytesWritten(), но я действительно не хочу этого делать.
ПРИМЕЧАНИЕ: Я внимательно изучил примеры последовательных портов в документации Qt5, но пример для асинхронной записи не предоставляет нужную мне информацию, поскольку он выполняет однократную передачу перед выходом.
1 ответ
Вы могли бы слушать сигнал bytesWritten
и проверить bytesToWrite
определить, пуст ли буфер записи. Оба наследуются от QIODevice
,