Serial port monitor программное обеспечение для мониторинга com-портов
Содержание:
Какие проблемы может решить COM Port Data Emulator?
Наша бесплатная программа идеально подходит для решения широкого круга задач в разнообразных областях деятельности:
разработка и тестирование программного обеспечения,
сетевых администраторов инженеров, служб технической поддержки,
пользователей SCADA и телеметрии, тестирование телекоммуникационных приложений,
системная интеграция. С помощью нашей программы вы можете воспроизводить передачу данных реальных устройств из лог-файла и тестировать
ваше программное обеспечение без подключения реального устройства к компьютеру. Вы можете генерировать случайный поток данных и
тестировать устойчивость ваших систем, вашего ПО в данной стрессовой ситуации.
Значение скорости Com-порта?
Скорость порта Com — это имя ошибки, содержащее сведения об ошибке, включая причины ее возникновения, неисправность системного компонента или приложения для возникновения этой ошибки вместе с некоторой другой информацией. Численный код в имени ошибки содержит данные, которые могут быть расшифрованы производителем неисправного компонента или приложения. Ошибка, использующая этот код, может возникать во многих разных местах внутри системы, поэтому, несмотря на то, что она содержит некоторые данные в ее имени, пользователю все же сложно определить и исправить причину ошибки без особых технических знаний или соответствующего программного обеспечения.
Аппаратура
Разъём имеет контакты:
DTR (Data Terminal Ready — готовность к приёму данных) — выход на компьютере, вход на модеме. Означает готовность компьютера к работе с модемом. Сброс этой линии вызывает почти полную перезагрузку модема в первоначальное состояние, в том числе бросание трубки (некоторые управляющие регистры выживают после такого сброса). В UNIX это происходит в случае, если все приложения закрыли файлы на драйвере последовательного порта. Мышь использует этот провод для получения питания.
DSR (Data Set Ready — готовность к передаче данных) — вход на компьютере, выход на модеме. Означает готовность модема. Если эта линия находится в нуле — то в ряде ОС становится невозможно открыть порт как файл.
RxD (Receive Data — приём данных) — вход на компьютере, выход на модеме. Поток данных, входящий в компьютер.
TxD (Transmit Data — передача данных) — выход на компьютере, вход на модеме. Поток данных, исходящих из компьютера.
CTS (Clear to Send — готовность передачи) — вход на компьютере, выход на модеме. Компьютер обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в модеме.
RTS (Request to Send — запрос на передачу) — выход на компьютере, вход на модеме. Модем обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в оборудовании и драйвере.
DCD (Carrier Detect — наличие несущей) — вход на компьютере, выход на модеме. Взводится модемом в единицу после установления соединения с модемом с той стороны, сбрасывается в ноль при разрыве связи. Аппаратура компьютера может издавать прерывание при наступлении такого события.
RI (Ring Indicator — сигнал вызова) — вход на компьютере, выход на модеме. Взводится модемом в единицу после обнаружения вызывного сигнала телефонного звонка. Аппаратура компьютера может издавать прерывание при наступлении такого события.
SG (Signal Ground — сигнальная земля) — общий сигнальный провод порта, не является общей землёй, как правило, изолирован от корпуса ЭВМ или модема.
В нуль-модемном кабеле используются две перекрещенные пары: TXD/RXD и RTS/CTS.
Исходно в IBM PC и IBM PC/XT аппаратура порта была построена на микросхеме UART 8250 фирмы National Semiconductor, затем микросхема была заменена на 16450, программно совместимой с предыдущими, но позволявшей использовать скорости вплоть до 115200 бит в секунду, затем появилась микросхема 16550, содержавшая двунаправленный FIFO буфер данных для снижения нагрузки на контроллер прерываний. В настоящее время включена в SuperIO микросхему на материнской плате вместе с рядом иных устройств.
Распиновка разъёмов COM-порта
Распиновка никакой связи не имеет с распинанием, хотя, как проводки, вольно бегущие в одной оболочке кабеля, разбирают на стороны и жёстко припаивают к своим штырькам, сходно с распинанием. Штырёк, по-английски «pin», булавка, поэтому и распиновка, слово уже это компьютерно-связистский «проанглийский» жаргонизм. Означает — распайка проводов по штырькам на разъёме.
Форма разъёма, порядок проводков (штырьков) в нём, назначение каждого штырька, а также номиналы напряжений и смысл сигналов в каждом — это часть интерфейса. Обычно вся эта информация собирается в отдельный документ, называемый спецификацией порта. Такая простая и понятная табличка на одну страницу. В других разновидностях интерфейсов что-то такое может называться «протоколом». А здесь ещё просто называют «распиновкой».
Контроль передачи данных типа RTS/CTS и DTR/DSR
Это так называемый «аппаратный» контроль передачи данных. Контроль передачи данных был раскрыт более подробно на другой странице в разедлее «Контроль передачи данных», однако контакты и сигналы не были описаны. Advanced
Serial Port Monitor поддерживает RTS/CTS и DTR/DSR типы аппаратного контроля передачи данных.
Только RTS/CTS тип контроля предачи данных будет рассмотрен здесь, поскольку DTR/DSR тип контроля передачи данных функционирует по тому же принципу. Для того, чтобы активировать RTS/CTS контроль передачи данных необходимо только выбрать эту опцию в настройках Advanced Serial
Port Monitor.
Итак, если DTE устройство (такое как компьютер) хочет прекратить передачу данных, оно сбрасывает состояние сигнала RTS. Сброшенный сигнал»Запрос на передачу (Request to Send)» (-12 вольт) означает «не посылать запросы ко мне» (прекратить передачу). Когда компьютер готов для принятия очередного блока данных он устанавливает сигнал RTS (+12 вольт) и поток данных возобновляется.
Сигналы контроля передачи данных всегда посылаются в противоположном направлении от потока данных контроль которых они осуществляют. DCE устройства (модемы) работают по тому же принципу, только посылают сигнал на контакте CTS. Поэтому тип контроля передачи даных RTS/CTS использует 2 линии (провода).
Актуальность
Широко распространённый в IBM PC-совместимых компьютерах, интерфейс RS-232 не пригоден для развлекательных и офисных задач, зато широко используется в прикладных задачах, поэтому попытки избавиться в современных материнских платах от наследия старых интерфейсов обречены. Спецификация PC99 — один из безуспешных примеров нажиться[источник не указан 410 дней] на масштабной замене «устаревшего» оборудования. Про неё пишут[источник не указан 410 дней], что она «ныне устарела и представляет исключительно исторический интерес», а производство «устаревшего» оборудования процветает. В офисных и домашних компьютерах, где расстояния и помехи невелики, а скорость обмена востребована, RS-232 практически вытеснен интерфейсом USB.
Существуют стандарты на эмуляцию последовательного порта над USB и над Bluetooth (эта технология в значительной степени и проектировалась как «беспроводной последовательный порт»).
Тем не менее программная эмуляция данного порта широко используется и сегодня. Так, например, практически все мобильные телефоны эмулируют внутри себя классический COM-порт и модем для реализации тетеринга — доступа компьютера в Интернет через GPRS/EDGE/3G/4G оборудование телефона. При этом для физического подключения к компьютеру используется USB, Bluetooth или Wi-Fi.
Также программная эмуляция данного порта предоставляется «гостям» виртуальных машин VMWare и Microsoft Hyper-V, основная цель при этом — подключение отладчика уровня ядра Windows к «гостю».
В виде UART, отличающегося уровнями напряжения и отсутствием дополнительных сигналов, присутствует практически во всех микроконтроллерах, кроме самых-самых маленьких, SoC, платах разработчиков, а также присутствует на платах большей части устройств, хотя разъём и не выведен на корпус. Такая популярность связана с простотой этого интерфейса, как с физической точки зрения, так и с легкостью доступа к порту со стороны ПО по сравнению с другими интерфейсами.
Программный доступ к СОМ-порту
UNIX
COM-порты в операционной системе Unix (Linux) — это файлы символьных устройств. Обычно эти файлы располагаются в каталоге /dev и называются
- ttyS0, ttyS1, ttyS2 и т. д. в Linux
- ttyd0, ttyd1, ttyd2 и т. д. (или ttyu0, ttyu1, ttyu2 и т. д. начиная с версии 8.0) в FreeBSD
- ttya, ttyb, ttyc и т. д. в Solaris
- ttyf1, ttyf2, ttyf3 и т. д. в IRIX
- tty1p0, tty2p0, tty3p0 и т. д. в HP-UX
- tty01, tty02, tty03 и т. д. в Digital Unix
- ser1, ser2, ser3 и т. д. в QNX
Для программного доступа к СОМ-порту необходимо открыть на чтение/запись соответствующий файл и сделать вызовы специальных функций tcgetattr (для того, чтобы узнать текущие настройки) и tcsetattr (чтобы установить новые настройки). Также может потребоваться сделать вызовы ioctl с определенными параметрами. После этого при записи в файл данные будут отправляться через порт, а при чтении программа будет получать уже принятые данные из буфера СОМ-порта.
Устройства с именами «ttyxx» используются как серверные, то есть приложение, открывшее данное устройство, обычно ожидает входящего звонка от модема. Классическим таким приложением, используемым по умолчанию, является getty, которая ожидает входящего звонка, далее настраивает COM-порт в соответствии с файлами конфигурации, выводит туда «login: «, принимает имя пользователя и запускает как потомка команду «login ИмяПользователя», со стандартным вводом и выводом, перенаправленными в COM-порт. Эта команда в свою очередь запрашивает и проверяет пароль, и в случае успеха запускает (не как потомка, а вместо себя вызовом execve в том же процессе) default user shell, прописанный в файле /etc/passwd.
Эта технология исторически возникла в 1970-е годы, когда под ОС UNIX использовались компьютеры вроде PDP-11 (в СССР серия называлась СМ ЭВМ) или VAX, позволяющие подключение многих терминалов для работы многих пользователей. Терминалы — а значит, и весь интерфейс пользователя — при этом подключались через последовательные порты, с возможностью подключения вместо терминала модема и дальнейшего дозвона на компьютер по телефону. До сих пор в UNIX-подобных ОС существует терминальный стек, и обычно 3 реализации терминалов — последовательный порт, консоль текстового режима экрана+клавиатура, и «обратная петля» в один из открытых файлов управляющего приложения (так реализованы telnetd, sshd и xterm).
Клиентские устройства последовательного порта, предназначенные для совершения звонков вовне, в многих UNIX (не во всех) называются cuaxx.
Так как последовательный порт в UNIX доступен только через терминальный стек, он может быть управляющим терминалом для процессов и групп (посылать SIGHUP при разрыве связи от модема и SIGINT при нажатии Ctrl-C), на уровне ядра поддерживать редактирование последней введенной строки клавишами стрелочек, и т. д. Для отключения этой возможности с целью превращения устройства в «трубу» для потока байт необходимы вызовы ioctl.
Windows
С последовательными портами в Win32 работают, как с файлами. Для открытия порта используется функция CreateFile. Портов может быть много, поэтому они обозначаются как COM1, COM2 и т. д. по порядку обнаружения драйверов соответствующих устройств. Первые 9 портов доступны в том числе как именованные каналы для передачи данных (доступны по именам «COM1», «COM2», …), такой метод доступа считается устаревшим. Рекомендуется ко всем портам обращаться как к файлам (по именам «\\.\COM1», «\\.\COM2»,… «\\.\COMx»).
Поиск PnP-имен устройств в системе осуществляется вызовом SetupDiGetClassDevs. В реестре существует раздел HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM, в котором отображаются имеющиеся в данный момент COM-порты.
Для каждого порта в реестре имеется раздел. Эти разделы имеют такие имена:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000,
где последнее значение «Serial10000» — уникальный номер для каждого нового добавленного в систему COM-порта, для второго — «Serial10001» и т. д.
OS/2
Имеющийся драйвер COM.SYS поддерживает только 4 COM-порта, каждый из которых должен иметь свою линию прерываний. Для обслуживания COM-портов с общей линией прерывания необходимо воспользоваться драйвером SIO.
Сравнение STANDARD и PRO версий
# | Функция | Standard | Pro |
---|---|---|---|
1 | Создание неограниченного количества пар виртуальных последовательных портов | ||
2 | Полная эмуляция настроек реального COM-порта и аппаратных линий управления | ||
3 | Разделение одного COM-порта (физического или виртуального) на несколько виртуальных | ||
4 | Объединение неограниченного количества физических или виртуальных последовательных портов в один виртуальный COM-порт | ||
5 | Создание сложных пулов портов | ||
6 | Возможность удалять порты, открытые другими приложениями | ||
7 | Высокая скорость передачи данных с/на виртуальный последовательный порт | ||
8 | Возможность отправлять последовательный поток данных с одного реального порта на другой реальный или виртуальный порт | ||
9 | Прямая эмуляция скорости передачи | ||
10 | Наличие различных виртуальных нуль-модемных схем: стандартные/ loopback/ персонализированные | ||
11 | Виртуальный последовательный порт может иметь любое имя, включая и те, что уже используются реальными портами | ||
12 | Программное обеспечение и все его драйверы имеют цифровую подпись | ||
13 | Поддержка технологии драйвера ядра Windows (WDM, WMI, Power Management, PnP и т. п.) | ||
14 | Поддержка технологий Hyper-Threading и VMware | ||
15 | Возможность задавать права на чтение и запись для каждого порта | ||
16 | Сохранение данных об использовании приложениями портов в «Журнале событий» | ||
17 | Возможность настраивать параметры соединений с реальным последовательным портом (скорость передачи, контроль четности, управление потоком, бит данных и стоповый бит) | ||
18 | Не требуется перезагрузка компьютера после установки программного обеспечения, создания и реконфигурации виртуальных последовательных портов | ||
19 | Автоматическое воссоздание портов после перезагрузки системы (до входа пользователя в систему) | ||
20 | Возможность изменять имена виртуальных COM-портов, созданных VSPD и отображаемых в Диспетчере устройств | ||
21 | Полная поддержка контроля HandFlow (аппаратный и Xon/Xoff) | ||
22 | Совместное использование одного реального COM-порта несколькими приложениями одновременно | ||
23 | Возможность объединять несколько последовательных портов в один пул |
С Serial Port Monitor вы сможете:
- Serial Port Monitor может подключаться к COM-порту, даже если тот уже открыт каким-нибудь приложением, и сразу приступать к его мониторингу. Все данные, проходящие через контролируемый COM-порт, отобразятся в нашей программе мониторинга. Поскольку все записывается в режиме реального времени, вы сможете мгновенно выявлять проблемы. Для сравнения данных есть функция синхронизированного выделения одинаковых IRP в разных видах. Кроме того, вы можете перенаправить все данные мониторинга в заданный файл или скопировать все записанные данные в буфер обмена. Serial Port Monitor дает вам возможность перехватывать и записывать все управляющие коды ввода/вывода последовательных портов (IOCTLs), отслеживать все их данные и параметры. Вы можете сохранять любую сессию мониторинга и при необходимости загружать ее в следующий раз.
- У Serial Port Monitor есть уникальная функциональная возможность мониторинга нескольких COM-портов одновременно. Теперь вы можете собрать данные о том, как приложения взаимодействуют с двумя или более портами и параллельно с этим с несколькими устройствами в рамках одной сессии. Полученные и отправленные данные мониторинга будут представлены (записаны) в отдельном журнале в порядке поступления, что значительно упростит анализ.
- Вы можете просматривать данные мониторинга сразу в 4 режимах: таблица, строка, дамп или терминал, каждый из которых предлагает свой способ представления записанных последовательных данных. Serial Port Monitor дает возможность выбирать фильтры мониторинга, экономя таким образом ваше время и позволяя отслеживать только интересующие события. В настройках есть возможность выбора данных для показа: бинарные, ASCII, настроить порт. Любые настройки для показа можно применить прямо в текущем процессе мониторинга.
- Вы можете отправлять данные в различных форматах (стринг, двоичный, восьмеричный, десятичный, шестнадцатеричный, смешанный) контролируемому последовательному порту, как будто они были отправлены непосредственно контролируемым приложением с использованием функции режима терминала Serial Port Monitor. Таким образом, вы можете отслеживать реакции контролируемого последовательного устройства на некоторые специальных команды и данные.
- C помощью новых фильтров Serial Port Monitor вы сможете расшифровывать и анализировать Modbus данные. Программа поможет не только устанавливать соединение между устройствами RS485/422/232, но и проводить эффективный анализ проходящих данных.
- Serial Port Monitor предоставляет уникальную возможность заново воспроизвести сессию из приложения в порт для наилучшего анализа происходящих процессов. Вы сможете наблюдать за реакцией серийного порта на прохождение тех же данных, повышая тем самым эффективность мониторинга. У вас также есть возможность сравнить несколько сессий мониторинга и автоматически отследить разницу между ними.
Внесенные изменения
При этом управление COM-портом существенно не изменилось. Пользователь по старинке должен производить сложную настройку чуть ли не вручную. Однако современный COM-порт представляет собой уже не то громоздкое приспособление, размещавшееся на задней панели системного блока, а совсем иное устройство. И тут все дело в том, что с программной точки зрения все их реализации выглядят безлико, то есть нет разницы между виртуальными и реальными портами. Для программного обеспечения порты различаются только номерами, которые им присвоены производителями КПК на совершенно случайной основе. К примеру, приемник от ASUS обычно находится на COM5, а PocketLOOX 560 показывает приемник на COM8. Получается, что программа, которая желает получать от GPS-приемника данные, не имеет изначально никакой достоверной информации об условном номере, под которым фигурирует порт, прописанный соответствующим для приемника на данном КПК.