Ответ 1
Попробуйте stty onlcr
.
В справочной странице говорится, что он будет переводить новые строки в пары возврата/новой строки каретки на выходе, что, кажется, является тем, что вам нужно.
Я использую экран для чтения текста с последовательной консоли. Проблема заключается в том, что на выходе, по-видимому, есть только новая строка \n, но не возврат каретки \r, поэтому отображение выглядит так:
Line1
Line2
Line3
Интересно, есть ли какой-либо патч, чтобы исправить эту проблему?
Попробуйте stty onlcr
.
В справочной странице говорится, что он будет переводить новые строки в пары возврата/новой строки каретки на выходе, что, кажется, является тем, что вам нужно.
onlcr
предназначен для перевода o utgoing n ew l ines на c arriage r eturns.
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
.