Работа с COM- портом из командной строки. Мониторинг
...вот все-таки батники незаслуженно игнорируются любителями высокоуровневых языков, а тем не менее даже на них можно решить задачи по мониторингу не только удаленных хостов, но и мониторинга COM-порта. К примеру, возникла задача реагирования (запуска какого-либо приложения) на приход сигнала на один из пинов, кнопка к примеру (выставить DTR тот же и замкнуть с CTS).
Напомню еще раз распиновку COM-порта:
Номер вывода Наименование Характер сигнала Сигнал
1 DCD Входной Data carrier detect
2 RxD Выходной Transmit data
3 TxD Входной Receive data
4 DTR Выходной Data terminal ready
5 GND - Ground
6 DSR Входной Data set ready
7 RTS Выходной Request to send
8 CTS Входной Clear to send
9 RI Входной Ring indicator
Нам нужно управлять состоянием устройства ввода-вывода. Одной из таких команд - mode (синтаксис см. по mode /?):

Что мы видим? Видим возможность установки скорости, паритета, служебных пинов, паритета и иже с ними. А что нам даст обращение (mode com1) к конкретному COM-порту? А вот сие даст:

Cостояние пинов и настроек порта. Можем прочитать? Можем. Для этого воспользуемся FIND="параметр" (важно точное указание всех знаков):
@ echo off mode com1 dtr=on > nul :m1 mode com1 | find "CTS: ON" > nul if errorlevel=1 goto m1 if errorlevel=0 start notepad.exe
Флаги:
"dtr=on" установит единичку на DTR.
"> nul" - этим мы убираем вывод ответа на экран.
"errorlevel" - отрабатываем результат выполнения.

Если команда FIND не нашла в ответе "CTS: ON", то повторить опрос по циклу. Ежели нашла, запустит блокнотик 
| Вложение | Размер |
|---|---|
| comstartcts.bat_.txt | 131 байт |
- raxp's блог
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 730 просмотров



Комментарии
1 комментария(ев)Дата: ПТ, 17/02/2012 - 12:02
Вау! Никогда не знал, что из cmd можно работать с com портами. Как-то раз мне пришлось на скоряк написать небольшое приложение, чтобы передать парочку команд модему. Жаль, что тогда не знал про этот способ.