Как узнать, когда QSerialPort готов к большему количеству данных в Qt5?

Есть ли какой-нибудь способ получить уведомление, когда мое последовательное устройство готово получить больше данных?

Я реализую программу, которая передает команды сервоконтроллеру по последовательному интерфейсу, используя асинхронный API QSerialPort. Программа работает, но кажется, что я испытываю заторы.

В моем приложении я веду реестр наиболее обновленных позиций сервопривода, которые я хочу синхронизировать с контроллером с минимально возможной задержкой. Моя попытка отправить новые данные в последовательный порт так быстро, как позволяет время, приводит меня к тому, что я считаю накоплением данных, которое полностью нарушает связь.

У меня вопрос, могу ли я получить уведомление, когда последовательный интерфейс готов каким-либо образом получать новые данные при использовании QSerialPort в асинхронном режиме?

Единственный другой вариант, который я вижу, это использовать синхронный режим и вызывать waitForBytesWritten(), но я действительно не хочу этого делать.

ПРИМЕЧАНИЕ: Я внимательно изучил примеры последовательных портов в документации Qt5, но пример для асинхронной записи не предоставляет нужную мне информацию, поскольку он выполняет однократную передачу перед выходом.

1 ответ

Решение

Вы могли бы слушать сигнал bytesWritten и проверить bytesToWrite определить, пуст ли буфер записи. Оба наследуются от QIODevice,

Другие вопросы по тегам