Как включить 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,

Другие вопросы по тегам