SerialSend: утилита для работы с виртуальным COM-портом
Добавил(а) microsin
SerialSend это маленькое приложение Windows, запускаемое из командной строки, которая создана автором (Ted Burke [1]) для отправки строк текста через последовательный порт. Программа удобна для использования вместе с устройствами на микроконтроллерах, которые подключаются к компьютеру через порт USB как виртуальный последовательный COM-порт (VCP).
Примечание: это могут быть различные устройства, например подключенный к USB микроконтроллер AVR, в который записан проект VCP на основе библиотеки V-USB (см. [2]), либо микроконтроллер AVR с аппаратным USB (проект на основе библиотеки LUFA [3]). В этих выше перечисленных случаях микроконтроллеры AVR подключаются к USB напрямую, без специальных микросхем. Также микроконтроллеры AVR могут подключаться к USB через специальные переходники USB-RS232TTL на чипах FT232RL, CP1021, CH340G, ATmega16U2 и т. п. (так называемые схемы USB-to-serial, по такому принципу подключаются к UART через USB популярные платы Arduino).
Программа SerialSend позволит Вам:
• Послать строку произвольных символов текста в устройство через последовательный порт с помощью одной команды. • Послать текст из простых консольных приложений в аппаратные устройства через последовательный порт с использованием функции "system". • Указать скорость передачи (baud rate) последовательного канала связи. • Указать номер последовательного порта, куда будет послан текст. • Есть возможность автоматически найти доступный порт с самым большим номером (полезно для конвертеров USB VCP, или USB-to-serial, потому что именно они чаще всего соответствуют самым большим номера COM-портов в операционной системе Windows).
Причина, по которой была добавлена последняя возможность, следующая. Часто Windows присваивает различные номера COM-портов даже для одного и того же устройства, если он подключается в разные порты USB (прим. переводчика: это происходит в том случае, если в устройстве USB VCP нет встроенного серийного номера; тогда Windows сама генерирует идентификаторы для такого устройства VCP, привязываясь к номеру порта USB). Чаще всего при подключении переходника USB VCP к порту USB операционная система присваивает ему следующий по порядку не используемый номер COM-порта, так что номер COM-порта получается самый большой из всех доступных COM-портов. Поэтому автоматическое подключение к COM-порту по самому большому номеру в таком случае оказывается полезным, потому что не надо специально задавать номер COM-порта для подключения.
Автор предоставил полный исходный код на языке C для своей утилиты SerialSend (см. врезку). Код компилировался в среде MinGW (gcc), как это показано в комментариях к коду, но также можно скомпилировать SerialSend под управлением Visual C++ или другого компилятора Windows C/C++. Также Вы можете загрузить и использовать уже скомпилированный вариант (SerialSend.exe, 54 KB, date: 8-4-2015).
[Примеры использования]
Примечание: если передаваемый текст содержит пробелы, то он должен быть заключен в двойные кавычки.
Следующая команда посылает символы abc 123 через доступный последовательный порт с самым большим номером и скоростью по умолчанию (38400 baud).
SerialSend.exe "abc 123"
Следующая команда посылает текст Hello world! через самый большой по номеру и доступный последовательный порт на скорости 9600 baud.
SerialSend.exe /baudrate 9600 "Hello world!"
Следующая команда посылает текст S120 E360 через COM10 со скоростью по умолчанию (38400 baud). Если порт COM10 не доступен в системе, то вместо него будет использован доступный порт с самым большим номером.
SerialSend.exe /devnum 10 "S120 E360"
Произвольные байты, включая не печатаемые символы (такие, как табуляция TAB, символы возврата каретки CR и перевода строки LF), могут быть добавлены в строку как шестнадцатеричные числа с помощью опции /hex командной строки и esc-символа \x в задаваемом тексте. Например, следующая команда отправляет строку abc, за которой следует символ перевода строки LF (line feed, шестнадцатеричное значение 0x0A). В этом примере получается, что всего будет отправлено 4 байта.
SerialSend.exe /hex "abc\x0A"
Также вместе с опцией /hex можно использовать esc-последовательности \n и \r для вставки в строку символа перевода строки (LF) и возврата каретки (CR) соответственно. Например, следующая команда отправит строку Hello, за которой идут символы CR и LF (всего будет отправлено 7 байт).
SerialSend.exe /hex "Hello\r\n"
Опция командной строки /closedelay позволяет вставить задержку (указанную в миллисекундах) после того, как текст будет отправлен, но до того, как последовательный порт будет закрыт. Это может понадобиться, когда нужно посылать порции данных в устройство, и необходимо при этом дать ему время на обработку и ответ для каждой порции. Например, следующая команда посылает символы ABCD и CR в порт COM5, и после этого делает задержку 500 мс, и после истечения этой задержки COM5 будет закрыт (освобожден).
Комментарии
RSS лента комментариев этой записи