bg

5 способов отправить данные на COM-порт из командной строки в Windows

На этой странице приведены пять практических способов отправки данных через последовательный (COM) порт из командной строки Windows. Каждое решение включает примечания по настройке и примеры.

В1: Могу ли я отправить простой текст напрямую, используя перенаправление (echo > COMx)?

Да. Windows поддерживает перенаправление вывода на COM-порт. Перед отправкой задайте параметры COM-порта (скорость, четность, биты данных, стоповые биты, управление потоком) с помощью команды mode. Пример:

Настройка порта:

mode COM3: BAUD=9600 PARITY=N DATA=8 STOP=1

Отправка текста:

echo Hello, device! > COM3

Примечания: Этот метод отправляет текстовую строку (с завершающими символами CR+LF в зависимости от команды echo). Для передачи двоичных байтов используйт метод ниже. Если вы получаете ошибку "Отказано в доступе" (Access denied), убедитесь, что порт не открыт в другом приложении и вы запустили командную строку с соответствующими правами.

Отправка текстовых данных из командной строки

В2: Как отправить бинарные данные или файл в COM порт из командной строки (cmd.exe)?

Используйте команду copy /b для отправки бинарного файла напрямую в COM порт. Пример:

Настройка порта:

mode COM3: BAUD=115200 PARITY=N DATA=8 STOP=1

Отправка двоичного файла:

copy /b mydata.bin COM3

Для отправки текстового файла без преобразования также используйте copy /b. Этот метод отправляет байты файла в точности так, как они есть в файле. Чтобы дописать (добавить) в вывод вместо перезаписи, используйте type myfile >> COM3, но только после того, как убедитесь в правильном поведении порта.

Отправка двоичных данных из командной строки

В3: Как отправить данные на последовательный порт с помощью PowerShell (лучший контроль, байты и скрипты)?

PowerShell может использовать класс .NET System.IO.Ports.SerialPort для точного контроля. Примеры простых небольших скриптов:

Открыть, отправить текст, закрыть (в одной строке):

powershell -NoProfile -Command "$p=New-Object System.IO.Ports.SerialPort 'COM1',9600,'None',8,one;$p.Open();$p.WriteLine('Hello from PowerShell');$p.Close()"

Отправить байты из шестнадцатеричного (hex) массива:

powershell -NoProfile -Command "$p=New-Object System.IO.Ports.SerialPort 'COM3',9600,'None',8,one;$p.Open();$buf=([byte[]] (0x02,0x10,0x03));$p.Write($buf,0,$buf.Length);$p.Close()"

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

В4: Использование специализированной небольшой утилиты для Windows для отправки нескольких байтов и символов.

Бесплатная утилита RS232Switch позволяет настроить COM порт и отправить небольшую HEX- или ASCII-команду из одной командной строки. Главное преимущество - скорость запуска, к тому же она работает во всех операционных системах Windows. Эта программа была разработана для управления AV-процессорами, коммутаторами и проекторами через порт RS232. Если вам нужно отправить несколько сообщений, вы можете вызывать эту утилиту из пакетного (bat) файла.

rs232switch.exe [/DEBUG] [/COM 1] [/MODE 9600,8N1] [/ASCII|HEX|HEX2] data_to_send
 /COM - port number (optional, default = 1)
 /MODE - COM port mode (optional, default = baud rate: 9600, data bits: 8, no parity, 1 stop bit)
 /DEBUG - enable debug messages (optional, default = off)
 /ASCII - ASCII characters only
 /HEX - Mixed ASCII and HEX data (default, e.g.: #01data#02)
 /HEX2 - 2-byte HEX data (e.g.: 01020304FF03)

Example: rs232switch /COM 3 /MODE 115200,8N1 #02hello#03

В5: Что делать, если мне нужно больше функций (отправка в hex, логирование, графический интерфейс)?

Используйте сторонние инструменты, такие как Serial Port Monitor. Вы можете отправлять файлы и данные из командной строки; кроме того, программа имеет интерфейс для написания скриптов для отправки набора байт, изменения скорости передачи данных и проведения интерактивных сеансов. Этот метод дает вам больше гибкости, чем простое перенаправление в командной строке (например, можно вручную настроить окончание строки, аппаратное управление потоком, управляющие символы для программного управления потоком, задать быстрые команды для отправки, использовать экраны HEX и ASCII представления данных и т. д.).

Открытие COM-порта в Serial Port Monitor

Общие советы и устранение неполадок при отправке данных через последовательный порт

  • Всегда настраивайте параметры связи COM порта перед отправкой (используйте команду mode или методы на базе API).
  • Закрывайте порт после отправки, чтобы разрешить доступ другим приложениям.
  • Используйте режим администратора, если это требуется политикой системы или драйверами устройств.
  • Если требуются отправить двоичные данные, избегайте команд, которые выполняют преобразование текста (например, обычный echo).
  • Если вы сомневаетесь, посмотрите в Диспетчере устройстве или используя другие методы, чтобы узнать назначенный номер COM порта.

Выберите метод, который соответствует вашим потребностям: простой текст (echo/copy), точный программный контроль (PowerShell/.NET или Python) или продвинутые инструменты с пользовательским интерфейсом и максимальным набор опций и функций.

Смотрите также

Сканер COM порта
5 частых ошибок при работе с COM портом в Windows
Узнать COM порт приложения или посмотреть все COM порты в Windows
COM порт не работает в Windows
Как протестировать COM порт в Windows
5 способов отправить данные на COM-порт из командной строки в Windows
Как добавить устройство COM порта на компьютер с Windows