Блокировка операции записи ввода/вывода на последовательном порту UART в Linux

Я пытаюсь связаться с устройством по полудуплексной последовательной линии RS-485. Когда я отправляю команду на устройство, оно обрабатывает команду и отвечает сразу после обработки. Проблема в том, что я должен перевести свой чип RS-485 в режим приема сразу после отправки команды, чтобы получить ответ устройства. Но поскольку моя функция записи UART является неблокирующей операцией ввода-вывода, я не могу знать, когда перевести мою микросхему RS-485 в режим приема.

Как я могу выполнить операцию блокирующей записи в UART, чтобы функция не вышла, пока все байты не будут отправлены по последовательной линии?


person ibrahim    schedule 08.12.2012    source источник


Ответы (1)


Какая у вас аппаратная платформа? Я решил эту проблему раньше (atmel AT91SAM9260), настроив оборудование для автоматической установки сигнала RTS. Это ваш лучший выбор, если вы не модифицируете последовательные драйверы в ядре (а иногда даже не делаете этого, вы можете это сделать)

person Inaki Zuloaga    schedule 14.02.2013
comment
Моя аппаратная платформа — i.MX53. На самом деле я пытался использовать сигнал RTS для этой цели, но почему-то мне это не удалось. Похоже, RTS все равно, передаю я что-то или нет. Возможно, потому что я не мог правильно настроить uart. - person ibrahim; 09.03.2013