dlinyj: (Default)
Сегодня Великий День, я впервые написал статью моему хорошему другу [livejournal.com profile] di_halt на сайт http://easyelectronics.ru/



Вы можете прочитать её по следующей ссылке. Выражаю благодарность [livejournal.com profile] xlat за разрешение использовать её фотографию в данной статье. Это Teletype Model 33 ASR. Данное устройство, как нельзя лучше иллюстрирует все проблемы работы с СОМ-портом.

В целом, практически обо всём я так или иначе рассказывал на своих вебинарах, но порой лучше прочитать, чем просмотреть.
dlinyj: (Default)
Перцы, вдруг кому надо будет (а я знаю, что будет надо и не раз), наткнулся на замечательный сниффер СОМ-порта. http://ioninja.com/plugins/serial-monitor.html



Надо чутка подшаманить и не полениться качнуть архив http://ioninja.com/downloads.html
tdevmon . Моём случае системка старая и это будет у нас
tdevmon-3.3.1-a-linux-x86.tar.xz . После чего собрать его и модпробнуть инсмоднуть. Подробности тут: http://ioninja.com/doc/kb/tdevmon_linux_installation.html .

После чего запускаем ioninja (которую тоже предварительно скачали и установили), немного клюкаем мышкой и получаем кайф.



Я просто немного подзадрался мониторить СОМ-порт с другого железа. А если железа нет, а мониторить хочется? Есть готовые решения, ядрёные.

P.S. Под вашими виндами тоже работает, ВНЕЗАПНО!
dlinyj: (Default)
Всё бывает в первый раз. В общем-то программирование СОМ-портов мне казалось в Linux тривиальной задачей, уже была заготовка, которая кочевала со мной из проекта в проект и успешно работала.
Тут понадобилось работать с RS-485 (читай тот же СОМ-порт). Только данные были сырыми, без текста. И столкнулся с тем, что всё работает как-то "странно".

Я спрашивал в разных местах, телеграммовских чатах, и сообществе нашем любимом. Суть была такова, что в какой-то момент всё нахрен высыпалось и переставало работать или вообще не начинало.

Но! Точно как в анекдоте:
Поймали трех индейцев: вождя, просто индейца, и индейца по прозвищу Орлиныи Глаз. Заперли в сарай. Через несколько дней смотрят, а они сбежали. Индейцев опять поймали и спрашивают, как им удалось сбежать. Вождь говорит:
- Сидим мы день, сидим другой, а на третий день Орлиный Глаз заметил, что у сарая одной стены не хватает.


Короче, отлаживаю СОМ-порт программой cutecom и в нём все посылки идут и получаю. И ВНЕЗАПНО заметил, что после запуска cutecom моя программа работает как часы! Это тот "мифический" эффект, когда то работает, то нет. Тэээкс! Значит прога ставит какие-то флаги, которые моя программа не ставит. Тут на помощь пришла удивительная утилита, называемая stty! Решение гениально и простое. Получаем параметры порта ДО запуска cutecom, после инициализации моей программой и после запуска. Смотрим разницу:

stty -a -F /dev/ttyUSB0 > first
cutecom^C
stty -a -F /dev/ttyUSB0 > second
diff first second


К сожалению дифы я уже стёр, да это и не очень принципиально важно. Важно другое, что там есть разные флаги. И я взял мануал по termios и тупо прошерстил все флаги. Как я понял, т.к. я всегда работал с текстовыми данными, всяких спец-символов, которые генерирует у меня сигнал не было. А в хексах они появились и сильно портили мне малину. В результате две строки:
 options.c_iflag |= IGNBRK;
 options.c_lflag &= ~ISIG;


Точно исправили все мои беды.

Я всё это толкую к тому, что если в вашей программе работы с СОМ-портом нихера не работает, а в программе соседа работает, то проверьте stty что там и как. Проблема только в том, что истинные перцы восстанавливают режим работы порта, который был до запуска, но это редко.

А вообще, СОМ-порт в линуксе - это какая-то адовая жесть. Он разве что щи не варит. Проблема в том, что СОМ-порт там нифига не порт, а консоль, и там в результате этого куча всевозможных свистоперделок накручено. Достаточно глянуть программу пример тестирования порта https://github.com/cbrake/linux-serial-test/blob/master/linux-serial-test.c . Треш, угар и содомия. Может быть, когда-нибудь [livejournal.com profile] di_halt получит от меня вменяемую статью, как программировать СОМ-порт в линуксе. С этого и началось моё знакомство с программированием под линукс.
dlinyj: (Default)
Пример, есть некая вычислительная машина (вычислительный модуль), на х86 процессоре (486), и стоит там DOS-подобная операционка. И поскольку это промышленный комп, то видеокарта ему ни к чему (контроллер по сути). Но отлаживать его как-то надо. И существует такая штука, как удалённый доступ по СОМ порту. Шляпа реализована в BIOS. Она конечно своебразно работает, не однозначно, но работает. Однако, если есть видеокарта, то она просто копирует, и преобразует буфер видеокарты в ASCII символы (ESC-последовательности), и выводит на экран (ниже, на видео про пакман будет видно). Но если видеокарты нет, о графике можно забыть. Даже псевдографика (типа цветных символов, или нестандартных кодов) будет резко пресекатся зависанием проца.


Бут компа в консоли :)


Для удалённого доступа, я использовал в Ubuntu свой любимый minicom. Почему убунта на ноуте, а не винда - это не моя любовь к линуксам. Просто в винде надо искать дрова к шнурку USB->COM, а в линухе таких проблем не имеется. По сему работал в ней (какая разница, где работать с СОМ-портом?). Поскольку работать мне пришлось в субботу, то решил себя хоть как-то позабавить, пока никто не видит. Ибо и так бесит работа в выходной день, так хоть что-то для души сделаю. Решил поглядеть, как же будет выглядеть какая-нить ДОСявая гама в таком режиме. Надо оговориться срау, что видеокарта была установленна, и на мониторе я видел то, что было в консоли. Без видеокарты, такие финты невозможны. Даже какой-нить Volkov Commander не пашет, только примитивный ввод/вывод.


Волков Коммандир в консоли


Поскольку досовские игры всегда со мной ;), то найти нужную не составило проблем :). Была мысль принц оф персия посмотреть, но решил ограничиться пакманом. На скриншотах это всё не покажешь, а на фотках видно хреновато. Так что снова вас порадую видео :). Смотрим, и забавимся :)



Конечно, в этой псевдографике играть нереально. Но факт тот, что не смотря ни на что, отображение экрана, хоть и в псевдографике идёт достаточно точно.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 04:49 am
Powered by Dreamwidth Studios