2015-03-05 2 views
1

из кода C на микроконтроллер AVR я пишу текст поверх USART/USB к компьютеру, где я перенаправлять текст в файл сC записи серийный, перенаправлять в файл, прекратить

(stty raw; cat > test.txt) < /dev/ttyUSB0 

командной блоков до тех пор, пока я не закончу его с помощью CTRL + C. Мне нужно, чтобы уметь каким-то образом завершить его из кода C.

Я попытался отправить EOF и EOT и отключить передатчик USART контроллера, но все это не завершит процесс.

Даже отправка некоторой пользовательской последовательности символов из кода, чтобы прервать перенаправление в файл, сделает для меня, но тогда я думаю, мне нужна другая команда, и это было бы неправильным местом, чтобы задать этот вопрос ..?

+0

Отлично! Использование 'stty sane' и отправка EOT (4) завершает процесс - именно то, что я искал. Спасибо, вы должны ответить на этот вопрос! –

ответ

1

При считывании последовательного порта в необработанном режиме символы (и) EOF (и другие) не обрабатываются как специальный управляющий символ (символы). В этом и заключается цель необработанного или неканонического режима: разрешить передачу и передачу всех символов без помех.
Вам нужно будет использовать канонический (текстовый) режим (так, чтобы линейная дисциплина обрабатывала управляющие символы).

Вместо stty raw попробуйте stty sane, что позволяет использовать канонический режим.

Смежные вопросы