У меня есть микроконтроллерное устройство, которое отправляет строки, завершающиеся символом новой строки, через последовательный порт, подключенный через USB, и (пока) я использую minicom
версию 2.6 для чтения из /dev/ttyACM0
. Я настроил терминальное приложение на перенос строк, но мне бы хотелось, чтобы оно переходило к началу следующей строки при получении символа перевода строки с моего последовательного устройства. Можно ли [и как] minicom
это сделать?
РЕДАКТИРОВАТЬ: Я также пробовал известные мне способы, такие как stty /dev/ttyACM0 ...,inlcr
и screen /dev/ttyACM0 ...,inlcr
, которые, как я знаю, имеют опции для перевода входящего перевода строки в возврат каретки+перевод строки (CR+LF), и ни один из них не работает. Я пробовал и другие варианты (например ocrnl
, , на случай, если моя логика была неверной, nl
и -nl
), ни один не работает, и я не знаю почему.
Ах да, у меня Manjaro 16.06-rc1.
решение1
Мне потребовалось много времени, но вот я наконец-то здесь! Мне пришлось скачать исходный код minicom, чтобы понять, что делать, чтобы избежать суеты с постоянным нажатием Ctrl+ Z, U... Вот он.
minicom
сохраняет свои параметры в файле конфигурации, который по умолчанию $HOME/.minirc.dfl
. Вставьте следующую строку,буквально:
pu addcarreturn Yes
и теперь minicom
добавляет возврат каретки ко всем входящим строкам. Понятия не имею, почему он изначально не сохранил эту опцию вместе с файлом конфигурации, но, черт возьми, теперь мне все равно!
Помните, что каждый последующий вариант pu
должен быть выполненровно 16символы, дополненные пробелами справа.
решение2
ОТВЕЧАТЬ:
Вминикомнажмите Ctrl+A Z
. Это покажет меню. Затем нажмите U
("Добавить возврат каретки") иминикомавтоматически добавит CR
символ к каждому LF
символу.
Возможно, вам захочется сделать это еще раз, чтобы отключить эту функцию.
ОБХОДНОЙ РЕШЕНИЕ:
Попробуйте отправить строки, заканчивающиеся на "\r\n"
с микроконтроллера.
\r
означает, чтоВозврат каретки(код ASCII 13 или 0xd)
\n
означаетПеревод строкиилиНовая линия(код ASCII 10 или 0xa)