Как прослушать com порт linux

как прослушать что проходит через COM порт?

Есть небольшая виндовая и коммерческая прога, работающая с несложным девайсом через COM-порт (типа омметра). Есть желание написать свой аналог, но протокол неизвестен. Винда запущена в ВМВаре. Подскажите как это можно сделать. Как прослушать, что проходит через порт? Если возможно накидайте ссылок, где о таком можно почитать, примеры и пр.

Re: как прослушать что проходит через COM порт?

Надо сделать кабель rs232 устройство
и два ответвления rx -> tx
и tx -> tx
то есть получиться нормальный провод к устройству и еще два провода к rs232 их втыкаешь в другой комп или в другие порты и на них смотришь что уходит и приходит
программа для мониторинга очень простая если надо пришлю

Re: как прослушать что проходит через COM порт?

и к этому всему, несложную схемку и динамик.. можно будет прослушивать всей семьёй и даже с соседями 🙂

для параллельного порта, можно вспомнить про Covox 🙂

Re: как прослушать что проходит через COM порт?

Re: как прослушать что проходит через COM порт?

>http://www.sysinternals.com/Utilities/Portmon.html похоже, поможет. А как это делается в линуксе? С проводами, конечно, можно, но хотелось бы программно.

Всем спасибо за советы, а MKuznetsov за здоровое чувство юмора. 😉

Re: как прослушать что проходит через COM порт?

Если седишь в VMWare то сделай вывод порта в фаил. А потом смотри что там получилось. Можешь также прослушать порт соединения с помощью другой линукс машины. Вопрос. Вы собираетесь писать аналог программы на под LINUX? Если да, то есть кое какие наработки, могу дать. У себя на заводе я заменял старую досовскую программу на pascal-е, работавшую с com портом. Сейчас стоит LINUX и запущен небольшой демон, который постоянно каждые 15 сек считывает данные с /dev/ttyS0 (com1), обрабатывает их и и делает INSERT этих данных тутже на сервер баз данных Firebird 1.5.

Re: как прослушать что проходит через COM порт?

аналог собираюсь писать под линукс.

вышли на alexmi [ dog] krm [dot] net [dot] ua

Буду очень благодарен.

>VMWare то сделай вывод порта в фаил

там двухсторонний обмен данными — похоже так не получится.

Вообще очень интересует вопрос — как пишут аналоги закрытых прог для работы с мобильниками. У меня samsung и софт только под винду.

разве нету чтото вроде tcpdump?

Re: как прослушать что проходит через COM порт?

> очень интересует вопрос — как пишут аналоги закрытых прог для работы с мобильниками. У меня samsung и софт только под винду.

Источник

Работа с COM-портом (RS-232) в Linux

Урок посвящен интерфейсу RS-232, который в простонародье называют COM-порт. Мы разберемся как он представлен в Linux, какой у него интерфейс, научимся его конфигурировать, а также узнаем, что написание программы для коммуникации через COM-порт в Linux не представляет сложности.

Читайте также:  How to install yarn windows

Разговор o коммуникации через COM-порт в Linux следует начать с того, что заметить, что каждому COM-порту в операционной системе соответствует файл устройства телетайп или tty. Он находится в каталоге dev и имеет имя /dev/ttyS и номер. Если посмотреть на мой каталог, то мы увидим следующее, что у меня таких файлов очень много [0:55]. Но по факту, в моем компьютере есть один физический COM-порт. Давайте попробуем его найти. Сделать это можно с помощью команды dmesg, которая выводит сообщения с момента инициализации системы. Если набрать

$dmeg | grep «ttyS»

то мы увидим, что, в действительности , у меня только один файл ttyS4 связанный с конкретным COM-портом, у которого есть некоторый диапазон ввода/вывода, номер прерывания, и который сейчас настроен на скорость обмена 150200 бит в секунду (или бод).

Для того, чтобы сконфигурировать мой COM-порт по умолчанию в Linux можно воспользоваться программой mincom, запускать её нужно от суперпользователя, либо добавить текущего пользователя в группу dialout. Запустим

$sudo minicom -s

Ключ -s – обозначает конфигурацию (setup),

Здесь мы видим следующее [2:24]. Есть параметры последовательного порта, важно прописать правильно файл, то есть указать тот файл, который у вас в системе связан с физическим COM-портом, Второй важный момент – это настройка параметров обмена (ключ Е). Дело в том, что корректный обмен данными по последовательному соединению возможен только тогда, когда обе стороны имеют один и тот же набор параметров. В этом окне можно набор этих параметров менять [3:08]. Мы видим, что у нас задана скорость 8 бит, нет контроля четности, и один стоповый бит. Именно здесь можно это все увидеть и настроить так, как требуется или, как требует ваше устройство.

Сохраняем конфигурацию по умолчанию. Дальше будем взаимодействовать — сначала с помощью команды терминала, чтобы проверить, как вручную это работает; а потом напишем небольшую программу, которая будет слать данные в COM-порт. Выйти из Mincom можно набрав ctrl-A-X.

Для того чтобы проверить, как работает COM-порт можно воспользоваться программой miniterm [4:03]. Я создал виртуальную машину с обычным linux, у неё указал, что в наличии имеется один COM-порт (это COM1), по умолчанию назначились линии обработки запросов прерывания. Я ассоциировал этот COM-порт с файлом на моей host-машине. С этого файла мы будем читать данные записанные в порт.

Итак, мы видим, что в левой части экрана у нас есть логин на виртуальную машину [4:46]. Давайте проверим с помощью minicom -s, как настроены коммуникации. Проверим, что /dev/ttyS0 – это действительно правильный физический порт – да, это именно так. Теперь мы можем вызвать команду

$sudo miniterm

она говорит, что есть следующие доступные порты, и просит ввести, через какой порт работать. Далее я попадаю терминал, связанный с COM-портом, где могу набирать текст. Набирая команды, я вижу «эхо» в моем файле справа. Обратите внимание, что я пишу в левом окне, а на экране надпись мы видим в правом. В левом окошке – виртуальная машина, на которой настроен порт. В правом – тот лог, который мы видим в файле ассоциированном с этим COM-портом на host-машине.

Создадим какой-нибудь каталог, в котором будем разрабатывать приложение. Как это ни странно, приложение будет выглядеть очень просто, потому что все действия, которые мы делаем с COM-портом в linux, это действия с файлами с использованием тех же самых файловых операций. Нам потребуется stdio.h, unistd.h, чтобы получить доступ – функциям open/read/write, fcntl.h, чтобы иметь возможность использовать файловые флажки. Открываем файловый дескриптор, COM-порт, имя, и флаги из COM-порта. Проверим, что файловый дескриптор у нас открылся, то есть если порт меньше или равен 0, то есть какая-то ошибка, оповестим об этом пользователя и вернем управление. В противном случае, можно писать в этот файловый дескриптор. write принимает файловый дескриптор, указатель на буфер, размер. Дальше мы закрываем файловый дескриптор и возвращаем управление. Приложение готово.

Читайте также:  Закрывается антивирус windows 10

Теперь давайте попробуем запустить то, что у нас вышло, вернее, скомпилировать и запустить [10:40]. При запуске приложения произошла ошибка, но она вызвана понятными причинами, потому что пользователь должен был быть включен группу dialout [11:03], или нам надо запускать приложение от суперпользователя. Сделаем это. И сразу видим, что в нашем окошке появилась запись «hello world». Можно повторить и увидеть, что все работает корректно.

Точно таким же образом можно осуществлять чтение из COM-порта, то есть использовать не функцию write, а функцию read.

Источник

Заметки о Linux, электронике, радиолюбительстве

Личный блог Вадима Кузнецова, RA3XDH

воскресенье, 27 июля 2014 г.

Работа с последовательным портом из консоли Linux

В предыдущем посте было показано как запустить UART на отладочной плате Launchpad для MSP430. Теперь рассмотрим как общаться с платой при помощи средств командной строки Linux. Используется плата с прошивкой из предыдущего поста. Для подробностей — см. под кат

Как известно, все устройства последовательных портов представлены файлами устройств в каталоге /dev.Через эти файлы и происходит общение ОС Linux с внешним устройством на последовательном порту. Чтобы передать что-то на внешнее устройство нужно записать данные в файл устройства, а чтобы считать информацию из устройства — прочитать данные из файла устройства. Это можно делать при помощи команд cat и echo так же как для обычных файлов на диске. Или внутри программы на С при помощи вызовов ioctl(), read() и write() или библиотеки termios.

Физическим последовательным портам RS232, к которым подключались диалапные модемы на старых компьютерах, соответствуют файлы устройств /dev/ttyS*, начиная с /dev/ttyS0. Виртуальным последовательным портам, которые создаются различными конвертерами USB UART соответствуют файлы устройств /dev/ttyUSB* и /dev/ttyACM*. Ядро Linux автоматически разпознаёт подключенное устройство, загружает для него драйвер и создаёт файл устройства. Вручную устанавливать драйвер, как в ОС Windows не требуется. Например, если подключить к USB преобразователь USB UART FT232, то создаётся файл устройства /dev/ttyUSB0, с которым можно работать также как и с обычным последовательным портом. На плате Launcpad находится микросхема TUSB3410, которая тоже представляет собой конвертер USB UART. Если подключить её к USB, то создаётся файл устройства /dev/ttyACM0. Чтобы общаться с платой нужно что-либо писать/читать с этого файла.

Чтобы пользователь мог читать или писать в файл устройства последовательного порта, его нужно добавить в группу dialout. Иначе работать с последовательным портом сможет только администратор root.

Простейшим приложением с графическим интерфейсом, которое работает с последовательным портом, является CuteCOM. Он обычно уже есть в вашем дистрибутиве Linux. Его можно установить из репозиториев. При помощи CuteCOM мы работали с платой в предыдущем посте. Выглядит CuteCOM вот так:

Работать с ним крайне просто. Указываем нужное устройство, если его нет в списке, то его можно впечатать вручную. Затем указываем скорость и параметры и нажимаем OpenDevice. В окне видим данные, которые пришли от устройства. В поле ввода в нижней части можем печать строку символов, которые предаются на устройство. Чтобы передать данный нажимаем Enter и смотрим ответ устройства в окне.

Теперь рассмотрим как работать с COM-портом из командной строки. Для этого служат три команды: stty, cat и echo.

Команда stty устанавливает параметры и скорость COM-порта. Её формат:

stty -F

Чтобы установить параметры для платы Launchpad для соединения на скорости 9600 нужно выполнить:

Читайте также:  Windows sp3 zver x32

$ stty 9600 -F /dev/ttyACM0 raw -echo

Параметр raw устанавливает, что данные в компьютер передаются байт за байтом так же как приходят в порт без преобразований. Аппаратное управление потоком отключено. Подробнее о том, что включает и выключает raw — см. man stty. Если не включить raw, то скорее всего ничего работать не будет.

Теперь в той же консоли нужно набрать

$ cat /dev/ttyACM0

И можно смотреть данные, которые приходят от платы. Выход — нажать Ctrl+C.

Теперь нажимаем на плате RESET и видим, что в консоди напечатался текст.

Чтобы передать в плату данные, в другой консоли нужно использовать команду echo и перенаправление вывода в файл устройства. Наберём в другой консоли:

$ echo "1">/dev/ttyACM0

Видим, что на плате загорелся красный светодиод и в первой консоли было выдано сообщение об этом. Чтобы убрать конец строки в передаваемых данных, то нужно использовать запуск echo -n, а чтобы интерпретировать 16-ричные коды — нужно echo -e. Ключи можно комбинировать.

В итоге должно получиться так:

Чтобы увидеть 16-ричные коды данных, приходящих от устройства, нужно использовать команду hexdump:

$ cat /dev/ttyACM0|hexdump -C

Получится вот так:

Чтобы иметь вывод данных от устройство на экран и в текстовый файл нужно использовать tee:

Источник

Как создать прослушиватель портов в Windows или Linux – удобный для тестирования подключения

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

Это часто приходится делать, когда вы работаете в среде DMZ для миграции или нового проекта.

Давайте рассмотрим пример в реальном времени – вы работаете над миграцией, и вам нужно обеспечить связь между приложениями «A» и «B» на определенном порту.

Что ж. Вы можете выполнить telnet, но как насчет того, когда «B» не работает? Здесь вам понадобится прослушиватель портов, чтобы помочь в этой ситуации.

Если у вас есть аналогичная ситуация или вы почувствуете, что это будет полезно для вас на работе, то здесь есть несколько способов добиться этого на платформе Windows или UNIX.

Создание почтового прослушивателя в ОС Windows

Чтобы иметь прослушиватель портов на определенном порту в Windows, вы можете использовать утилиту «Port Listener».

Эта утилита доступна бесплатно от Windows 95 до Windows 10.

  • Загрузить Listener в формате zip или exe отсюда
  • В этом руководстве я загружу exe-формат
  • Дважды щелкните файл загруженного postlistener.exe
  • Он предложит выбрать местоположение для извлечения файлов, нажмите на unzip

Перейдите по пути, в котором вы извлекли файлы, в этом примере;

Дважды щелкните на listener , чтобы запустить утилиту

Введите номер порта, который вы хотите проверить, и нажмите кнопку start.

В приведенном выше примере я начал прослушивать порт на 5500, и пришло время проверить, работает ли он.

Откройте командную строку и запустите netstat, чтобы проверить, прослушивается ли порт 5500

Чтобы создать прослушиватель портов в ОС Linux

Процедура немного отличается в Linux; здесь мы будем использовать команду netcat (nc) для запуска слушателя.

Чтобы установить nc, вы можете использовать команду yum

После установки используйте следующую команду, чтобы запустить прослушиватель портов как 5500 в фоновом режиме.

Чтобы проверить, давайте использовать команду netstat

Так вот, у меня порт 5500 прослушивается успешно. Выполнение этого в Linux немного более удобно, не так ли?

Как создать прослушиватель портов с помощью Python

я нашел ниже код python, который работает на Windows и Linux. Создайте файл – допустим, portlistener.py с кодом ниже

Сохраните файл и запустите его с помощью команды python, как показано ниже.

Источник

Оцените статью