Есть ли способ получить уведомление, когда мое последовательное устройство готово получить больше данных?Как узнать, когда QSerialPort готов для получения дополнительных данных в Qt5?
Я реализует программу, которая подает команды на контроллер сервомотора через последовательное использование асинхронный API из QSerialPort. Программа работает, но кажется, что я испытываю перегруженность.
В моем приложении я сохраняю реестр наиболее обновленной серво позиции, которую я хочу синхронизировать с контроллером с минимальной задержкой, насколько это возможно. Моя попытка нажимать новые данные на последовательный порт так же быстро, как время позволяет мне привести к тому, что, по моему мнению, является наращиванием данных, что полностью обрывает связь.
Мой вопрос: могу ли я получать уведомление, когда последовательный интерфейс готов принимать новые данные каким-то образом при использовании QSerialPort
в asynchronous режим?
Единственный другой вариант, который я вижу, заключается в использовании синхронного режима и звоните waitForBytesWritten() Но я действительно не хочу этого делать.
ПРИМЕЧАНИЕ: Я внимательно изучил serial port examples in the Qt5 documentation, но example for asynchronous write не предоставляет необходимую мне информацию, поскольку он выполняет одноразовую передачу перед выходом из системы.
Вы имеете в виду проверку bytesToWrite из обработчиков bytesWritten? –
Да. Обработчик bytesWritten можно вызывать несколько раз, но только когда значение bytesToWrite достигает нуля, буфер записи будет пустым. –
Я сделал свой счетчик, не зная о bytesWritten(), но это не сработало. просто заменив мою переменную этим вызовом, и все денди. –