пин отвечающий за разрешение передачи - отдельный. Пин управляется через библиотеку wiringPi.
Я дергаю пин перед записью (high) в serial и после записи (low).
Проблема в том, что данные еще в буфере и не успевают дойти до чипа. После записи в serial, пин становится low сильно раньше и у меня обрезок данных, а не полностью все данные.
Я пробовал flush(), не помогает. Пробовал ловить сигнал bytesWritten и ждать когда наберется нужное кол-во отправленных байт и только потом переключать пин на low, тоже не помогает.
Есть ли в QSerialPort способы, чтобы узнать когда настоящий конец записи в порт?
Я неделю назад писал про это. Пришлось все решить линуксовыми средствами. Сокеты, сериал порт и select. Когда записываю в сериал, жду 5 мсек и делаю пин low. Теперь на разных скоростях порта сообщение не обрезается. Все таки Qt тяжелый для таких операций. С select все быстро выполняется. Правда чтобы использовать select, нужно отказаться от QCoreApplication
Обсуждают сегодня