Echo com port windows

Echo com port windows

Мне часто нужно посылать короткие строки символов в последовательный порт на операционной системе Windows (перевод статьи [1]). Это можно использовать для отправки команд роботу или в другие устройства, основанным на микроконтроллерах. Для соединения с устройством можно использовать аппаратный преобразователь USB-to-serial, которые в обилии можно найти на сайтах AliExpress, Ebay и dx.com. Для отправки символов есть удобная утилита SerialSend [2], но также можно использовать встроенные команды Windows: echo, set и mode.

К примеру, нужно послать строку «hello» в COM1 (имя первого последовательного порта Windows). Для этого можно просто ввести в консоли cmd.exe следующую команду:

Команда echo обычно используется для отображения строк в консоли командной строки, когда нужно вывести какое-нибудь информационное сообщение из скрипта команд *.BAT или *.CMD. Однако в этом примере с помощью символа > применено перенаправление вывода в специальный файл COM1, который в действительности не файл на диске, а последовательный порт. По этой причине строка «hello» отправляется в последовательный порт вместо экрана консоли.

Но для такого вывода текста в последовательный порт есть несколько препятствий:

• Нужно заранее знать номер COM-порта, который хотите использовать. Если Вы используете преобразователь USB-to-serial, то этот номер может неожиданно поменяться, особенно если Вы подключили его в другой разъем USB (программа SerialSend [2] предоставляет простой альтернативный метод отправки строк в любой доступный COM-порт с самым высоким порядковым номером, что может быть очень полезным).
• Строка, которая отправляется в нашем примере, в действительности имеет длину 8 байт, потому что она включает 1 байт завершающего пробела (код ASCII 0x20) плюс символ возврата каретки (CR, код 0x0D) и перевода строки (LF, код 0x0A).
• Отправлять можно только обычные символы текста. К примеру, произвольные байты с кодами 0x00 .. 0x19 отправлять не получится, на это способна только утилита SerialSend [2].
• Последовательный порт, который Вы хотите использовать, может быть настроен не на ту скорость, которая Вам нужна. В таком случае дополнительно нужно использовать команду mode, чтобы сконфигурировать скорость baudrate (и/или другие параметры фрейма последовательного протокола).
• COM-порты с большими номерами могут быть не распознаны для такого примера, но для их использования есть обходной маневр, описанный ниже.

Следующий пример — более надежный аналог команды из примера выше:

Эта команда может выглядеть поначалу довольно непонятной, давайте разберем её по частям.

Команда set обычно используется для установки значения для так называемой переменной окружения (environment variable). Например, следующая команда должна использоваться для установки переменной окружения с именем x в значение строки «sunshine»:

Когда в команде set используется ключ /p, то команда set выводит приглашение для пользователя, чтобы он ввел значение для устанавливаемой переменной окружения. Приглашение отображается на экране в виде строки, предоставленной в команде. Например:

Конечно, нас в сущности не интересует установка значения переменной x как таковой, сейчас это просто средство для достижения другой цели. Все, что мы хотим — вывести строку «hello» без символов CR и LF, и команда set только лишь предоставляет способ для решения этой задачи.

Мы не хотим, чтобы команда set остановилась на ожидании ввода пользователя, чтобы он ввел значение для переменной x, для этого команда set перенаправлена на ввод из nul (т. е. нет ввода как такового, вместо обычного ввода, который обычно происходил бы из консоли). Это означает, что команда сразу завершит работу, вместо того, чтобы ожидать ввода пользователя. Перенаправление ввода осуществляется символом

echo (вывод на экран) echo

Отображает сообщения или включает или отключает функцию вывода команд. Displays messages or turns on or off the command echoing feature. При использовании без параметров echo отображает текущее значение эха. If used without parameters, echo displays the current echo setting.

Читайте также:  How to install linux from iso

Синтаксис Syntax

Параметры Parameters

Параметр Parameter Описание Description
[вкл. | Откл.] [on | off] Включает или выключает функцию вывода команд. Turns on or off the command echoing feature. Команда по умолчанию включена. Command echoing is on by default.
Задает текст, отображаемый на экране. Specifies the text to display on the screen.
/? /? Отображение справки в командной строке. Displays help at the command prompt.

Комментарии Remarks

echo Команда особенно полезна при отключенном эхо . The echo command is particularly useful when echo is turned off. Чтобы отобразить сообщение, которое содержит несколько строк без отображения команд, можно включить несколько echo команд после команды echo off в пакетной программе. To display a message that is several lines long without displaying any commands, you can include several echo commands after the echo off command in your batch program.

После выключения эхо Командная строка не отображается в окне командной строки. After echo is turned off, the command prompt doesn’t appear in the Command Prompt window. Чтобы отобразить командную строку, введите команду echo on. To display the command prompt, type echo on.

Если используется в пакетном файле, Включение и вывод не влияют на параметр в командной строке. If used in a batch file, echo on and echo off don’t affect the setting at the command prompt.

Чтобы предотвратить вывод определенной команды в пакетном файле, вставьте @ знак перед командой. To prevent echoing a particular command in a batch file, insert an @ sign in front of the command. Чтобы предотвратить вывод всех команд в пакетном файле, включите команду echo off в начале файла. To prevent echoing all commands in a batch file, include the echo off command at the beginning of the file.

Чтобы отобразить символ канала ( | ) или перенаправления ( или > ) при использовании эха, используйте знак крышки ( ^ ) непосредственно перед символом канала или перенаправления. To display a pipe ( | ) or redirection character ( or > ) when you are using echo, use a caret ( ^ ) immediately before the pipe or redirection character. Например,, ^| ^> или ^ ). For example, ^| , ^> , or ^ ). Чтобы отобразить курсор, введите две крышки подряд ( ^^ ). To display a caret, type two carets in succession ( ^^ ).

Примеры Examples

Чтобы отобразить текущее значение echo , введите: To display the current echo setting, type:

Чтобы вывести на экран пустую строку, введите: To echo a blank line on the screen, type:

Не включайте пробел перед точкой. Don’t include a space before the period. В противном случае вместо пустой строки отображается точка. Otherwise, the period appears instead of a blank line.

Чтобы запретить вывод команд в командной строке, введите: To prevent echoing commands at the command prompt, type:

Когда эхо отключено, Командная строка не отображается в окне командной строки. When echo is turned off, the command prompt doesn’t appear in the Command Prompt window. Чтобы снова отобразить командную строку, введите команду echo on. To display the command prompt again, type echo on.

Чтобы предотвратить отображение на экране всех команд в пакетном файле (включая команду echo off ), в первой строке типа пакетного файла: To prevent all commands in a batch file (including the echo off command) from displaying on the screen, on the first line of the batch file type:

Команду echo можно использовать как часть оператора If . You can use the echo command as part of an if statement. Например, чтобы найти в текущем каталоге любой файл с расширением. rpt и вывести сообщение при обнаружении такого файла, введите: For example, to search the current directory for any file with the .rpt file name extension, and to echo a message if such a file is found, type:

Следующий пакетный файл выполняет поиск файлов с расширением txt в текущем каталоге и выводит сообщение с указанием результатов поиска: The following batch file searches the current directory for files with the .txt file name extension, and displays a message indicating the results of the search:

Если при выполнении пакетного файла не найдены TXT-файлы, отображается следующее сообщение: If no .txt files are found when the batch file is run, the following message displays:

Если TXT-файлы найдены при запуске пакетного файла, отображаются следующие выходные данные (в этом примере предполагается, что файлы File1.txt, File2.txt и File3.txt существуют): If .txt files are found when the batch file is run the following output displays (for this example, assume the files File1.txt, File2.txt, and File3.txt exist):

COM порт глазами ремонтника. Ремонт, настройка, диагностика. Часть 2, диагностика на компьютере.

Статья вторая «COM порт – глазами ремонтника. Ремонт, настройка, диагностика».

Рассматриваем вопросы диагностики COM порта со стороны компьютера.

Начнем с самого простого, найдем на компьютере COM порт визуально.

Рис. 1. Пример расположения COM порта на задней планке материнской платы.

Однако на привычном месте может не оказаться разъема COM порта, это не беда. Заходим в диспетчер устройств, и смотрим в нем наличие COM порта.

Рис.2 Проверяем наличие COM порта на компьютере при помощи диспетчера устройств.

В данном примере всего один COM порт, на самом деле их может быть два или вообще не быть. Этот факт не является дефектом, просто стандарт на обязательное присутствие COM порта был отменен в далеком 1999г. Однако это повод задуматься при выборе материнской платы для нового компьютера — если Вы собираетесь активно эксплуатировать COM порт, то желательно остановить свой выбор на материнской плате в которой есть хотя бы один COM порт. Отсутствие COM порта на компьютере не является серьезной проблемой. На рынке достаточно устройств при помощи которых, эту проблему можно решить, но об этом чуть попозже.

Итак COM порт обнаружен программно, а физически его не видно, он расположен на материнской плате и для его физической реализации нужна планка (посмотреть), которую придется либо сделать самостоятельно, либо купить в магазине.

Рис. 3 Вид разъемов COM порта для реализации под планку. На фото, материнская плата с двумя COM портами.

После подключения планки COM порта остается только проверить работоспособность COM порта.

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

Рис. 4 Внешний планок для работы на разных материнских платах.

Планки не взаимонезаменяемые, чаще всего встречался вариант I.

Рис. 5 Вариант I распайки кабеля планки COM порта Рис.6 Вариант II распайки кабеля планки COM порта

Нет связи компьютера с подключаемым устройством.

Для большинства современных устройств требуется только три провода для нормальной работы. Это RxD, TxD и земля. На разъемах DE9 и DB25 RxD, TxD всегда находятся на 2 и 3 контакте. Но если для компьютера все однозначно, на DE9 2-RxD 3-TxD, то для устройств подключаемых к компьютеру такой однозначности нет, но как правило это все те же контакты 2 и 3. А вот что однозначно, так это тот факт, что RxD компьютера должен прийти на TxD устройства и наоборот RxD устройства должен соединиться с с TxD компьютера. В принципе если перепутать контакты и подать неправильно сигналы — то ничего страшного не произойдет, COM порты не сгорят, просто устройство не будет общаться с компьютером.

Следует учесть тот фактор, что даже правильное соединение не гарантирует работоспособность связи. Причин может быть много, неправильно установлена скорость, несоблюдение протокола, неисправен COM порт и т.п.

Что бы исключить лишние факторы удостоверимся, что COM порт на компьютере рабочий.

Самое простое, это использовать программу Сommtest (скачать) и заглушку для проверки.

Одним из эффективных способов проверки — отправить данные в порт и самому же порту получить их обратно. Если данные вернулись в полном объеме — то порт можно считать исправным

Рис.7 Заглушка для проверки COM порта, сигналов Rx-Tx.

Заглушка представляет собой разъем DE9F, у которого контакты 2 и 3 соединены перемычкой. Суть теста заключается в том, что все отправленные данные должны вернутся обратно. При такой проверке не важно на какой скорости проходит тестирование, данные все равно будут приниматься на такой же скорости. Несомотря на то, что такой способ имеет серьезный недостаток — проверяется только канал Rx-Tx, все же есть и плюсы. Такой заглушкой можно лекго определить номер COM порта не разбирая системный блок, в случае если таких портов несколько.

Рассмотрим, как это делается.

Запускаем программу Сommtest (скачать)

Рис. 8 Рабочее окно программы Commtest

Рис. 9 Настройка программы Commtest

  1. Выбираем COM порт.
  2. Нажимаем клавишу Open для активизации клавиши Put.
  3. Выбираем байт для отправки. Желательно отправлять цифры, в нашем примере байт для отправки цифра «5» (Byte 53DEC или 35 HEX) во всех кодовых таблицах цифры читаются однозначно. Буквы и управляющие символы отправлять нежелательно.
  4. Выбираем количество байт для отправки. В нашем примере 1000, что означает, что при нажатии клавишу Put в порт будет отправлено 1000 байт, в нашем случае 1000 штук цифер «5».

Рис. 10 Программа Commtest готова к использованию.

Рис. 11 Программа Commtest обнаружила технологическую перемычку на COM порту. Рис. 12 Программа Commtest не обнаружила технологическую перемычку на COM порту. Порт COM1 неисправен, либо заглушка установлена на другом порту

Если COM портов несколько, то необходимо перебрать все COM порты которые присутствуют в диспетчере устройств, есть вероятность, что при открытии другого порта — связь появится. Таким образом Вы получаете номер порта на который установлена заглушка.

Внимание! Данная проверка проверяет только канал Rx-Tx и не является 100% гарантией того, что порт исправен, однако хотелось бы обратить внимание что 90% устройств работают именно только по этим проводам.
Внимание! Проверка на другом компьютере связь есть, проверка на проверяемом компьютере связи нет. Не является гарантией того, что COM порт неисправен. Пример кабель от ККМ Fprint-03К

Комплексная проверка COM порта на стороне компьютера.

Принцип такой проверки очень похож на рассмотренную выше проверку по каналу Rx-Tx, суть та же, с передатчика сигнал должен прийти в приемник, если сигнал прошел, то можно считать, что пара исправна. Из оставшихся 7 контактов,1 контакт это земля его мы не проверяем.
Остается 6 контактов, из них два передатчики (DTR, RTS) и четыре приемники (DCD, DSR, CTS, RI). Правило тут простое — передатчик должен прийти на приемник, логично предположить, что на один передатчик следует нагрузить по два приемника. Хотя можно и на один передатчик повесить три приемника, а на второй предатчик посадить только один приемник, как делать дело Ваше . Самое удобное, в плане изготовления это 4->1,9 и 7->6,8 проводов получается по минимуму.

Рис. 13 Технологическая заглушка для проверки COM порта, вид со стороны контактов. Рис. 14 Технологическая заглушка для проверки COM порта, вид со стороны пайки.

На рисунке для удобства синим цветом выделены передатчики.

Все в той же программе CommTest, но уже в другой части окна взводим флажок передатчика DTR и(или) RTS и смотрим, как изменяются соответствующие флажки приемника.

При изменении флажка DTR — должны взвестись флажки DCD и Ring, при сбросе флажка DTR – должны сбросится флажки DCD и Ring.

Рис. 15 Флажок DTR сброшен Рис. 16 Флажок DTR взведен, в примере не смотря на перемычку флажок Ring не взвелся, можно судить о не исправности приемника Ring

При изменении флажка RTS — должны взвестись флажки DSR и CTS, при сбросе флажка RTS – должны сбросится флажки DSR и CTS.

Рис. 17 Флажок DSR сброшен Рис. 18 Флажок DSR взведен
Рис. 19 Флажок DSR и DTR взведен

Как проверить передатчик – приемник Tx-Rx рассмотрено немного ранее.

Если данные события происходят можно считать, что COM порт стандарта RS232 со стороны компьютера полностью исправен.

Читайте также:  Windows не видит canon mf3110 как принтер
Оцените статью