Как включить CR/LF на экране GNU?
Я использую экран, чтобы прочитать текст с последовательной консоли. Проблема в том, что в выводе есть только символ новой строки \n, но нет возврата каретки \r, поэтому отображение выглядит следующим образом...
Line1
Line2
Line3
Интересно, есть ли патч для исправления этой проблемы?
4 ответа
Пытаться stty onlcr
,
Страница man говорит, что она переведет перевод строки в пары возврата каретки / перевода строки при выводе, что, кажется, то, что вам нужно.
onlcr
предназначен для перевода новых доходов в возвраты.
stty -F /dev/ttyS0 inlcr
будет переводить поступающие новые строки на возврат каретки. Вы можете запустить это с другого терминала после запуска экрана, чтобы избежать сброса, который экран может сделать при запуске. К сожалению, однако, это только изменит проблему. Затем вы получите только возвраты и никаких новых строк.
Что нужно, так это возможность добавить возврат к новой строке, чтобы терминал получал \n\r
, это то, что последовательное устройство должно иметь выход в первую очередь. Кажется, есть onlret
возможность сделать это для исходящих данных, но нет inlret
вариант, как нам кажется, понадобится в этом случае.
У меня точно такая же проблема (хотя я использую picocom), и я несколько дней гуглял, пытаясь найти стандартное исправление, но, похоже, ни у кого его нет. Есть ряд последовательных устройств, которые только выводят \n
и просто не может быть выведен \r\n
и я отказываюсь верить, что все они принадлежат только двум пользователям Linux. Что дает!?
Если вы используете программу miniterm.py, которая поставляется с pyserial, она будет интерпретировать переводы строк как crlf. Это не самый полнофункциональный эмулятор терминала, но для взаимодействия с простыми последовательными устройствами он выполняет свою работу.
Синтаксис использования (в OSX):
miniterm.py /dev/tty.usbserial-XXXXXX 115200
Замените XXXXXX на любое устройство, которое будет установлено в вашей системе.
В моем случае сработало: stty -F /dev/ttyACM0 -icrnl
Потому что сериал был неявно настроен на перевод CR в NL. Эта команда вернула его обратно. Обратите внимание на минус, предшествующий символу icrnl
,