LINUX.ORG.RU

терминал

 ,


0

1

Всех приветствую.

Встала мне тут задача поработать с выхлопом чуждого мне поделия. И проблема подкралась откуда не ждали. В чем суть. Есть отладочный выхлоп «поделия» такого формата:
acscii STX (0x02) потом 40 строк по 80 символов.
Если это смотреть в minicom то там каша.
Если просто в konsole (cat /dev/ttyUSB1) то же самое. Можно конечно ширину подстроить (80 символов) но начинает он все также произвольно.
Xfse term - чуть лучше. STX видит, и начинает с новой строки, потом по 80 символов режет и в целом все нормуль, но при этом работает скролинг и все это просто плывает снизу вверх. А хочется, чтобы при получении STX очищался экран и сверху вниз отрисовывалось.

Нужен такой эмулятор терминала который сможет «отрисовывать» такие кадры.

Перемещено leave из talks

★★★★★

Просто в пайпе sed-ом заменить 0x02 на ESC-код очистки экрана - не вариант?

Deleted
()
Ответ на: комментарий от Bobby_

я не хочу писать очередной велосипед зная, что такой велосипед уже написан, просто я его название не знаю

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

Если ничего не напутал, вот пример, меняющий символ x на код очистки экрана и возврата каретки в левый верхний угол:

sed 's/x/\x1B[2J\x1B[H/g'

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Не подхватывает выхлоп из порта через cat:

cat /dev/ttyUSB1 | sed 's/^B/\r/'

на выход ничего не попадает, хотя всег лишь пытаюсь STX заменить на перевод строки.

yax123 ★★★★★
() автор топика
Последнее исправление: yax123 (всего исправлений: 1)
Ответ на: комментарий от Deleted

есть правда тонкость, в моем потоке нет символа конец строки, а есть мнение, что sed по ним рубит текст.

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

Видимо, в этом проблема.

Тогда проще всего заюзать скриптовый язык.

Deleted
()
Ответ на: комментарий от yax123

есть правда тонкость, в моем потоке нет символа конец строки, а есть мнение, что sed по ним рубит текст.

Один сивол можно заменить командой 'tr':

tr '\02' '\r'

No
()

> STX (0x02) потом 40 строк по 80 символов.

Скажи своему эмулятору терминала на этом порту, что тебе нужен какой-нибудь dm2500 или NUC, или ещё какой терминал с ho=^B. Или сделай свою запись в termcap на худой конец: co#80:li#40:ho=^B…

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

тогда уж co=^B

С другой стороны, где гарантия, что minicom использует termcap, а не terminfo. Как это однозначно определить?

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

где гарантия, что minicom использует termcap, а не terminfo.

Одно легко преобразуется в другое.

cl=^B

Можно и с очисткой, конечно. Но у тебя же массив 80x40, который просто заместит собой старое содержимое буфера.

baka-kun ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.