Запись в com порт windows 10

Как добавить COM-порт в Windows 10? Как назначить COM-порт USB-устройству Windows 10? Откройте диспетчер устройств Windows. Нажмите ...

Как назначить COM-порт USB-устройству Windows 10?

  1. Откройте диспетчер устройств Windows.
  2. Щелкните Порты (COM и LPT), чтобы расширить выбор. …
  3. Щелкните правой кнопкой мыши устройство, название которого вы хотите изменить, и выберите «Свойства».
  4. Щелкните «Параметры порта», а затем нажмите кнопку «Дополнительно».

Найдите правильный COM-порт

Щелкните правой кнопкой мыши значок «Пуск» в Windows и выберите «Диспетчер устройств». Откройте раздел «Порты (COM и LPT)». Найдите «PI USB to Serial» и отметьте, какой COM-порт он использует.

Разверните раздел Порты (COM и LPT). Верно-щелкните COM-порт и выберите Свойства. Перейдите на вкладку «Параметры порта» и нажмите «Дополнительно». Измените номер COM-порта на доступный номер COM-порта.

Вы можете проверить, какое устройство использует какой COM-порт в диспетчере устройств. Он будет указан в списке скрытых устройств. В диспетчере устройств выберите View — Show Hidden Devices. Теперь, когда вы развернете раздел (ПОРТЫ) COM-портов, вы увидите все перечисленные здесь COM-порты.

РЕШЕНИЕ

  1. Перейдите в Диспетчер устройств Windows> Многопортовые последовательные адаптеры.
  2. Выберите адаптер и щелкните правой кнопкой мыши, чтобы открыть меню.
  3. Щелкните ссылку «Свойства».
  4. Откройте вкладку «Конфигурация портов».
  5. Нажмите кнопку «Настройка порта».
  6. Выберите номер порта и нажмите ОК.
  7. Нажмите OK, чтобы применить изменения.

Запустите диспетчер устройств и выберите «Действие»> «Добавить устаревшее оборудование».

  1. Выберите «Установить оборудование, которое я вручную выбрал из списка».
  2. Прокрутите вниз и выберите Порты (COM и LPT), затем нажмите Далее.
  3. Выберите порт связи.
  4. Нажмите «Далее», а затем «Готово».
  5. Элемент COM-портов теперь будет отображаться в разделе «Устройства и принтеры».

Откройте Диспетчер устройств на вашем главном компьютере / ПК. Подключите UPort к главному компьютеру (хосту). В диспетчере устройств разверните дерево контроллеров универсальной последовательной шины.. Вы увидите, что ваш собственный COM-порт указан как порт связи (COM1).

Как определить порты на моем компьютере?

Как определить используемые порты на компьютере

  1. Нажмите «Пуск», затем «Панель управления». Перейдите в «Диспетчер устройств». В XP вы щелкаете значок «Система», затем вкладку «Оборудование».
  2. Выберите раскрывающееся меню «Просмотр», затем выберите «Ресурсы по типу».
  3. Щелкните «Устройства ввода-вывода», чтобы увидеть список используемых портов.

Как проверить, работает ли порт?

Чтобы проверить, правильно ли работает COM-порт компьютера, вы можете сделать простой тест с обратной связью. (В тесте с обратной связью сигнал отправляется с устройства и возвращается к устройству или возвращается по шлейфу.) Для этого теста подключите последовательный кабель к COM-порту, который вы хотите проверить. Затем закоротите контакты 2 и 3 кабеля вместе.

USB-соединениям не присвоены номера COM-портов. если это не USB-последовательный адаптер, который затем назначит виртуальный com-порт #. Вместо этого им назначен адрес.

Ошибка «Не удалось открыть последовательный порт» означает, что вы не иметь правильный порт связи, выбранный в Проектах. Перейдите в «Параметры» -> «Параметры проекта» -> на вкладке «Связь» выберите правильный «Последовательный порт» в «Последовательные параметры».

Когда вы подключаете компьютерный интерфейс синхронизации к USB-порту, Windows назначает устройству номер COM-порта. Если вы используете другой USB-порт в следующий раз, когда вы его подключаете, или если вы также используете USB-принтер, им может быть назначен другой номер COM-порта каждый раз, когда вы их используете.

Содержание

  1. Настройка сом порта в windows
  2. Что подключают через com порт
  3. Установка драйверов com порт usb в Windows
  4. Настройка сом порта в windows
  5. Программирование COM порта
  6. §1.Описание COM портов персонального компьютера IBM XT.
  7. 1.1 Основные свойства COM портов.
  8. 1.2 Технические характеристики COM портов
  9. 1.3 Назначение сигналов СОМ порта по стандарту RS-232C.
  10. 1.4 Уровни сигналов UART
  11. 1.5 Передача данных через UART
  12. 1.6 Соединительные кабели
  13. 1.7 Организация обмена данных при аппаратном режиме синхронизации.
  14. 1.8 Организация обмена данных при программном режиме синхронизации.
  15. 1.9 Описание контрольных битов (Parity Control Bit):
  16. 1.10 ASCII кодовая таблица.
  17. 1.11 Аппаратная реализация СОМ портов.
  18. 1.12 Программная реализация UART.
  19. 1.13 Диагностический режим работы UART.
  20. §2 Программирование COM-порта.
  21. 2.1. Программирование в MS-DOS.
  22. 2.1.1. Программирование СОМ-порта прямым кодом микропроцессора.
  23. 1.1.2. Программирование СОМ-порта с помощью функций BIOS.
  24. 2.1.3. Программирование СОМ-порта с помощью средств MS-DOS.
  25. 2.2. Программирование в Windows.
  26. 2.2.1. Программирование СОМ-порта с помощью API функций Windows.
  27. 2.2.2. Программирование СОМ-порта с помощью внешних компонент ActiveX.
  28. Приложение 1
  29. Примеры программирования COM-порта в Win32 с помощью API функций.

Настройка сом порта в windows

Podklyuchaem com port usb v Windows

Через com порт ранее подключали модемы, мышки. Сейчас он используется для соединения с источниками бесперебойного питания, для связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами, с приборами систем безопасности объектов, а также с многими прочими устройствами.

С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель» (см. ниже). Использовался со времен MS-DOS для перекачки файлов с одного компьютера на другой, в UNIX для терминального доступа к другой машине, а в Windows (даже современной) — для отладчика уровня ядра.

Но в сетевом мире через com порт подключаются к консольному порту сетевых устройств (коммутаторов, роутеров, таких брендов как Cisco или Juniper)

Какая схема подключения к коммутаторам через последовательный порт. Есть переходники, например от фирмы st-lab На одном конце USB который вы подключаете к компьютеру, а второй это com порт.

Podklyuchaem com port usb v Windows 2

Далее к ком порту подсоединяется вот такой шнурок, com порт, а с другой стороны LAN RJ45, и вся схема дает нам один большой шнурок USB to LAN.

Podklyuchaem com port usb v Windows 3

К сожалению в Windows подключенные устройства, usb to com не всегда автоматически устанавливаются в системе, и приходится искать для них драйвера. Если вы покупали его сами, то в комплекте шел диск с драйверами, и можно воспользоваться им, если его нет, то смотрим как найти драйвера.

Открываем диспетчер устройств в Windows. Если не знаете как, то нажмите CTR+Pause breake, либо нажмите Win+R и в окне выполнить введите devmgmt.msc. Как видите у меня в разделе Порты (COM и LPT) нашелся на третьем COM порту неизвестный провод, и драйверов для него не нашлось у системы, о чем говорит нам желтый значок.

Podklyuchaem com port usb v Windows 4

Переходим в свойства данного устройства и выбираем ИД оборудования, у вас будет, что то по типу usbVID_067B&PID_2303&REV_0300, вот его вы копируете и ищите в гугле или яндексе.

Podklyuchaem com port usb v Windows 5

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

Далее вы уже можете использовать возможности com порта, с помощью таких утилит на подобие Putty, где вы выбираете пункт Serial и указываете нужный порт Com порта, посмотреть его можно в том же диспетчере устройств.

Podklyuchaem com port usb v Windows 6

Надеюсь вы научились и разобрались как подключать com порт usb в Windows.

Источник

Настройка сом порта в windows

Kak perenaznachit COM port dlya ustroystva v Windows 7

Как переназначить COM порт для устройства в Windows 7

Всем привет сегодня расскажу как переназначить COM порт для устройства в Windows 7. Windows запоминает устройства, с которыми вы работали ранее. Некоторые программы некорректно работают с COM портами с номерами 10 и выше. Что же делать в случае, если ваша плата получила такой номер? Как задать COM порт для устройства? Как удалить зарезервированные COM порты? Все это и многое другое, вас ожидает в описании данной статьи, все вопросы по данной теме я жду в комментариях, в конце статьи, я постараюсь дать на них развернутый ответ.

Открываем Мой Компьютер > Свойства

Kak perenaznachit COM port dlya ustroystva v Windows 7 01

Как переназначить COM порт для устройства в Windows 7-01

Выбираем «Дополнительные параметры системы».

Kak perenaznachit COM port dlya ustroystva v Windows 7 02

Как переназначить COM порт для устройства в Windows 7-02

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

Kak perenaznachit COM port dlya ustroystva v Windows 7 03

Как переназначить COM порт для устройства в Windows 7-03

Создаем новую переменную.

Kak perenaznachit COM port dlya ustroystva v Windows 7 04

Как переназначить COM порт для устройства в Windows 7-04

Добавляем переменную DEVMGR_SHOW_NONPRESENT_DEVICES. Устанавливаем для неё значение в 1.

Kak perenaznachit COM port dlya ustroystva v Windows 7 05

Как переназначить COM порт для устройства в Windows 7-05

Нажимаем везде «ОК» и выходим. Далее идём в Диспетчер устройств (Мой Компьютер > Свойства > Диспетчер устройств). В пункте меню «Вид» включаем отображение скрытых устройств.

Kak perenaznachit COM port dlya ustroystva v Windows 7 06

Как переназначить COM порт для устройства в Windows 7-06

Теперь нам стали видны наши неиспользуемые устройства, занимающие COM порты и мы можем удалить их.

Kak perenaznachit COM port dlya ustroystva v Windows 7 07

Как переназначить COM порт для устройства в Windows 7-07

В Диспетчере устройств (Мой Компьютер > Свойства > Диспетчер устройств) выбираем устройство, которому мы хотим изменить COM порт.

Kak perenaznachit COM port dlya ustroystva v Windows 7 08

Как переназначить COM порт для устройства в Windows 7-08

На вкладке «Параметры порта» нажимаем «Дополнительно».

Kak perenaznachit COM port dlya ustroystva v Windows 7 09

Как переназначить COM порт для устройства в Windows 7-09

Назначаем желаемый номер для COM порта и нажимаем «ОК».

Kak perenaznachit COM port dlya ustroystva v Windows 7 10

Как переназначить COM порт для устройства в Windows 7-10

Вот так вот просто переназначить COM порт для устройства в Windows 7.

Источник

Автор: Electron18
www.softelectro.ru &nbsp &nbsp
2009 &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
electron18@softelectro.ru

1.1 Основные свойства COM портов.

Работа коммуникационных портов реализована на универсальных асинхронных приемопередатчиках UART.
UART- это микросхемы, которые работают по стандарту RS-232C. Для СОМ порта компьютера используется 9-ти штырьковый разъем DE9p согласно стандарта TIA-574. В этом разъеме используется шесть сервисных сигналов и два канала обмена последовательными данными.

Основные свойства СОМ портов: 1.Полнодуплексный обмен данными. Означает, что можно одновременно передавать и принимать поток данных. Существуют два аппаратно и программно независимых канала передачи данных. Один канал для передачи данных, другой канал для приема данных. Причем COM-портам безразлично, чем занят процессор в это время, у них присутствуют собственные буферы приема и передачи данных. В этих буферах данные выстраиваться в очередь на передачу и очередь на прочтение данных процессором. Любая программа может обратиться к СОМ-порту и получить данные из его буфера, тем самым очистив его. Естественно буферы не безграничны, их размер задается при конфигурировании портов. Интерфейсы RS-485, Modbus, USB и др. (за исключением сетевых протоколов) являются полудуплексными и физически не способны вести обмен данными в обоих направлениях одновременно. 2.Набор сервисных сигналов Сервисные сигналы, предусмотренные стандартом RS-232c, позволяют организовать обмен данными между двумя устройствами одновременно в обоих направлениях. Сервисные сигналы представлены отдельными цифровыми входами и выходами с памятью. Например, кода по телефону на модем поступал звонок со станции, модем по 9-му контакту (RI) сообщал РС, что ему позвонили, и начиналась процедура обмена данных. Причем с помощью сервисных сигналов РС и модем могли приостановить обмен данных или заставить повторить их. Вариантов использования сервисных сигналов большое множество. Разработчик может использовать их по своему усмотрению. Например, с помощью этих сигналов удобно опрашивать контакты концевых выключателей или фотодатчиков, а также можно включать/выключать различные устройства или запитывать слаботочное устройство. 3.Программная независимость UART полностью реализован аппаратно и не зависит от программного обеспечения и ОС. 4. Асинхронная передача данных по каналу связи Означает то, что РС может послать данные на конечное устройство, не заботясь о синхронности их поступления. Конечное устройство само подстраивается под полученные данные. В синхронных протоколах для этого служит специальный сигнал, передающийся по отдельному проводу. В коммуникационных портах синхросигнал встроен в каждый передаваемый символ, в виде стартового и стопового бита. Метод, которым синхронизируются данные по стандарту RS-232С, стал общеупотребительным для всех асинхронных протоколов обмена данными.

1.2 Технические характеристики COM портов

Рис.1 Вид разъёмов СОМ1 и СОМ2 на материнской плате.

1.3 Назначение сигналов СОМ порта по стандарту RS-232C.

1.4 Уровни сигналов UART

Рис.3 Уровни сигналов UART по стандарту RS-232c

1.5 Передача данных через UART

Рис.4 Показана передача символов «0» «0» без паритета, с одним стоповым битом

На рисунке 4 хорошо видно, что стоповый бит разделяет два переданных символа. При необходимости можно увеличить этот интервал до 2 стоповых битов, если конечное устройство не успевает разделять символы.

Рис.5 Показана передача символов «0» «0» с проверкой на четность (EVEN), с одним стоповым битом

1.6 Соединительные кабели

Нуль-модемное соединение двух COM портов.

При таком соединении компьютеры(терминалы) соединяются между собой непосредственно через СОМ-порты, без использования модемов. Так как компьютеры обладают большой скоростью обработки данных, то синхронизировать их работу не нужно. Поэтому предполагается, что режим синхронизации обмена (Handshaking): 0-None, то есть сервисные сигналы не влияют на процедуры обмена данными. Для этого используется нуль-модемный кабель.

Рис.6 Нуль-модемный кабель для Handshaking = 0 (None)

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

Рис.7 Нуль-модемный кабель для любых режимов Handshaking

Если необходимо можно использовать полный кабель, но при этом СОМ-порты должны быть настроены на аппаратную синхронизацию обмена.
Данный режим используют когда устройство не успевает перерабатывать информацию полученную по СОМ-порту (меделенное устройство или PC). Этот режим позволяет останавливать обмен данных на время обработки полученной информации.

Рис. 8 Нуль-модемный кабель для аппаратного режима синхронизации Handshaking=2

Рис. 9 Типичный модемный кабель.

1.7 Организация обмена данных при аппаратном режиме синхронизации.

Аппаратный режим синхронизации обмена данными RTS/CTS (hardware flow control) Handshaking =2, использует сервисные сигналы RS-232C для управления потоком данных.

Рис.10 Организация обмена при аппаратной синхронизации.

Как видно из рис.10 модем использует сигнал CTS, который позволяет остановить передачу данных, если приемник не готов к их приему. Передатчик «выпускает» очередной байт только при включенной линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника.

1.8 Организация обмена данных при программном режиме синхронизации.

Программный протокол управления потоком XON/XOFF( Handshaking =1). Работает протокол следующим образом: если устройство, принимающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по обратному последовательному каналу посылает байт-символ XOFF (13hex). Противоположное устройство, приняв этот символ, приостанавливает передачу. Когда принимающее устройство снова становится готовым к приему данных, оно посылает символ XON (11hex), приняв который противоположное устройство возобновляет передачу. Время реакции передатчика на изменение состояния приемника по сравнению с аппаратным протоколом увеличивается, по крайней мере, на время передачи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа. Преимущество программного протокола заключается в отсутствии необходимости передачи управляющих сигналов интерфейса — минимальный кабель для двустороннего обмена может иметь только 3 провода. Недостатком данного метода является большее время реагирования и исключения из передаваемого потока двух символов (13hex, 11hex).

Существует смешанный метод синхронизации обмена данными RTS/XOn/Xoff (Handshaking =3), который представляет собой объединение двух предыдущих методов.

1.9 Описание контрольных битов (Parity Control Bit):

1.10 ASCII кодовая таблица.

Для кодирования символов передаваемых по RS-232С используется таблица, кодирующая использованные символы и управляющие знаки.

Рис.11 Стандартная кодовая таблица ASCII

Первые 32 символа этой кодовой страницы представляют собой управляющие символы, которые предназначены для управления модемом. Например, использование символов 17(11hex) и 19(13hex) были изложены выше, в программном способе управления обменом. Эти символы были разработаны в основном для управления печатающими устройствами и модемами

1.11 Аппаратная реализация СОМ портов.

Для аппаратной реализации СОМ портов по стандарту RS-232 используется специализированная микросхема UART. UART (Universal Asynchronous Receiver-Transmitter )- универсальный асинхронный приёмо-передатчик. Микросхема i8250 установленная в IBM XT послужила началом целой серии микросхем UART, которые устанавливались на материнские платы PC.

Микросхемы выпускались разными фирмами производителями: Intel, National Semiconductor, Maxim и др.

Рис.12 Стандартная схема включения UART PC16550D с микропроцессором Intel 8088

1.12 Программная реализация UART.

адрес DLAB чтение/запись Название регистра
00h 0 WR THR(Transmit Holding Register)-регистр данных ожидающих передачи
00h 0 RD RBR(Receiver Buffer Register)- буферный регистр приемника
00h 1 RD/WR DLL(Divisor Latch LSB)-младший байт делителя частоты
01h 1 RD/WR DIM(Divisor Latch MSB)-старший байт делителя частоты
01h 0 RD/WR IER(Interrupt Enable Register)-регистр разрешения прерывания
02h х RD IIR(Interrupt Identification Register)-регистр идентифицирующий прерывания
02h х WR FCR(FIFO Control Register)-регистр управления режимом FIFO
03h x RD/WR LCR(Line Control Register)-регистр управления линией связи
04h x RD/WR MCR(Modem Control Register)-регистр управления модемом
05h x RD/WR LSR(Line Status Register)-регистр состояния линии связи
06h x RD/WR MSR(Modem Status Register)-регистр состояния модема
07h x RD/WR SCR(Scratch Pad Register)-регистр временного хранения

Таблица 3. Регистры UART.

Рис.13 Функциональная схема UART PC16550.

THR-регистр данных ожидающих передачи(только для записи)
(Transmit Holding Register)

Рис.14 Регистр THR (Адрес=00h, DLAB=0, WR)

RBR- буферный регистр приемника(только для чтения)
(Receiver Buffer Register)

Рис.15 Регистр RBR (Адрес=00h, DLAB=0, RD)

DLL-младший байт делителя частоты :16 (чтение/запись)
(Divisor Latch LSB)

Рис.16 Регистр RBR (Адрес=00h, DLAB=1, RD/WR)

&nbsp &nbsp &nbsp &nbsp В это регистре находится младший байт делителя частоты деленного на 16.

DIM-старший байт делителя частоты :16 (чтение/запись)
(Divisor Latch MSB)

Рис.17 Регистр RBR (Адрес=01h, DLAB=1, RD/WR)

&nbsp &nbsp &nbsp &nbsp В этом регистре находится старший байт делителя частоты деленного на 16.
В микросхеме UART частота задающего кварца делится на делитель частоты(Decimal Divisor),который получается из двухбайтового числа (DIM,DLL) умноженного на 16. Таким образом делитель частоты задает скорость обмена данных через UART.
Записью в регистры DIM и DLL старшего и младшего байта этого двухбайтового числа вы зададите скорость обмена СОМ-порта в бит/сек.
Для кварца UART частотой f=1,8432 МГц, делитель частоты:16 считается по формуле:

D=115200/V, где V-скорость в бит/сек, D=делитель частоты:16

Для кварца UART частотой f=24 МГц, делитель частоты:16 считается по формуле:

D=1 500 000/V, где V-скорость в бит/сек, D=делитель частоты:16

1,8432 МГц 24 МГц
Скорость, бит/сек делитель:16 DIM DLL делитель:16 DIM DLL
50 2304 09h 00h 30000 75h 30h
75 1536 06h 00h 20000 4Eh 20h
110 1047 41h 07h 13636 35h 44h
150 768 03h 00h 10000 27h 10h
300 384 01h 80h 5000 13h 88h
600 192 00h C0h 2500 09h C4h
1 200 96 00h 60h 1250 04h E2h
1 800 64 00h 40h 833 03h 41h
2 000 58 00h 3Ah 750 02h EEh
2 400 48 00h 30h 625 02h 71h
3 600 32 00h 20h 417 0h A1h
4 800 24 00h 18h 312 01h 38h
7 200 16 00h 10h 208 00h D0h
9 600 12 00h 0Ch 156 00h 9Ch
14 400 8 00h 08h 104 00h 68h
19 200 6 00h 06h 78 00h 4Eh
28 800 4 00h 04h 52 00h 34h
38 400 3 00h 03h 39 00h 27h
57 600 2 00h 02h 26 00h 1Ah
115 200 1 00h 01h 13 00h 0Dh
250 000 x x x 6 00h 06h
300 000 x x x 5 00h 05h
375 000 x x x 4 00h 04h
500 000 x x x 3 00h 03h
750 000 x x x 2 00h 02h
1 500 000 x x x 1 00h 01h

Таблица 4. Делитель частоты для UART PC16550.

Как видно из таблицы 4, СОМ порт ПК (с UART 16550 и выше) может работать на скорости до 1,5Mb/s.

IER-регистр разрешения прерывания(чтение/запись)
(Interrupt Enable Register)

Рис.18 Регистр IER (Адрес=01h, DLAB=0, RD/WR)

&nbsp &nbsp &nbsp &nbsp Регистр разрешения прерываний дает разрешения определённым событиям вызывать прерывание микропроцессора.
Бит 0. RxD_IЕ — если RxD_IЕ=1,то разрешено прерывание для приема данных,это прерывание возникает когда необходимо принять символ из регистра RBR (в режиме FIFO — прерывание по тайм-ауту).

Бит 1. TxD_IE — если TxD_IEЕ=1,то разрешено прерывание для передачи данных, это прерывание возникает когда передающий буфер пуст и необходимо загрузить байт в регистр THR.

Бит 2. RxL_IЕ — если RxL_IЕ=1,то разрешено прерывание при обрыве линии связи или ошибке в приёме данных, это прерывание возникает когда в регистре состояния линии связи LSR будут выставлены биты этих ошибок.

Бит 3. Mod_IЕ — если Mod_IЕ =1,то разрешено прерывание при изменении состояния любого из входных сигналов RST,CTS,DCD,RI, это прерывание возникает когда состояние входных сигналов COM-порта изменились.

Бит 4..7. Не используются и всегда равны 0.

IIR-регистр идентифицирующий прерывания (чтение)
(Interrupt Identification Register)

Рис.19 Регистр IIR (Адрес=02h, RD)

Бит 0. IP(Interrupt Pending)— если IP=1, то все прерывания обработаны. Если IP=0,то есть необработанные прерывания.

Бит 1. I_ID0(Interrupt ID Bit0)- нулевой бит идентификатора прерываний
Бит 2. I_ID1(Interrupt ID Bit1)- первый бит идентификатора прерываний
Бит 3. I_ID2(Interrupt ID Bit2)- второй бит идентификатора прерываний

I_ID2 I_ID1 I_ID0 Приоритет идентификация
x 0 0 Четвертый Изменилось состояние модема, сбрасывается прочтением регистра MSR.
x 0 1 Третий Регистр THR пуск, ожидается байт от CPU. Сбрасывается записью байта в THR.
x 1 0 Второй Принят байт данных в регистр RBR, сбрасывается чтением регистра RBR.
x 1 1 Наивысший Обрыв линии или ошибка на линии, сбрасывается прочтением регистра LSR.

Таблица 5. Идентификация прерывания (обычный режим)

I_ID2 I_ID1 I_ID0 Прирритет идентификация
0 0 0 Четвертый Изменилось состояние модема, сбрасывается прочтением регистра MSR
0 0 1 Третий Буферный регистр передачи FIFO пуск, ожидается данные от CPU. Сбрасывается записью в передающий буфер FIFO
0 1 0 Второй Приемный буфер FIFO заполнился, сбрасывается чтением приемного буфера FIFO.
0 1 1 Наивысший Обрыв линии или ошибка на линии, сбрасывается прочтением регистра LSR
1 0 0
1 0 1
1 1 0 Второй индикатор тайм-аута (за 4-кратный интервал времени символа не передано и не принято ни одного символа, хотя в буфере FIFO имеется, по крайней мере, один символ). Сброс выполняется чтением приемного буфера FIFO.
1 1 1 Бит 4..5.Зарезервированны

Бит 6. FE_ID0(FIFOs Enabled ID Bit0)- нулевой бит идентификатора режима FIFO
Бит 7. FE_ID1(FIFOs Enabled ID Bit1)- первый бит идентификатора режима FIFO

FE_ID1 FE_ID0 Режим
0 0 обычный режим работы, данные передаются побайтно через регистры THR и RBR.
0 1
1 0 режим FIFO для UART 16550.
1 1 режим FIFO для UART 16550A.

Таблица 7. Идентификация режима FIFO

FCR-регистр управления режимом FIFO (запись)
(FIFO Control Register)

Рис.20 Регистр FCR (Адрес=02h, WR)

&nbsp &nbsp &nbsp &nbsp Это регистр используется только для записи, его данные расположены как в регистре IIR. Этот регистр используется, чтобы разрешить режимы FIFO, очистить буферы FIFO, задать уровень заполнения буферов FIFO, и выбрать тип DMA(прямого обращения к памяти).

Бит 0. TRFIFOE(Transmit And Receive FIFO Enable)— Запись 1 в этот бит допускает оба режима FIFO передатчика(XMIT) и приемника(RCVR). Сброс бита в 0 очистит все байты в обоих буферов FIFO. При изменении режима FIFO к 16450 и наоборот, буферы FIFO автоматически очищаются. Этот бит должен быть в 1, когда производится запись других битов регистра FCR, иначе они не будут запрограммированы.

Бит 1. RESETRF(Reset Receiver FIFO)-Запись 1 в этот бит очищает все байты в приемном буфере FIFO и сбрасывает его счетчик в 0. Сдвиговый регистр при этом не очищается. После этого 1 в этом бите сбрасывается в 0.

Бит 2. RESETTF(Reset Transmitter FIFO)- Запись 1 в этот бит очищает все байты в передающем буфере FIFO и сбрасывает его счетчик в 0. Сдвиговый регистр при этом не очищается. После этого 1 в этом бите сбрасывается в 0.

Бит 3. DMAE(DMA Enabled)- Запись 1 в этот бит приводит к изменению сигналов UART RxRDY и TxRDY с 0 к 1,при условии что FCR(bit0)=1. Эти аппаратные сигналы используются для организации правильной работы режима DMA в микропроцессорной системе.

LCR-регистр управления линией связи(запись/чтение)
(Line Control Register)

Рис.21 Регистр LCR (Адрес=03h, RD/WR)

&nbsp &nbsp &nbsp &nbsp Данный регистр служит для определения(задания) формата асинхронного обмена передачи данных. Также в этом режиме устанавливается бит DLAB, который позволяет программисту записывать и читать данные из нужных регистров.. Программист может не только записывать, но и читать содержимое регистра LCR. Способность чтения упрощает системное программирование и устраняет потребность в отдельной области в системной памяти для хранения характеристик линии.

Бит 0. SDB_ID0(Serial Data Bits ID0)- нулевой бит идентификатора количества бит в передаваемом символе.
Бит 1. SDB_ID1(Serial Data Bits ID1)- первый бит идентификатора количества бит в передаваемом символе.
С помощью этих битов задают количество бит в передаваемом или принимаемом символе.

SDB_ID1 SDB_ID0 количество бит в символе
0 0 5
0 1 6
1 0 7
1 1 8

Таблица 9. Количество бит в символе данных

Бит 2. STOP_B(Stop Bits)- Этот бит определяет число стоповых битов, переданных или полученных в каждом последовательном символе. Если бит STOP_B=0, то передается один стоповый бит. Если бит STOP_B=1, то стоповый бит равен двум для 6,7,8 битовых символов и полтора стоповых бита для 5-ти битовых символов. Приемник проверяет только первый стоповый бит, независимо от выставленных стоповых битов.

Бит 5. STICPAR (Sticky Parity)- Если STICPAR=0, то бит паритета бит генерируется в соответствии с паритетом выводимого символа. Если STICPAR=1, то постоянное значение контрольного бита: при EVENPAR=1 — нулевое, при EVENPAR=0 — единичное.

Бит 6. BRCON(Break Control)- Управляющий бит обрыва связи. Если BRCON=1, то вслучае возникновения перерыва в приеме данных, передатчик UART начнёт передавать в линию нули.

Бит 7. DLAB(Divisor Latch Access Bit)- Этот бит доступа к делителю частоты. Если DLAB=1, то можно обратиться к регистрам DIM, DLL в которых хранятся младший и старший байт делителя частоты :16.Если DLAB=0, то можно обратиться к регистрам THR,RBR,IER.

MCR-регистр управления модемом (запись/чтение)
(Modem Control Register)

Рис.22 Регистр MCR (Адрес=04h, RD/WR)

&nbsp &nbsp &nbsp &nbsp Этот регистр управляет интерфейсом модема или периферийным устройством.

Бит 4. LOOP(Loopback Mode Enable)-Бит режима диагностики. Если LOOP=0, то UART работает в обычном режиме. Если LOOP=1, то URAT работет в режиме диагностики с обратной связью, в этом режиме используются вспомогательные сигналы OUT1 и OUT2.

Бит 5..7. Зарезервированы.

Рис.23 Регистр LSR (Адрес=05h, RD/WR)

&nbsp &nbsp &nbsp &nbsp Данный регистр показывает состояние приемопередатчика.

Бит 0. DR(Receiver Data Ready) — Готовность данных приемника.DR=1 информирует о том, что данные приняты и загружены в регистр RBR или приемный буфер FIFO. Бит сбрасывается в ноль, когда все данные будут прочитаны CPU из регистра RBR или буфера FIFO.

Бит 1. OE(Overrun Error) — Бит ошибки переполнения. Бит указывает, что данные в регистре RBR не были прочитаны CPU прежде, чем следующий символ был передан в RBR, что привело к потере предыдущего символа. Бит устанавливается в OE=1 после обнаружения ошибки переполнения и сбрасывать всякий раз, когда SPU читает содержание регистра LSR.

Бит 2. PE(Parity Error) —Бит ошибки контрольного бита паритета.PE=1 если символ принят с ошибкой паритета.

Бит 3. FE(Framing Error) — ошибка кадра (неверный стопбит).

Бит 4. BD(Break Detected) — индикатор обрыва линии (вход приемника находится в состоянии 0 не менее чем время посылки символа).

Бит 5. THRE(Transmitter Holding Register Empty) — регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие символов в FIFO-буфере передачи. Может являться источником прерывания.

Бит 6. TEMPT(Transmitter Empty Status) — регистр передатчика пуст (нет данных для передачи ни в сдвиговом регистре, ни в буферных регистрах THR или FIFO).

Бит 7. FIFOE(FIFO Error Status) —ошибка принятых данных в режиме FIFO (буфер содержит хотя бы один символ, принятый с ошибкой формата, паритета или обрывом). В не FIFO-режиме всегда 0.

MSR-регистр состояния модема
(Modem Status Register)

Рис.24 Регистр MSR (Адрес=06h, RD/WR)

Бит 0. DCTS(Delta Clear To Send) — Изменение состояния сигнала CTS(очищен для передачи).Бит устанавливается в DCTS=1 при изменении сигнала CTS на входе микросхемы и сбрасывается при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора.

Бит 1. DDSR(Delta Data Set Ready) — Изменение состояния сигнала DSR(установка данных готова).Бит устанавливается в DDSR=1 при изменении сигнала DSR на входе микросхемы и сбрасывается при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора.

Бит 2. ТЕRI(Trailing Edge Of Ring Indicator) — Детектор заднего фронта сигнала RI(индикатор звонка). Бит устанавливается в TERI=1, когда сигнал на выводе микросхемы RI изменяет свой уровень с низкого на высокий. Бит сбрасывается в TERI=0 при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора.

Бит 3. DDCD(Delta Data Carrier Detect) — Изменение состояния сигнала DCD(обнаружен носитель информации).Бит устанавливается в DDCD=1 при изменении сигнала DCD на входе микросхемы и сбрасывается при прочтении регистра MSR микропроцессором. При установке бита в 1 генерируется прерывание микропроцессора.

SCR-регистр временного хранения (чтение/запись)
(Scratch Pad Register)

Рис.25 Регистр SCR (Адрес=07h, RD/WR)

&nbsp &nbsp &nbsp &nbsp Регистр временного хранения, на работу UART не влияет, предназначен для временного хранения данных (в UART i8250 отсутствует).

1.13 Диагностический режим работы UART.

&nbsp &nbsp &nbsp &nbsp

2.1. Программирование в MS-DOS.

&nbsp &nbsp В MS-DOS программировать СОМ порты можно всем спектром программных средств: прямым кодом микропроцессора(assembler), функциями BIOS, средствами операционной системы, языками программирования высокого уровня.

2.1.1. Программирование СОМ-порта прямым кодом микропроцессора.

&nbsp &nbsp Перед записью байта данных в регистр передатчика необходимо убедиться в том, что регистр хранения передатчика свободен, то есть убедиться в том, что передача предыдущего символа завершена. Признаком того, что регистр передатчика свободен, является установленный бит 5(THRE=1) регистра состояния линии LSR.
&nbsp &nbsp Аналогично тому как это делается при передаче данных, перед вводом символа из порта приемника необходимо убедиться в том, что бит 0 регистра LSR установлен (т.е. DR=1). Это означает, что символ принят из линии и находится в буферном регистре приемника.

1.1.2. Программирование СОМ-порта с помощью функций BIOS.

&nbsp &nbsp В BIOS имеются функции которые могут выполняться по команде программного прерывания микропроцессора INT 00h. INT 1Fh. Так как код этих функций находится в BIOS, то их выполнение возможно даже при отсутствии ОС на ПК.
Кроме этого, функции BIOS работают по номерам СОМ портов, а не по адресу ввода/вывода, что существенно удобней.

Рассмотрим функции BIOS которые применяются для работы с СОМ портом:

Функции по прерыванию INT 14h

&nbsp &nbsp Программа обработчик этого прерывания, как мы уже говорили, находится в BIOS по вектору 14h.
BIOS представляет собой энергонезависимую память ПК, поэтому загружать программу обрабатывающую прерывание не надо, она всегда находится в памяти.
Вызов функции осуществляется по номеру функции, который записывается в старший байт аккумулятора (AH).
Пример: Рассмотрим функции вызываемые INT 14h:

входные параметры INT14h AH=00h
регистр старший младший
AX 00h байт параметров связи
BX
CX
DX (n-1), где n-номер COM порта

DX: 0000h-COM1, 0001h-COM2, 0002h-COM3, 0003h-COM4

байт параметров связи
&nbsp 7 &nbsp &nbsp 6 &nbsp &nbsp 5 &nbsp &nbsp 4 &nbsp &nbsp 3 &nbsp &nbsp 2 &nbsp &nbsp 1 &nbsp &nbsp 0 &nbsp описание допустимые значения
x x x скорость, бод 000- 110
001- 150
010- 300
011- 600
100- 1200
101- 2400
110- 4800
111- 9600
x x проверка паритета 00- нет
01- нечетность
10- нет
11- четность
x длина стопового бита 0- 1
1- 2
x x кол. бит в символе 10- 7
11- 8

Пример вызова функции: После выполнения функция возвращает выходные параметры :

выходные параметры INT14h AH=00h
регистр старший младший
AX байт состояние линии LSR байт состояние модема MSR
BX
CX
DX
В качестве выходных параметром в регистр аккумулятора копируются регистры UART LSR(см.рис.23) и MSR(см.рис.24). Из выше сказанного видно, что работа с СОМ портом через функцию BIOS INT14h ограничена по скорости и по количеству бит в символе.

выходные параметры INT14h AH=01h
регистр старший младший
AX байт состояние линии LSR символ
BX
CX
DX

выходные параметры INT14h AH=02h
регистр старший младший
AX байт состояние линии LSR символ
BX
CX
DX

выходные параметры INT14h AH=03h
регистр старший младший
AX байт состояние линии LSR байт состояние модема MSR
BX
CX
DX

выходные параметры INT14h AH=04h
регистр старший младший
AX байт состояние линии LSR байт состояние модема MSR
BX
CX
DX

выходные параметры INT14h AH=05h
регистр старший младший
AX
BX регистр MCR
CX
DX

выходные параметры INT14h AH=05h
регистр старший младший
AX 05h 01h
BX регистр MCR
CX
DX (n-1), где n-номер COM порта

Запись регистра MCR

После выполнения функция возвращает выходные параметры :

выходные параметры INT14h AH=05h
регистр старший младший
AX байт состояние линии LSR байт состояние модема MSR
BX
CX
DX

2.1.3. Программирование СОМ-порта с помощью средств MS-DOS.

Хотя СОМ порт и является основным коммуникационным средством ПК, в MS-DOS практически очень мало программных средств для эффективной работы с портом. Рассмотрим основные программные средства операционной системы MS-DOS:

Функции по прерыванию INT 21h

Существуют четыре функции программного прерывания INT 21h для работы с СОМ портом: 03h,04h,3Fh,40h.
Перед началом описания работы этих функций ознакомимся с понятием «описатель». Описатель- это идентификатор последовательного устройства(объекта) или файла в системе MS-DOS. С точки зрения программы описатель это целое число, которое указывает на определённую программную структуру (объект), которая(который) обеспечивает работу этого устройства(объекта) с ОС. Кто «дружит» с Windows, знает насколько важную роль имеет описатель(дескриптор) в этой системе, но начало этого было в MS-DOS.
В MS-DOS первые номера описателей отданы стандартным последовательным устройствам:

описатель имя устройство
0 CON стандартное устройство ввода (клавиатура)
1 CON стандартное устройство вывода (дисплей)
2 CON стандартное устройство вывода ошибок (всегда CON)
3 AUX вспомогательное устройство (по умолчанию COM1)
4 PRN стандартный вывод на печать (по умолчанию LPT1)

Описатель номер 3 называется AUX и адрес ввода-вывода этого устройства находится в ячейках BIOS с адресами 40h,41h. Эти же ячейки определяют адрес ввода вывода СОМ1, если в эти ячейки записать число 2f8h, то устройством ввода-вывода по описателю 3 будет СОМ2. Таким образом, на описатель 3 (AUX) может быть назначено любое последовательное устройство.

выходные параметры INT21h AH=03h
регистр старший младший
AX символ
BX
CX
DX Ввод символов по этой функции не буферизируется и должен опрашиваться на готовность данных в UART. Для чтения очередного символа необходимо убеждаться что 5-й бит регистра LSR равен 1 (DR=1).

Использование аппаратных прерываний

Использование команд MS-DOS

2.2. Программирование в Windows.

&nbsp &nbsp Программирование в операционных системах Windows 2000 и выше отличается от программирования в MS-DOS. Во-первых, COM1-COM4 в этих системах не имеет стандартных адресов ввода вывода и стандартных номеров прерываний, Windows автоматически распределяет ресурсы для COM-портов. Поэтому если вы захотите программировать СОМ-порт через порты ввода-вывода, вам понадобиться, сначала определить ресурсы которые занимает СОМ-порт на данном ПК. Во-вторых, Windows не дает прямой возможности работать с портами ввода-вывода, это возможно только при программировании на уровне ядра ОС (что тоже не просто). В принципе такой вариант программирования возможен, то есть пишите драйвер ядра для работы с портами ввода-вывода и программу для работы с СОМ-портом работающем через этот драйвер.

&nbsp &nbsp Но, не всё так плохо. Естественно разработчики Windows предусмотрели возможность работы с коммуникационными портами через пользовательский интерфейс Windows. Этот способ, наверное, даже проще чем программирование Сом-порта через порты ввода-вывода. В Windows к Сом-порту можно обратиться как к файлу(потоку). Достоинство этого способа очевидны: вам не надо думать о типе микросхемы UART, о номерах портов ввода-вывода и о номерах прерываний. ОС незаметно для программиста работает с аппаратной частью коммуникационного порта.

2.2.1. Программирование СОМ-порта с помощью API функций Windows.

Попробуйте, создать в проводнике папку или файл с именем «СОМ1», сделать это не получится. ОС Windows зарезервировала имена от СОМ1 до СОМ9 для работы с СОМ-портами.

Рассмотрим подробнее программирование СОМ-порта с помощью API-функций:

1. Для работы с СОМ-портом первое что надо сделать, это открыть порт.
Сделать это можно с помощью API функции CreateFile из библиотеки «kernel32» :
Эта функция создает новый объект и присваивает ему описатель, по которому с этим объектом можно будет работать. Пример описания функции CreateFile на языке Си:

Пример декларирования функции CreateFile на языке VB6:

Declare Function CreateFile Lib «kernel32» Alias «CreateFileA» (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Пример открытия СОМ1 в VB6:

Com_Handle = CreateFile(«COM1:», &HC0000000, 0, 0&, &H3, 0, 0)

Пример открытия СОМ1 в Си:

Com_Handle = CreateFile(«COM1», GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

2. После открытия СОМ порта можно передавать и принимать данные через этот СОМ-порт.
Для передачи данных используется API функция WriteFile из библиотеки kernel32.
Для приёма данных используется API функция ReadFile из библиотеки kernel32.

Пример описания функции ReadFile и WriteFile на языке Си:
Пример декларирования функции ReadFile и WriteFile на языке VB6:

Declare Function ReadFile Lib «kernel32» (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Boolean

Declare Function WriteFile Lib «kernel32» (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As Boolean

С помощью этих функций из программного кода можно читать или записывать данные в указанный буфер.
Пример чтения 255 байт из порта в массив на языке VB6:

Dim File_Buffer(255) As Byte ‘приемный буфер
Dim Com_Byte_Read As Long ‘количество принятых байт
Dim Retval As Boolean
Retval = ReadFile(Com_Handle, File_Buffer(0), 255, Com_Byte_Read, 0)

3. После окончания работы с портом его нужно закрыть.
Закрытие порта осуществляется API функцией CloseHandle из библиотеки kernel32.

Пример описания функции CloseHandle на языке Си:
Пример декларирования функции CloseHandleна языке VB6:

Declare Function CloseHandle Lib «kernel32» (ByVal hObject As Long) As Boolean

Пример закрытия порта на языке VB6:

Dim Com_Exit as Boolean
Com_Exit = CloseHandle(Com_Handle)

4. Настройка режима работы сом порта осуществляется с помощью структур данных, которые представляют из себя набор переменных разного типа. Структуруы загружаются и читаются с помощью API функций.
Рассмотрим основные структуры для настройки режимов работы сом порта:

Структура DCB определяет основные настройки СОМ порта.
В ней содержиться реальная информация из регистров UART. Для работы с DCB структурой используют API функции из библиотеки kernel32.:

BuildCommDCB— заполняет указанную структуру DCB значениями, заданными в строке управления устройством. Строка управления устройством использует синтаксис команды mode MS-DOS.
SetCommState— конфигурирует коммуникационное устройство согласно данным указанным в структуре DCB. Функция повторно инициализирует все аппаратные и управляющие настройки, но не опорожняет очереди вывода или ввода данных.
GetCommState— читает DCB структуру.

Данная структура задает временные параметры(задержки и таймауты) работы СОМ порта и определяет поведение функций ReadFile и WriteFile. Для работы с COMMTIMEOUTS структурой используют API функции из библиотеки kernel32.:

SetCommTimeouts— устанавливает параметры простоя для всех операций чтения и записи для заданного коммуникационного устройства.
GetCommTimeouts— извлекает данные о параметрах простоя для всех операций чтения и записи на заданном коммуникационном устройстве.

Структура которая сообщает статус СОМ порта после обнаружения ошибки связи. Для работы с COMMSTAT структурой используют API функции из библиотеки kernel32.:

ClearCommError— Функция ClearCommError извлекает информацию об коммуникационной ошибке и сообщает о текущем состоянии коммуникационного устройства. Функция вызывается тогда, когда происходит ошибка обмена информацией и сбрасывает флажок ошибки устройства, чтобы включить в работу дополнительные операции ввода и вывода данных (I/O).

Структура которая сообщает информацию о свойствах коммуникационного устройства. Для работы с COMMPROP структурой используют API функции из библиотеки kernel32:

2.2.2. Программирование СОМ-порта с помощью внешних компонент ActiveX.

&nbsp &nbsp Программирование работы СОМ порта с помощью внешних компонент один из наиболее распространённых и простых способов работы с СОМ портом. Внешний компонент это программный модуль, который выполняет заданные функций и обладает всеми параметрами программного объекта. Внешний компонент разрабатывается по технологии ActiveX, что позволяет ему встраиваться в любые проекты программ, написанных на языках программирования поддерживающих эту технологию. Практически все современные средства разработки программ поддерживают технологию ActiveX. Вы можете создавать проект своего приложения на C++, Delphi, VB, 1C,MS-Office и для работы с СОМ портом подключить готовую внешнюю компоненту. При этом вам не нужно разбираться, как работает СОМ порт, это делает программный объект внешней компоненты, разработчик только использует свойства, методы и события этого объекта. Технология ActiveX является логическим продолжением dll, DDE, OLE, COM технологий.

&nbsp &nbsp Внешняя компонента(элемент ActiveX) является законченным программным продуктом и обладает всеми авторскими правами. Поэтому разработчику необходимо помнить, что подключая элемент ActiveX, вы подключаете код чужой программы к своему проекту, и соответственно часть вашей программы будет написана разработчиком компоненты, что требует оплаты. Внешних компонент для работы с СОМ портами написано большое количество. Необходимо определиться какую компоненту, и на каких условиях вы будете применять в своём проекте.

Как видно из приведенного примера работа с Сом портом, при использовании элемента ActiveX, достаточно проста.
Кроме указанных свойств компонент MSCOMM32.ocx имеет большое количество других свойств, событий и методов, которые полнофункционально реализуют работу СОМ порта в ОС Windows.

Приложение 1

Примеры программирования COM-порта в Win32 с помощью API функций.

Реализация простых функций com-порта:
&nbsp &nbsp-открытие порта
&nbsp &nbsp-настройка порта
&nbsp &nbsp-запись текста в порт
&nbsp &nbsp-чтение текста из порта
&nbsp &nbsp-закрытие порта

Напишем программу реализующие эти функции на различных языках программирования: VB6, MASM32, C

Исходник на VB6 COMAPIvb v.1.00 &nbsp Скачать &nbsp&nbsp
Исходник на MASM32 COMAPIas v.1.00 &nbsp Скачать &nbsp&nbsp
Исходник на C, скомпилирован на MS VC6++ COMAPIc v.1.00 &nbsp Скачать &nbsp&nbsp

Рис.28 Окно проекта COMAPI

Источник

Читайте также:  usb накопитель windows не удается завершить форматирование

Adblock
detector

Таблица 6. Идентификация прерывания (режим FIFO)

Написать программу, управляющую устройством через COM-порт, для MS-DOS не так сложно.
С платформой Win32 дело обстоит сложнее. Но только на первый взгляд. Конечно напрямую работать с регистрами портов нельзя, Windows это не позволяет, зато можно не обращать внимания на тонкости различных реализаций (i8251, 16450, 16550A) и не возиться с обработкой прерываний.

Открытие порта[править]

С последовательными и параллельными портами в Win32 работают как с файлами. Для открытия порта используется функция CreateFile. Эта функция предоставляется Win32 API. Ее прототип выглядит так:

  HANDLE CreateFile(
     LPCTSTR               lpFileName,
     DWORD                 dwDesiredAccess,
     DWORD                 dwShareMode,
     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
     DWORD                 dwCreationDistribution,
     DWORD                 dwFlagsAndAttributes,
     HANDLE                hTemplateFile
  );

lpFileName[править]

Указатель на строку с именем открываемого или создаваемого файла. Формат этой строки может быть очень «хитрым». В частности можно указывать сетевые имена для доступа к файлам на других компьютерах. Можно открывать логические разделы или физические диски и работать в обход файловой системы.

Последовательные порты имеют имена «COM1», «COM2», «COM3», «COM4», «COM5», «COM6», «COM7», «COM8», «COM9». Для доступа к портам, чей номер больше 9, необходимо указывать имя порта как «\.COMx», где x — номер порта. Например, «\.COM72» (в нотации языка C/C++ строка будет выглядеть «\\.\COM72»). Такой синтаксис подходит для любого номера порта. Точно так же они назывались в MS-DOS. Параллельные порты называются «LPT1», «LPT2» и так далее.

dwDesiredAccess[править]

Задает тип доступа к файлу. Возможно использование следующих значений:

  • 0 Опрос атрибутов устройства без получения доступа к нему.
  • GENERIC_READ Файл будет считываться.
  • GENERIC_WRITE Файл будет записываться.
  • GENERIC_READ|GENERIC_WRITE Файл будет и считываться и записываться.

dwShareMode[править]

Задает параметры совместного доступа к файлу. Коммуникационные порты нельзя делать разделяемыми, поэтому данный параметр должен быть равен 0.

lpSecurityAttributes[править]

Задает атрибуты защиты файла. Поддерживается только в Windows NT. Однако при работе с портами должен в любом случае равняться NULL.

dwCreationDistribution[править]

Управляет режимами автосоздания, автоусечения файла и им подобными. Для коммуникационных портов всегда должно задаваться OPEN_EXISTING.

dwFlagsAndAttributes[править]

Задает атрибуты создаваемого файла. Также управляет различными режимами обработки. При работе с портом этот параметр должен быть или равным 0, или FILE_FLAG_OVERLAPPED. Нулевое значение используется при синхронной работе с портом, а FILE_FLAG_OVERLAPPED при асинхронной, или, другими словами, при фоновой обработке ввода/вывода. Подробнее про асинхронный ввод/вывод я расскажу позже.

hTemplateFile[править]

Задает описатель файла-шаблона. При работе с портами всегда должен быть равен NULL.

При успешном открытии файла, в данном случае порта, функция возвращает дескриптор (HANDLE) файла. При ошибке [[|INVALID HANDLE VALUE]]. Код ошибки можно получитить вызвав функцию [[|GetLastError]].

Закрытие порта[править]

Открытый порт должен быть закрыт перед завершением работы программы. В Win32 закрытие объекта по его дескриптору выполняет функция CloseHandle:

BOOL CloseHandle(
     HANDLE hObject
     );

При успешном завершении функция возвращает не нулевое значение, при ошибке нуль.

Пример открытия/закрытия на языке C[править]

   #include <windows.h>
   //. . .
   HANDLE Port;
   //. . .
   Port = CreateFile(L"\\.\COM2", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
   if (Port == INVALID_HANDLE_VALUE) {
      MessageBox(NULL, "Невозможно открыть последовательный порт", "Error", MB_OK);
      ExitProcess(1);
   }
   //. . .
   CloseHandle(Port);
   //. . .

В данном примере открывается порт СОМ2 для чтения и записи, используется синхронный режим обмена. Проверяется успешность открытия порта, при ошибке выводится сообщение и программа завершается. Если порт открыт успешно, то он закрывается.

Структура DCB[править]

Основные параметры последовательного порта описываются структурой DCB. Временные параметры — структурой COMMTIMEOUTS. Существует еще несколько информационных и управляющих структур, но они используются реже. Настройка порта заключается в заполнении управляющих структур и последующем вызове функций настройки.

Основную информацию содержит структура DCB:

  typedef struct _DCB {
      DWORD DCBlength;            // sizeof(DCB)
      DWORD BaudRate;             // current baud rate
      DWORD fBinary:1;            // binary mode, no EOF check
      DWORD fParity:1;            // enable parity checking
      DWORD fOutxCtsFlow:1;       // CTS output flow control
      DWORD fOutxDsrFlow:1;       // DSR output flow control
      DWORD fDtrControl:2;        // DTR flow control type
      DWORD fDsrSensitivity:1;    // DSR sensitivity
      DWORD fTXContinueOnXoff:1;  // XOFF continues Tx
      DWORD fOutX:1;              // XON/XOFF out flow control
      DWORD fInX:1;               // XON/XOFF in flow control
      DWORD fErrorChar:1;         // enable error replacement
      DWORD fNull:1;              // enable null stripping
      DWORD fRtsControl:2;        // RTS flow control
      DWORD fAbortOnError:1;      // abort reads/writes on error
      DWORD fDummy2:17;           // reserved
      WORD  wReserved;            // not currently used
      WORD  XonLim;               // transmit XON threshold
      WORD  XoffLim;              // transmit XOFF threshold
      BYTE  ByteSize;             // number of bits/byte, 4-8
      BYTE  Parity;               // 0-4=no,odd,even,mark,space
      BYTE  StopBits;             // 0,1,2 = 1, 1.5, 2
      char  XonChar;              // Tx and Rx XON character
      char  XoffChar;             // Tx and Rx XOFF character
      char  ErrorChar;            // error replacement character
      char  EofChar;              // end of input character
      char  EvtChar;              // received event character
      WORD  wReserved1;           // reserved; do not use
  } DCB;

Эта структура содержит почти всю управляющую информацию, которая в реальности располагается в различных регистрах последовательного порта.

DCBlength[править]

Задает длину, в байтах, структуры DCB. Используется для контроля корректности структуры при передаче ее адреса в функции настройки порта.

BaudRate[править]

Скорость передачи данных. Возможно указание следующих констант: CBR_110, CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000. Эти константы соответствуют всем стандартным скоростям обмена. На самом деле, это поле содержит числовое значение скорости передачи, а константы просто являются символическими именами. Поэтому можно указывать, например, и CBR_9600, и просто 9600. Однако рекомендуется указывать символические константы, поскольку при компиляции программы проверяется корректность их имен.

fBinary[править]

Включает двоичный режим обмена. Win32 не поддерживает недвоичный режим, поэтому данное поле всегда должно быть равно 1, или логической константе TRUE (что предпочтительней). В Windows 3.1, если это поле было равно FALSE, включался текстовый режим обмена. В этом режиме поступивший на вход порта символ, заданный полем EofChar, свидетельствовал о конце принимаемых данных.

fParity[править]

Включает режим контроля четности. Если это поле равно TRUE, то выполняется проверка четности, при ошибке, в вызывающую программу, выдается соответствующий код завершения.

fOutxCtsFlow[править]

Включает режим слежения за сигналом [[|CTS]]. Если это поле равно [[|TRUE]] и сигнал [[|CTS]] сброшен, передача данных приостанавливается до установки сигнала CTS. Это позволяет подключеному к компьютеру прибору приостановить поток передаваемой в него информации, если он не успевает ее обрабатывать.

fOutxDsrFlow[править]

Включает режим слежения за сигналом [[|DSR]]. Если это поле равно TRUE и сигнал DSR сброшен, передача данных прекращается до установки сигнала DSR.

fDtrControl[править]

Задает режим управления обменом для сигнала [[|DTR]]. Поле может принимать следующие значения:

  • DTR_CONTROL_DISABLE         Сигнал DTR снимается при открытии порта. У открытого порта может быть изменён функцией EscapeCommFunction.
  • DTR_CONTROL_ENABLE          Сигнал DTR устанавливается при открытии порта. У открытого порта может быть изменён функцией EscapeCommFunction.
  • DTR_CONTROL_HANDSHAKE   Сигнал DTR автоматически устанавливается/снимается в ходе работы с портом. Не может быть изменён функцией EscapeCommFunction.

fDsrSensitivity[править]

Задает чувствительсть коммуникационного драйвера к состоянию линии [[|DSR]]. Если это поле равно TRUE, то все принимаемые данные игнорируются драйвером (коммуникационный драйвер расположен в операционной системе), за исключением тех, которые принимаются при установленом сигнале DSR.

fTXContinueOnXoff[править]

Задает, прекращается ли передача при переполнении приемного буфера и передаче драйвером символа XoffChar. Если это поле равно TRUE, то передача продолжается, несмотря на то, что приемный буфер содержит более XoffLim символов и близок к переполнению, а драйвер передал символ XoffChar для приостановления потока принимаемых данных. Если поле равно FALSE, то передача не будет продолжена до тех пор, пока в приемном буфере не останется меньше XonLim символов и драйвер не передаст символ XonChar для возобновления потока принимаемых данных. Таким образом это поле вводит некую зависимость между управлением входным и выходным потоками информации.

fOutX[править]

Задает использование XON/XOFF управления потоком при передаче. Если это поле равно TRUE, то передача останавливается при приеме символа XoffChar, и возобновляется при приеме символа XonChar.

fInX[править]

Задает использование XON/XOFF управления потоком при приеме. Если это поле равно TRUE, то драйвер передает символ XoffChar, когда в приемном буфере находится более XoffLim, и XonChar, когда в приемном буфере остается менее XonLim символов.

fErrorChar[править]

Указывает на необходимость замены символов с ошибкой четности на символ задаваемый полем ErrorChar. Если это поле равно TRUE, и поле fParity равно TRUE, то выполняется замена.

fNull[править]

Определяет действие выполняемое при приеме нулевого байта. Если это поле TRUE, то нулевые байты отбрасываются при передаче.

fRtsControl[править]

Задает режим управления потоком для сигнала RTS. Поле может принимать следующие значения:

  • RTS_CONTROL_DISABLE          Сигнал RTS снимается при открытии порта. У открытого порта может быть изменён функцией EscapeCommFunction.
  • RTS_CONTROL_ENABLE           Сигнал RTS устанавливается при открытии порта. У открытого порта может быть изменён функцией EscapeCommFunction.
  • RTS_CONTROL_HANDSHAKE   Сигнал RTS автоматически устанавливается/снимается в ходе работы с портом. Не может быть изменён функцией EscapeCommFunction. Сигнал RTS устанавливается, когда приемный буфер заполнен менее, чем на половину, и снимается, когда буфер заполняется более чем на три четверти.
  • RTS_CONTROL_TOGGLE          Задаёт, что сигнал RTS установлен, когда есть данные для передачи. Когда все символы из передающего буфера переданы, сигнал снимается.

fAbortOnError[править]

Задает игнорирование всех операций чтения/записи при возникновении ошибки. Если это поле равно TRUE, драйвер прекращает все операции чтения/записи для порта при возникновении ошибки. Продолжать работать с портом можно будет только после устранения причины ошибки и вызова функции ClearCommError.

fDummy2[править]

Зарезервировано и не используется.

wReserved[править]

Не используется, должно быть установлено в 0.

XonLim[править]

Задает минимальное число символов в приемном буфере перед посылкой символа XON.

XoffLim[править]

Определяет максимальное количество байт в приемном буфере перед посылкой символа XOFF. Максимально допустимое количество байт в буфере вычисляется вычитанием данного значения из размера приемного буфера в байтах.

ByteSize[править]

Определяет число информационных бит в передаваемых и принимаемых байтах. Число информационных бит может быть в диапазоне от 4 до 8.

Parity[править]

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

  • EVENPARITY     Дополнение до четности
  • MARKPARITY     Бит четности всегда 1
  • NOPARITY         Бит четности отсутствует
  • ODDPARITY       Дополнение до нечетности
  • SPACEPARITY   Бит четности всегда 0

StopBits[править]

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

  • ONESTOPBIT     Один стоповый бит
  • ONE5STOPBIT   Полтора стоповых бита
  • TWOSTOPBITS     Два стоповых бита

XonChar[править]

Задает символ XON используемый как для приема, так и для передачи. Обычно 0x11 (17).

XoffChar[править]

Задает символ XOFF используемый как для приема, так и для передачи. Обычно 0x13 (19).

ErrorChar[править]

Задает символ, использующийся для замены символов с ошибочной четностью.

EofChar[править]

Задает символ, использующийся для сигнализации о конце данных.

EvtChar[править]

Задает символ, использующийся для сигнализации о событии.

wReserved1[править]

Зарезервировано и не используется.

Замечания[править]

Если структура DCB содержит конфигурацию для последовательного порта, совместимого с 8250, то к значениям полей ByteSize и StopBits применяются следующие ограничения:

  • Количество информационных бит должно быть от 5 до 8.
  • Не допускается использование 5 информационных бит с 2 стоповыми битами, также как 6, 7 или 8 информационных бит с 1,5 стоповыми битами.

Заполнение структуры DCB[править]

Структура COMMTIMEOUTS[править]

winbase.h

typedef struct _COMMTIMEOUTS {
    DWORD ReadIntervalTimeout;          /* Maximum time between read chars. */
    DWORD ReadTotalTimeoutMultiplier;   /* Multiplier of characters.        */
    DWORD ReadTotalTimeoutConstant;     /* Constant in milliseconds.        */
    DWORD WriteTotalTimeoutMultiplier;  /* Multiplier of characters.        */
    DWORD WriteTotalTimeoutConstant;    /* Constant in milliseconds.        */
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

ReadIntervalTimeout — время в миллисекундах, задающее максимальное время, для интервала между поступлением двух символов по линии связи. Если интервал между поступлением каких-либо двух символов будет больше этой величины, операция ReadFile завершается и любые буферизированные данные возвращаются.

Чтобы операция ReadFile немедленно возвращала управление со всеми полученными данными (асинхронный режим) следует задавать следующие значения:

ReadIntervalTimeout=0xFFFFFFFF;
ReadTotalTimeoutConstant=0;
ReadTotalTimeoutMultiplier=0;

ReadTotalTimeoutMultiplier — Множитель, используемый, чтобы вычислить полный период времени простоя для операций чтения, в миллисекундах. Для каждой операции чтения, это значение умножается на затребованное число байтов, которые читаются.

ReadTotalTimeoutConstant — Константа, используемая, чтобы вычислить полный (максимальный) период времени простоя для операций чтения, в миллисекундах. Для каждой операции чтения, это значение добавляется к произведению члена структуры ReadTotalTimeoutMultiplier и прочитанного числа байтов.

Значение нуля и для члена ReadTotalTimeoutMultiplier, и для члена ReadTotalTimeoutConstant указывает, что полное время простоя не используются для операций чтения.

WriteTotalTimeoutMultiplier — Множитель, используемый, чтобы вычислить полный период времени простоя для операций записи, в миллисекундах. Для каждой операции записи, это значение умножается на число записываемых байтов.

WriteTotalTimeoutConstant — Константа, используемая, чтобы вычислить полный период времени простоя для операций записи, в миллисекундах. Для каждой операции записи, это значение добавляется к произведению члена структуры WriteTotalTimeoutMultiplier и записанного числа байтов.

Значение нуля и для члена WriteTotalTimeoutMultiplier, и для члена WriteTotalTimeoutConstant указывает, что полное время простоя не используются для операций записи.

Заполнение структуры COMMTIMEOUTS[править]

Вариант 1: (максимальная задержка при чтении и записи = TIMEOUT)

 	COMMTIMEOUTS CommTimeOuts;
 	CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
 	CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
 	CommTimeOuts.ReadTotalTimeoutConstant = TIMEOUT;
 	CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
 	CommTimeOuts.WriteTotalTimeoutConstant = TIMEOUT;

Вариант 2: Инициализация значениями (без задержки при чтении)

 	COMMTIMEOUTS CommTimeOuts={0xFFFFFFFF,0,0,0,1500};

Пример настройки порта[править]

Структура COMMPORT[править]

Стандартный диалог настройки порта[править]

Для настройки параметров COM — порта может быть вызвано штатное окно Windows. Вызов осуществляется функцией CommConfigDialog(), которая в качестве параметров принимает имя настраиваемого порта, хендл родительского окна и указатель на структуру COMMCONFIG.
Следует отметить, что для корректного вызова окна, структура COMMCONFIG должна быть заполнена значениями заранее.
Настройку структуры можно выполнить вручную или при помощи функции GetCommConfig().
Например:

/* Получение существующих настроек */
unsigned long new_size = 0;
if (!GetCommConfig(port->handle, &port->settings,&new_size))
	goto error;
/* Вызов окна и установка новых параметров */
if (CommConfigDialog(port->name, 0, &port->settings)) {
	if (SetCommConfig(port->handle, &port->settings, port->settings.dwSize))
		return 1;
	goto error;
}

Выделение памяти для структуры COMMPORT[править]

Прием и передача данных[править]

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

CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

Предпоследний параметр dwFlagsAndAttributes должен быть равен 0.
После успешного открытия порта, данные могут быть считаны или записаны при помощи функций ReadFile() и WriteFile().

HANDLE port = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,
			OPEN_EXISTING, 0, NULL);
unsigned char dst[1024] = {0};

unsigned long size = sizeof(dst);
if(port!= INVALID_HANDLE_VALUE) 
	if(ReadFile(port,dst,size, &size,0))
		printf("nRead %d bytes",size);

Функция ReadFile/WriteFile осуществляет чтение/запись из файла (устройства) начиная с текущей позиции после окончания чтения обновляет указатель в файле.

BOOL ReadFile(
 HANDLE hFile, // хендл файла 
 LPVOID lpBuffer, //указатель на буфер 
 DWORD nNumberOfBytesToRead, // размер данных 
 LPDWORD lpNumberOfBytesRead, //размер считанных данных
 LPOVERLAPPED lpOverlapped //структура OVERLAPPED
);

Недостатком этого способа является то, что вызывая функцию ReadFile(), мы не знаем есть ли данные для чтения. Можно циклически проверять их наличие, но это приводит к дополнительным расходам времени ЦП.
Поэтому на практике часто удобней использовать асинхронный режим. Для этого при вызове функции CreateFile() параметр dwFlagsAndAttributes должен быть равен FILE_FLAG_OVERLAPPED.

CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,
		OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

Далее, необходимо настроить реакцию порта на события при помощи функции SetCommMask() и используя функции WaitCommEvent() и WaitForSingleObject() ожидать событие или тайм аут.
Например:

const int READ_TIME = 100;
OVERLAPPED sync = {0};
int reuslt = 0;
unsigned long wait = 0, read = 0, state = 0;
	
/* Создаем объект синхронизации */
sync.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);

/* Устанавливаем маску на события порта */
if(SetCommMask(port, EV_RXCHAR)) {
	/* Связываем порт и объект синхронизации*/
	WaitCommEvent(port, &state, &sync);
	/* Начинаем ожидание данных*/	
	wait = WaitForSingleObject(sync.hEvent, READ_TIME);
	/* Данные получены */		
	if(wait == WAIT_OBJECT_0) {
		/* Начинаем чтение данных */
		ReadFile(port, dst, size, &read, &sync);
		/* Ждем завершения операции чтения */
		wait = WaitForSingleObject(sync.hEvent, READ_TIME);
		/* Если все успешно завершено, узнаем какой объем данных прочитан */
		if(wait == WAIT_OBJECT_0) 
			if(GetOverlappedResult(port, &sync, &read, FALSE)) 
				reuslt = read;
	}
}
CloseHandle(sync.hEvent);

Сброс порта[править]

Пример настройки порта и выполнения чтения/записи данных[править]

Код для работы с COM-портом. Многострадальный, соответственно относительно простой и понятный, при этом обходит основные подводные камни. Надеюсь, может быть полезен.

tty.h[править]

 #ifndef TTY_H
 #define TTY_H

 #define NOMINMAX //иначе API windows определит макросы min и max, конфликтующие с std::max и std::min в vector
 #include <windows.h>

 #include <vector>
 #include <string>

 using namespace std;

 struct TTY {

 	TTY();
 	virtual ~TTY();

 	bool IsOK() const;
	
 	void Connect(const string& port, int baudrate);
 	void Disconnect();

 	virtual void Write(const vector<unsigned char>& data);
 	virtual void Read(vector<unsigned char>& data);
	
 	HANDLE m_Handle;

 };

 struct TTYException {
 };

 #endif

tty.cpp[править]

 #include "tty.h"
#include <iostream>
#include <assert.h>
#include <windows.h>

  using namespace std;

 static int TIMEOUT = 1000;

 TTY::TTY() {
 	m_Handle = INVALID_HANDLE_VALUE;
 }

 TTY::~TTY() {
 	Disconnect();
 }

  bool TTY::IsOK() const {
      return m_Handle != INVALID_HANDLE_VALUE;
  }

 void TTY::Connect(const string& port, int baudrate) {

 	Disconnect();
	
 	m_Handle =
 		CreateFile(
 		port.c_str(), 
 		GENERIC_READ | GENERIC_WRITE,
 		0,
 		NULL,
 		OPEN_EXISTING, 
 		FILE_ATTRIBUTE_NORMAL,
 		NULL);
	
 	if(m_Handle == INVALID_HANDLE_VALUE) {
 		throw TTYException();
 	}
	
 	SetCommMask(m_Handle, EV_RXCHAR);
 	SetupComm(m_Handle, 1500, 1500);

 	COMMTIMEOUTS CommTimeOuts;
 	CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
 	CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
 	CommTimeOuts.ReadTotalTimeoutConstant = TIMEOUT;
 	CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
 	CommTimeOuts.WriteTotalTimeoutConstant = TIMEOUT;

 	if(!SetCommTimeouts(m_Handle, &CommTimeOuts)) {
 		CloseHandle(m_Handle);
                m_Handle = INVALID_HANDLE_VALUE;
 		throw TTYException();
 	}
	
 	DCB ComDCM;
	
 	memset(&ComDCM,0,sizeof(ComDCM));
 	ComDCM.DCBlength = sizeof(DCB);
 	GetCommState(m_Handle, &ComDCM);
 	ComDCM.BaudRate = DWORD(baudrate);
 	ComDCM.ByteSize = 8;
 	ComDCM.Parity = NOPARITY;
 	ComDCM.StopBits = ONESTOPBIT;
 	ComDCM.fAbortOnError = TRUE;
 	ComDCM.fDtrControl = DTR_CONTROL_DISABLE;
 	ComDCM.fRtsControl = RTS_CONTROL_DISABLE;
 	ComDCM.fBinary = TRUE;
 	ComDCM.fParity = FALSE;
 	ComDCM.fInX = FALSE;
        ComDCM.fOutX = FALSE;
 	ComDCM.XonChar = 0;
 	ComDCM.XoffChar = (unsigned char)0xFF;
 	ComDCM.fErrorChar = FALSE;
 	ComDCM.fNull = FALSE;
 	ComDCM.fOutxCtsFlow = FALSE;
 	ComDCM.fOutxDsrFlow = FALSE;
 	ComDCM.XonLim = 128;
 	ComDCM.XoffLim = 128;

 	if(!SetCommState(m_Handle, &ComDCM)) {
 		CloseHandle(m_Handle);
 		m_Handle = INVALID_HANDLE_VALUE;
 		throw TTYException();
 	}

 }

 void TTY::Disconnect() {

 	if(m_Handle != INVALID_HANDLE_VALUE)
        {
 	   CloseHandle(m_Handle);
           m_Handle = INVALID_HANDLE_VALUE;
 	}

 }

 void TTY::Write(const vector<unsigned char>& data) {

 	if(m_Handle == INVALID_HANDLE_VALUE) {
 		throw TTYException();
 	}

 	DWORD feedback;
 	if(!WriteFile(m_Handle, &data[0], (DWORD)data.size(), &feedback, 0) || feedback != (DWORD)data.size()) {
 		CloseHandle(m_Handle);
 		m_Handle = INVALID_HANDLE_VALUE;
 		throw TTYException();
 	}

 	// In some cases it's worth uncommenting
 	//FlushFileBuffers(m_Handle);

 }

 void TTY::Read(vector<unsigned char>& data) {

 	if(m_Handle == INVALID_HANDLE_VALUE) {
 		throw TTYException();
 	}

 	DWORD begin = GetTickCount();
 	DWORD feedback = 0;

 	unsigned char* buf = &data[0];
 	DWORD len = (DWORD)data.size();
	
 	int attempts = 3;
 	while(len && (attempts || (GetTickCount()-begin) < (DWORD)TIMEOUT/3)) {

 		if(attempts) attempts--;

 		if(!ReadFile(m_Handle, buf, len, &feedback, NULL)) {
 			CloseHandle(m_Handle);
 			m_Handle = INVALID_HANDLE_VALUE;
 			throw TTYException();
 		}

 		assert(feedback <= len);
 		len -= feedback;
 		buf += feedback;
	
 	}

 	if(len) {
 		CloseHandle(m_Handle);
 		m_Handle = INVALID_HANDLE_VALUE;
 		throw TTYException();
 	}

 }

using namespace std;

int main(int argc, char *argv[])
{
    TTY tty;
    tty.Connect("COM4",9600);
    
    for(int i=0;i<1000;i++) {
            
        std::vector<unsigned char> the_vectsor;
        the_vectsor.push_back(5);
        tty.Read(the_vectsor);
    
                              
        std::cout << (char)(the_vectsor[0]); //output text
    
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

В командной строке Windows есть возможность обращаться к COM-порту по имени вида COMx, где x — номер порта. Эта возможность пришла ещё из MS DOS.

Например, для отправки текста «123» устройству можно воспользоваться командой

echo 123 > COM1

В порт будут отправлены байты, содержащие коды символов из параметра команды echo.

Для указания параметров порта можно воспользоваться командой mode. Пример использования:

mode COM1 BAUD=9600 PARITY=n DATA=8

Это означает, что порт COM1 работает со скоростью 9600 бод, передаёт данные по 8 бит и не использует проверку чётности.

Судя по тегам, вы можете использовать C#. В этом случае просто воспользуйтесь классом SerialPort из пространства имён System.IO.Ports. Однако этот класс позволяет работать с портом лишь на локальной машине.

Если вам требуется сложное поведение, то вы можете из командной строки удалённо создать файл с программой на C# и скомпилировать его утилитой csc.exe при условии, что на удалённой машине установлена платформа .NET (консольный компилятор входит в комплект её поставки).

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

Запись:

PS> [System.IO.Ports.SerialPort]::getportnames()
COM3
PS> $port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
PS> $port.open()
PS> $port.WriteLine("Hello world")
PS> $port.Close()

Чтение:

PS> $port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
PS> $port.Open()
PS> $port.ReadLine()

Пример работы с портом из VBScript (к сожалению, не было возможности проверить на реальном железе).

Пример записи:

Dim port, fso
' Константы для режимов работы с файлом
Const ForAppending = 8
' Объект для работы с файлами
Set fso = CreateObject("Scripting.FileSystemObject")

' Открываем порт для записи
Set port = fso.OpenTextFile("COM4:9600,N,8,1", ForAppending)
' Запись строки
port.Write "test" ' См. также WriteLine
' Закрываем порт
port.Close

Пример чтения:

Dim port, fso
' Константы для режимов работы с файлом
Const ForReading = 1
' Объект для работы с файлами
Set fso = CreateObject("Scripting.FileSystemObject")

' Открываем порт для чтения
Set port = fso.OpenTextFile("COM4:9600,N,8,1", ForReading)
' Если не конец потока данных
if not port.AtEndOfStream then
    ' Выводим строку
    msgbox port.ReadAll ' См. также .Read и .ReadLine
end if
' Закрываем порт
port.Close

Подробнее о работе с COM-портом из командной строки (англ.)

Документация на класс SerialPort

Для программы или игры

Если вам нужно открыть порт для приложения или игры, но вы не знаете, какой именно порт вам нужен, то выполните нижеописанные действия:

  1. Пройдите все шаги, описанные в инструкции «При помощи брандмауэра», до момента создания правила. В типе генерируемого правила укажите вариант «Для программы».
    Создание правила для программы
    Указываем тип «Для программы»
  2. Пропишите путь до exe-файла, запускающего игру или приложение. Перейдите к следующему шагу и выполните действия 7–9 из инструкции «При помощи брандмауэра».
    Выбор программы
    Указываем путь до exe-файла

Драйвер prolific usb-to-serial comm port в windows 10, 8, 7 не работает

Данная статья описывает ряд проблем возникающих при работе со старыми адаптерами KLM и ELM327, которые использовались для подключения PC к автомобильным блокам управления. В частности многие автолюбители использовали и сейчас пользуются этими адаптерами для сброса ошибок на своих автомобилях.

Если кому-то будет интересна эта тема, то могу подробно расписать, так как сам активно занимался прошивкой и перепрограммированием ЭБУ на отечественных авто и иномарках. Сейчас же эти адаптеры стали довольно бюджетные и любой автолюбитель может сам позволить купить себе такой, только проблем с их работой меньше не становится.

Всё что будет описано ниже относится не только к автомобильным USB адаптерам, но и вообще к различному обородуванию которое подключается через USB шину и использует для своей работы драйвер Prolific USB-to-Serial Comm Port.

Несмотря на активное продвижение USB на рынке цифровых технологий, ряд устройств для подключения к ПК используют несколько устаревшие COM-порты. Поскольку в большинстве современных компьютеров отсутствует соответствующий разъём, выходом из ситуации становится переходник «USB-to-COM».

Как исправить код ошибки 10 prolific comm port при помощи драйвера

Чтобы избавиться от ошибки 10 Prolific вам необходимо выполнить несколько шагов, которые я опишу ниже. Важно понимать, что если ваш адаптер нормально работал до установки очередного обновления Windows, тогда вам будет необходимо откатить версию актуального драйвера до предыдущего рабочего варианта.

Если же драйвер у вас был установлен, но не работал корректно – вам будет необходимо удалить любую установленную в систему инсталляционную программу драйвера PL-2303, сам неработающий драйвер, и информационный (INF) файл, после чего приступать к нижеизложенной инсталляции.

Удалите некорректную инсталляцию драйвера

Необходимо учитывать, что модерные ОС Виндовс настроены на автоматическое обновление ваших драйверов без вашего разрешения. Потому не имеет значения, сколько раз вы вручную удалили ваш драйвер и перезагрузились – при следующем подключении адаптера USB-To-Serial ОС вновь установит неработающую версию драйвера.

Установка для 64-битной системы:

Установка для 32-битной системы:

Как открыть порт через командную строку

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

Сначала запускаем командную строку с правами Администратора:

Чтобы это сделать, надо кликнуть по кнопке Пуск правой кнопкой мыши и выбрать пункт Командная строка(Администратор). Если Вы пользуетесь расширенной версией командной строки, тогда выберите пункт Windows PowerShell (Администратор).

В открывшемся окне консоли Виндовс надо ввести команду:

netsh advfirewall firewall add rule name= protocol= localport= action=allow dir=IN

Рассмотрим на конкретном примере. Вот так выглядит команда для открытия порта TCP 12345:

netsh advfirewall firewall add rule name= protocol=TCP localport=12345 action=allow dir=IN

Для протокола UDP команда будет выглядеть так:

netsh advfirewall firewall add rule name= protocol=UDP localport=12345 action=allow dir=IN

Результат выполнения команды:

Вот ещё несколько полезных команд для работы с брандмауэром Windows 10 через командную строку:

Просмотреть весь список правил фаервола можно командой:

netsh advfirewall firewall show rule name=all

Чтобы полностью отключить брандмауэр используется команда:

netsh advfirewall set allprofiles state off

Включить его снова:

netsh advfirewall set allprofiles state on

Включение отдельных профилей:

netsh advfirewall set domainprofile state on
netsh advfirewall set privateprofile state on
netsh advfirewall set publicprofile state on

Выключение отдельных профилей:

netsh advfirewall set domainprofile state off
netsh advfirewall set privateprofile state off
netsh advfirewall set publicprofile state off

Запрет на все входящие соединения. При этом все исходящие разрешены:

Изменение имени виртуального рабочего стола в Windows 10Windows 10: переименование закрепленных элементов в быстрый доступ Проводника Windowsрекурсивно сменить владельца windows 7Как предотвратить Windows 10 пробуждение от сна при путешествии в сумке?

Как я могу SSH в «Bash на Ubuntu на Windows 10»?Как вернуть Photo Viewer в Windows 10?Установить ярлыки для изменения раскладки клавиатуры в Windows 10?Могу я передвинуть гиберфил.SYS на другой диск?Как делить любую папку без пароля в Windows 8/10 В домашней сети, Если используется учетная запись Microsoft?

Две синие стрелки в правом верхнем углу иконкиWindows 10 высокая загрузка памяти (неизвестная причина)Как выполнить масштабирование приложений Java на дисплее с высоким разрешением?Ярлык для выключения или перезагрузки Windows 10 менее чем за три нажатия клавишЗакрепление приложений на нескольких рабочих столах в Windows 10Дополнительные Настройки Office 2021Как изменить сочетание клавиш для переключения между виртуальными рабочими столами в Windows 10?

Отсутствует возможность включения или выключения BluetoothWindows 10 программы по умолчанию продолжают менятьсяWindows 10 не завершает работу должным образомКак очистить папку Windows Installer в Windows 10? Изменение яркости при отключенной» адаптивной яркости » в Windows 8.

1 / 10 с графикой Intel HD GraphicsГде находится диспетчер конфигурации sql в windows 10?В Windows 10 удаленный рабочий стол не работает должным образом (службы удаленных рабочих столов сейчас занята)Как Windows 10 может функционировать на 32 ГБ дискового пространства?

При помощи антивируса

Если у вас установлен сторонний антивирус, вы можете открыть порт через него. Некоторые компании не встраивают функции по работе с портами в свой антивирус, некоторые делают её платной. Но вы можете проверить, есть ли данная возможность в вашем антивирусе, выполнив нижеописанные действия, приведённые на примере антивируса Kaspersky:

  1. Разверните программу антивируса и перейдите к блоку настроек. Раскройте дополнительные настройки и перейдите к параметрам сети.
    Переход к настройкам сети Kaspersky
    Выбираем блок «Сеть»
  2. В блоке «Контролируемые порты» кликните по кнопке «Выбрать».
    Переход к настройкам контрольных портов
    Нажимаем кнопку «Выбрать»
  3. Вы увидите список активированных портов. Также здесь можно получить некоторую информацию о них и закрыть ненужные, используя кнопку «Удалить». Для перехода к открытию нового порта используйте кнопку «Добавить».
    Добавление порта в Kaspersky
    Кликаем по кнопке «Добавить»
  4. Пропишите произвольное название и точный номер порта. Укажите статус «Активен» и сохранение изменения.
    Выбор порта в Kaspersky
    Указываем имя, статус и номер

Готово, порт открыт. Можно начинать проброс при помощи настроек роутера.

При помощи брандмауэра (firewall)

Брандмауэр (второе название — Firewall) – антивирус в мире интернета. Эта программа защищает компьютер от вторжений, исходящих со стороны сети. Поскольку порты передают данные по интернету, брандмауэр обязан следить за ними.

Стандартный брандмауэр встроен в Windows и является частью защитника — антивируса, по умолчанию вшитого в операционную систему. Если у вас установлен сторонний антивирус, то у него, скорее всего, будет свой брандмауэр. Но не всегда у внешних брандмауэров есть функция, позволяющая открыть порт, поэтому воспользуемся стандартным.

Учтите, сторонний интернет-защитник может перекрывать действия встроенного. Отключите его на время использования порта. Если порт нужен долгое время, выполните нижеописанные действия через сторонний, а не встроенный брандмауэр (смотреть пункт «При помощи антивируса»).

  1. Используя системную поисковую строку, отыщите и разверните панель управления.
    Переход к панели управления
    Открываем панель управления
  2. Воспользуйтесь встроенной поисковой строкой, расположенной в верхнем правом углу окна, чтобы отыскать раздел «Брандмауэр защитника Windows». Перейдите к нему.
    Переход к брандмауэру
    Открываем раздел «Брандмауэр защитника Windows»
  3. Раскройте дополнительные параметры.
    Переход к дополнительным параметрам
    Открываем раздел «Дополнительные параметры»
  4. В зависимости от того, какой порт вы хотите создать (для входящих или исходящих соединений), перейдите в нужный подпункт, а после выберите функцию «Создать правило».
    Создание правила
    Нажимаем кнопку «Создать правило»
  5. Укажите, что правило создаётся для порта.
    Выбор типа правила
    Указываем, что правило для порта
  6. Выберите подходящий тип протокола, а после укажите номер порта, который хотите открыть. Если не знаете, какой номер вам нужен, обратитесь к пункту «Список портов и их задач».
    Выбор порта и протокола
    Указываем протокол и порт
  7. Поскольку мы хотим открыть порт, выберите вариант, позволяющих разрешить подключение.
    Выбор разрешения
    Указываем тип «Разрешить подключение»
  8. Прочитайте описание профилей и выберите тот из них, который подходит в вашей ситуации. Можно выбрать и все сразу.
    Выбор профиля
    Указываем подходящий профиль
  9. Придумайте произвольное название и небольшое описание, чтобы в будущем вы или люди, работающие с компьютером, могли понять, зачем был открыт данный порт.
    Название и описание порта
    Указываем имя и описание порта

Готово, после окончания операции в списке правил появится новый пункт, имеющий имя, придуманное вами. Порт открыт, можно начинать им пользоваться.

Применение и назначение портов

Для синхронизации и взаимодействия хостов (клиент-сервер) при использовании какого-либо программного обеспечения, а также для получения и передачи данных используются программные порты, которые выступают в роли туннелирования. Туннелирование – это процесс, в ходе которого создается защищенное соединение между взаимодействующими хостами.

Принцип действия заключен в том, что все данные в сегментированном виде посредством транспортных протоколов tcp или udp отправляются на назначенный сетевой интерфейс, а впоследствии и на порт. Транспортный протокол tcp включает в себя гарантированную доставку целостности данных на основе контрольной суммы.

Если назначенный порт программы, приложения или какого-либо сервера по каким-либо причинам недоступен, его необходимо открыть. Формально открытие порта производится для защищенного доверенного соединения, что предоставляет доступ для передачи данных.

Проверка портов в tcpview

Если вы не против установки стороннего приложения и хотите иметь больший контроль над тем, что происходит со всеми вашими портами, вы можете использовать легкое приложение под названием TCPView. Оно почти мгновенно выводит список процессов и связанных с ними портов.

В чём TCPView превосходит командную строку, так это в том, что вы можете активно видеть, как порты открываются, закрываются и отправляют пакеты. Просто обратите внимание на зеленые, красные и желтые блики. Вы также можете изменить порядок списка, щелкнув заголовки столбцов, что упростит поиск нужного процесса или отдельных процессов, соперничающих за один и тот же порт.

Если вы найдёте процесс или соединение, которое хотите закрыть, просто щелкните этот процесс правой кнопкой мыши. Затем вы можете выбрать «Завершить процесс», что является той же функцией, что и в диспетчере задач Windows. Или вы можете нажать «Закрыть соединение», чтобы оставить процесс открытым, но не давать ему прослушивать данный порт.

Источник

Проверка состояния портов

Чтобы узнать, в каком состоянии находятся все порты (открыты, закрыты, используются или отключены), можно использовать встроенные средства Windows 10.

  1. Используя системную поисковую строку, отыщите и разверните командную строку с правами администратора.
    Переход к командной строке
    Открываем командную строку
  2. Пропишите запрос netstat –aon | more и выполните его.
    Запрос списка портов
    Выполняем запрос netstat –aon | more
  3. Через несколько секунд развернётся список. Вас интересуют два последних столбца: в последнем указан номер порта, а в предпоследнем — его состояние.
    Список портов
    Появился список портов и состояний

Есть четыре вида состояния:

  • listening — порт слушается, то есть система следит за ним, опрашивает, проверяет, есть ли запросы на соединение. Если они появятся, начнётся установка соединения по данному порту;
  • established — порт используется успешно, сквозь него текут данные;
  • time wait — произошла ошибка, связанная со временем ожидания. Она может появиться из-за того, что во время соединения или прослушивания порт долго не отвечал;
  • close wait — соединение разрывается, то есть в скором времени порт перестанет использоваться и передавать информацию.

Суть и причина проблемы при возникновении ошибки с кодом 10

Компания «Prolific» прославилась в сети не своими чипами, а дисфункцией своих драйверов, возникающей при переходе пользователя с Windows 7 b 10. Как я уже упоминал выше, некоторые драйвера к чипам «Prolific» работают только с Виндовс 7 и ниже. И прекращают работать с более модерными версиями ОС (8,10).

Многие же пользователи, перейдя с 7 на 10 версию Windows, обнаружили, что их устройства с чипами «Prolific» перестали работать. А в Диспетчере устройств рядом с названием «Prolific usb-to-serial comm port» красуется восклицательный знак, сигнализирующий о возникшей ошибке с кодом 10.

Другим же фактором возникновения проблемы является подделка чипов «Prolific» малоизвестными китайскими производителями. Как и в случае настоящих чипов, фейковые чипы имеют тот же Vendor ID (VID_067B) и тот же «Product ID» (PID_2303), потому отличить подлинник от подделки бывает сложновато.

Для устранения фейковых чипов «Prolific» выпустила новые драйвера, которые не работают с ненастоящими чипами, делая их бесполезными. Одновременно данное решение привело к отказу от драйверной поддержки более ранних адаптеров компании.

Поэтому 64-битные драйвера «Prolific», распространяемые «Майкрософт» через службу обновлений Windows, версий 3.4.67.325, 3.4.25.218, 2.1.51.238, 3.4.62.293 не будут работать с большинством адаптеров. А в «Диспетчере устройств» пользователь будет видеть восклицательный знак и код ошибки 10. Или, в качестве альтернативы, вы не будете видеть ошибок в самом ДУ, но ваше устройство попросту не будет работать.

Это может быть полезным: Скачиваем и устанавливаем драйвер Qualcomm HS-USB QDLoader 9008.

Цифровая электроника вычислительная техника встраиваемые системы

COM-порт представляет собой отличное средство для связи этого самого компьютера с каким-нибудь радиолюбительским проектом или устройством, например, платой Arduino. И у заядлого радиолюбителя и электронщика таких проектов и устройств может быть целая куча.

Возможно, вы могли заметить, что всякий раз, когда вы вставляете в USB-разъем компьютера новую плату с чипом FTDI или другим подобным переходником COM-USB, выполняется обнаружение нового COM-порта. При частой работе с новыми платами количество таких виртуальных COM-портов может быть очень большим, а это не может не раздражать.

Поэтому сегодня мы научимся, как находить и удалять дополнительные COM-порты, накопленные за долгие годы радиолюбительского безумия.

Следует заметить, что приведенный в данном материале метод подходит только для операционных систем Windows и не подойдет для других, например, Linux или Android, поскольку там совершенно другие механизмы процесса распознавания и удаления COM-портов.

В первую очередь нужно зайти в командную строку с правами администратора. Для этого нажимаем «Пуск», печатаем «cmd» и на появившейся иконке нажимаем правую кнопку мыши и жмем «Запуск от имени администратора.

Теперь в командной строке печатаем магическую команду «set devmgr_show_nonpresent_devices=1», которая покажет нам скрытые устройства. Затем заходим в диспетчер устройств, напечатав «start devmgmt.msc».

В диспетчере устройств во вкладке «Вид», выбираем «Показать скрытые устройства».

Всё! Теперь вы можете выбрать любой неугодный вам порт и удалить его. Это освободит номер порта для других новых плат с конвертерами USB-TTL.

Таким образом, количество зарегистрированных COM-портов в вашей системе Windows можно существенно сократить, оставив только самые нужные порты, с которыми вы работаете в настоящее время. Это избавит вас от лицезрения наименования типа «COM137» при подключении очередной платы.

Как уже было отмечено выше, эта операция по удалению лишних COM-портов носит в большинстве случаев чисто эстетический характер. Но иногда это может быть полезным в практическом плане, поскольку в очень редких случаях существуют программные средства, которые поддерживают только COM-порты с номерами от 0 до 9.

Источник

Подводим итоги вышесказанному

В этой статье мы постарались дать вам ответ на вопрос: «как открыть порты на Windows 7 и 10?». Для этого нами было выбрано и описано самые востребованные способы решения данной проблемы с примерами.

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

Стандартные инструменты Windows оказались не самыми удобными в управлении, однако, предоставляют достаточный объем информации о процессах и занятых ими портах. Работа с Брандмауэром и консолью довольно проста и после нашего примера вы сможете самостоятельно повторить все это на своем компьютере.

CurrPorts выводит максимум данных о портах и процессах, позволяет удалять (освобождать) их, но не дает возможности открыть новые. На наш взгляд, софт отлично подойдет для отслеживания потенциальных угроз из Сети и их устранения.

Несмотря на отсутствие русскоязычного интерфейса, UPnP Wizard очень практична и может как создавать, так и освобождать порты. Единственным ограничением является требование к поддержке роутером UPnP интерфейса. Мы считаем, что этот вариант самый удобный для повсеместного использования.

Терминал (для работы с COM портом) под Windows.

    Зачем понадобилось создавать еще одну программу терминал ???

    На просторах интернета полно подобных программ ?!

    Что есть, то есть !

    Но есть маленькое НО, все дело в нюансах !

— Требуемый функционал был разбросан по нескольким программам и это было очень не удобно….

— Часть требуемых функций не было и вовсе…

— Часть программ банально падали в самый неподходящий момент….

— Часть функций реализованы с ошибками….

Так жить нельзя и работать тоже ….  :)

Значит надо создать свою программу, с необходимым функционалом.

 


    Данный проект задумывался как вспомогательный для тестирования большого проекта связанного

с телеметрией. В проекте требовалось принимать и передавать данные через COM порт компьютера.

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

разного рода устройств  !

    На текущий момент программа продолжает дорабатывается, исправляются ошибки, добавляются

новый функции.

    В данной статье будут публиковаться все изменения и нововведения сделанные в программе.


Краткое описание программы.

    Программа создана в среде Microsoft Studio 2008, на языке VB.

Работоспособность проверенна в следующих ОС: Windows XP, Windows 7-32/64Pro, Windows 11-64Pro.

Репозитарий программы представлен на GitHub, готовый бинарный файл(exe) в виде Zip архива.

Собранная программа представляет из себя один запускаемый файл.

Программа не требует установки и работает из любого места.

Программа не требует для запуска привилегий администратора.

Программа может:

1. Подключаться к любому com порту в системе.

2. Выставлять параметры работы com порта, включая нестандартные скорости работы порта

(при условии что драйвер windows поддерживает нестандартные скорости,

хотя как показала практика погрешность может быть очень большой. 

Например: При заданной 250000 — в железе получаем 256000, ;(

увы точнее делитель не устанавливается….).

3. Производить запись принимаемых данных в файл.

4. Передавать в порт строку с разными концовками в виде дополнительных кодов.

5. Циклически передавать в порт строку с заданным интервалом времени.

6. Передавать в порт файл.

7. Проиграть сценарий из файла (передача данных + задержка между данными).

8. Показывать состояние линий: CTS, DSR, RI, CD.

9. Изменять состояние линий: DTR, RST.

Программа пока не может:

1. Разбирать ESC последовательности.

2. Вести историю передаваемых строк.

3. Передавать в порт кода нажатых клавиш в окне приема и передачи.

4. Показывать ответы (RX от устройства) при проигрывании сценария из файла.

5. Вести в логах длинную историю (автоматическое укорачивание при достижении заданной длинны).

На текущий момент планов по развитию и доработки программы много.

Обычно в процесс работы с программой, во время отладки очередного устройства,

появляется необходимость в новом функционале.

Так в программу попадает новый функционал, продиктованный практикой.

При добавления нового функционала в программу, иногда добавляются и проявляются

глюки (по недосмотру), прошу отнестись с понимание :)

Глюки исправляются, и новая версия выкладывается в репозитарий.

Исходники на GiHub.

Текущая версия: Скачать (exe) в Zip архиве.

На основе данной программы была создана еще одна утилита для работы по протоколу PELCO-D,

для тестирования и управления камерами и поворотными платформами.


19-12-2022 

Текущая версия: v1.5.0.

[+]  Исправление: Замораживание интерфейса терминала при приеме потока данных.

12-12-2022 

Текущая версия: v1.4.1.

[+]  Исправление: Не верная полярность сигналов CTS/DSR/RI/CD.

[+]  Исправление: Терминал вылетает с ошибкой при запуске, если в системе нет СОМ портов.

5-12-2022 

Текущая версия: v1.4.0 (По просьбе коллеги был добавлен новый функционал).

[+]  Новое: Вывод в строку статуса состояния сигналов CTS/DSR/RI/CD.

[+]  Новое: Добавлена возможность изменения состояния сигналов RTS/DTR.

1-6-2022 

Текущая версия: v1.3.8

[+]  Исправление: Вывод в TXT и HEX строки.

3-8-2021 

Текущая версия: v1.3.7

[+]  Исправление: Зависание программы при отключении COM порта из системы (выдернули кабель…). 

29-7-2021 

Текущая версия: v1.3.6

[+]  Исправление: Перепутаны STOP BIT 1.5 <-> 2. 

22-7-2021 

Текущая версия: v1.3.5

[+]  Исправление: Не корректный вывод кодов r n. 

8-6-2021 

Текущая версия: v1.3.4

[+]  Исправление: Подвисание интерфейса при приеме не отображаемых кодов (0x00-0x19). 

[+]  Исправление: Конвертации кодов n   ->  nr. 

3-12-2020 

Текущая версия: v1.3.2

[+]  Вывод подробного описания СОМ портов. 

[+]  Проигрывание сценария из текстового файла. 

 Пример сценария (Файл TXT), формат:

 81 01 04 07 03 FF
 > 100
 81 01 04 07 02 FF

 Где:
 81 01 04 07 03 FF  — значения байт в TXT-HEX формате отправляемых в СОМ порт.
 > 100                      — Формирование паузы 100 мс.
 81 01 04 07 02 FF  — значения байт в HEX формате отправляемых в СОМ порт.

[+]  Перевод строки в TXT-HEX виде в байтовый массив и передача в СОМ порт. 


15-05-2019 

Версия: v1.2.2

[+]  Добавлена история ввода передаваемых строк. 


 16-12-2018 

Версия: v1.2.1

[+]  Внесены изменения в интерфейс. Часть функций вынесены в окно приема. 

[+]  Добавлена функция Вкл/Выкл печати символа с кодом 0x0A.

        0x0D + 0x0A     ->     0x0D.

[+]  Решено: При закрытии порта продолжалась передача в порт.

[+]  Добавлена подсказка при наведении курсора на элементы управления.

[+]  При запуске программы производится автоматический поиск СОМ портов в системе.


 4-09-2018 

Версия: v1.1.0

[+]  Добавлена передача в порт кодов нажатых клавиш в окне приема и передачи.

Create virtual COM ports in Windows 10 with USB Serial Converters

Most often, virtual COM ports in Windows 10 install automatically when a user connects a converter to a computer with internet access. Unfortunately, there are Serial Converter device drivers that won’t automatically install on certain operating systems.

This is not a major issue, as users can simply install the drivers utilizing the disk that comes with their specific Serial Converter.

Follow the instructions below to install Serial Converter device drivers from a disk:

  1. After inserting the CD into the disk drive, connect the USB Serial Converter to an open USB port.
  2. The “Found New Hardware Wizard” should run automatically, and will guide users through the remaining installation.
  3. Once prompted to connect with Windows Updates (which will ask to search for available drivers), choose the “No, not at this time” option.
  4. Follow all instructions to complete driver installation using the provided CD.
  5. After the VCP Driver installs successfully, users will find their USB Serial Converter in the Windows Device Manager.
    • ○ Under “Ports (COM & LPT)”, the device will be labeled as “USB Serial Port (COMx)
    • ○ Under “Universal Serial Bus controllers”: the device will be labeled as “USB Serial Converter”.

      Device Manager

  6. After installing the Virtual COM Port Driver, users should check their Windows Device Manager to ensure all drivers are installed properly.

    USB Serial Converter

  7. If drivers haven’t been installed correctly, a yellow exclamation icon is displayed under the “Ports (COM & LPT)” or “USB Serial Bus Controllers” menu.
  8. To fix any issues with installation: right-click the yellow exclamation icon, click “Update Driver”, and then search for the necessary driver (located on the disk provided with the USB Serial Converter).

How to change COM port settings in Windows 10

Some software applications are designed to only operate with designated serial ports. If you need to work with this kind of program, you may need to know how to find port numbers in Windows 10 so you can modify them if necessary.

In many cases when working with older devices or applications, you will be called upon to change COM port numbers to successfully operate the programs and peripherals. Some legacy equipment is only capable of working with specifically named serial ports.

The following procedure allows Windows users to change the COM port number for any attached device.

Just follow these simple steps on a Windows 10 machine to change the default COM port number.

  1. In Device Manager, navigate to the COM & LPT ports section and locate the device which needs its number modified. Right-click on the selected device and choose Properties in the displayed menu.

    Step 1

  2. Open the Port Settings in the Properties window and select the Advanced button.
    Step 3
  3. The Advanced Settings window is where you perform the number reassignment. You select an available port number from the list presented in the lower-left of the window. In our example, we are updating the device’s number from COM 3 to COM 5.
  4. Save the settings by clicking the OK button. This will close the open windows. The new number may not be assigned until the device is removed and reconnected to the computer.

Tip: Here is what you can try if COM ports are not showing in Device Manager:

  1. Open Control Panel.
  2. Search for “device” using the box in the top-right corner and select Device Manager from the results.

How to Reset com ports Windows 10

COM port (Communication port) is the title given to the port serial interface that’s located in a common (IBM compatible) computer.

There are occasions when computers offer users one or two physical COM ports (RS-232), but today’s models usually lack these physical COM ports. It should be known that COM ports don’t always refer to physical ports. Virtual ports are available as well. These ports are developed when a USB-to-UART adapter is used—most often utilized by FTDI and Croduino.

See below for multiple examples of such devices (AKA cell phones, USB modems, RFID readers, card readers, etc.)

In each instance where Windows registers a new device (one which possesses a new ID), Windows connects that device to an empty port, from COM 1 port if you didn’t have any connections before, then (COM2, COM3, COM4, ​​etc.—from 1 to 255).

Additionally, every port is exclusively assigned to a single device, remaining occupied (Windows displays the COM port as “in use”) even when the device isn’t connected anymore.

For a majority of the time, this isn’t an issue unless users attempt to run certain legacy software (software that struggles to function with COM-ports higher than 9.)

One example is when an app functions effectively with COM1 to 9, but fails if no unoccupied COM ports below COM10 are available.

Another problem can occur when certain devices require far too many COM ports to function.

Specific adapters could reserve up to 30 (or more) COM ports. This situation means users are forced to delete COM ports being used in Windows—or switch a currently occupied COM port to a different device.

The tutorial below will explain how to clear currently occupied COM ports, as well as how to disable the numbering of new ports.

  • Step 1: Hit Win+R (write regedit then click Enter).
  • Step 2: Search through folders:

    HKEY_LOCAL_MACHINESYSTEMCurrentConstrolSetControlCOM Name Arbiter.

  • Step 3: Located in the right panel, double-click the right click ComDB.

    ComDB

    Note: This opens a window displaying port addresses.

  • Step 4: Enter all zeros to reset.
  • Step 5: Click OK after confirming changes, and now the ports are reset.

    edit binary value

What is USB serial port driver FTDI

Virtual COM port (VCP) drivers make USB devices appear as additional COM ports that the PC can access. USB devices can be accessed by application software similarly to how it would access standard COM ports.

Future Technology Devices International Limited’s software is offered “as is”. Any and all described (or implied) warranties (including, but not limited to, implied warranties of merchantability and fitness for a particular purpose) are disclaimed.

In no event shall Future Technology Devices International Limited be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused, and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.

FTDI drivers can be used only in conjunction with products based on FTDI parts.

Содержание

  1. Как подключить ком порт через usb для windows 10
  2. Что подключают через com порт
  3. Установка драйверов com порт usb в Windows
  4. Драйвер Prolific USB-to-Serial Comm Port в Windows 10, 8, 7 не работает
  5. Что такое Prolific USB-to-serial Comm Port в ОС Windows 10, 8, 7?
  6. Суть и причина проблемы при возникновении ошибки с кодом 10
  7. Как исправить код ошибки 10 Prolific Comm Port при помощи драйвера
  8. Заключение
  9. Как спаять Переходник USB-COM самостоятельно. Вариант — 1
  10. Как спаять Переходник USB-COM самостоятельно. Вариант — 2
  11. Настройка драйвера и выбор порта для переходника USB-COM
  12. Готовые решения USB-COM адаптеров от производителей.
  13. Комментарии

Как подключить ком порт через usb для windows 10

Всех приветствую вновь на страницах своего блога и сегодня хочу рассказать, как подключить com порт usb в Windows . Поговорим, что это такое и для чего используется. Я думаю для начинающих сетевых администраторов, да и просто для продвинутых пользователей это будет интересно, для меня в свое время это было просто какой-то магией, позволяющая настраивать серверное оборудование.

Через com порт ранее подключали модемы, мышки. Сейчас он используется для соединения с источниками бесперебойного питания, для связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами, с приборами систем безопасности объектов, а также с многими прочими устройствами.

С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель» (см. ниже). Использовался со времен MS-DOS для перекачки файлов с одного компьютера на другой, в UNIX для терминального доступа к другой машине, а в Windows (даже современной) — для отладчика уровня ядра.

Но в сетевом мире через com порт подключаются к консольному порту сетевых устройств (коммутаторов, роутеров, таких брендов как Cisco или Juniper)

Какая схема подключения к коммутаторам через последовательный порт. Есть переходники, например от фирмы st-lab На одном конце USB который вы подключаете к компьютеру, а второй это com порт.

Далее к ком порту подсоединяется вот такой шнурок, com порт, а с другой стороны LAN RJ45, и вся схема дает нам один большой шнурок USB to LAN.

К сожалению в Windows подключенные устройства, usb to com не всегда автоматически устанавливаются в системе, и приходится искать для них драйвера. Если вы покупали его сами, то в комплекте шел диск с драйверами, и можно воспользоваться им, если его нет, то смотрим как найти драйвера.

Открываем диспетчер устройств в Windows. Если не знаете как, то нажмите CTR+Pause breake, либо нажмите Win+R и в окне выполнить введите devmgmt.msc. Как видите у меня в разделе Порты (COM и LPT) нашелся на третьем COM порту неизвестный провод, и драйверов для него не нашлось у системы, о чем говорит нам желтый значок.

Переходим в свойства данного устройства и выбираем ИД оборудования, у вас будет, что то по типу usbVID_067B&PID_2303&REV_0300, вот его вы копируете и ищите в гугле или яндексе.

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

Далее вы уже можете использовать возможности com порта, с помощью таких утилит на подобие Putty, где вы выбираете пункт Serial и указываете нужный порт Com порта, посмотреть его можно в том же диспетчере устройств.

Надеюсь вы научились и разобрались как подключать com порт usb в Windows.

Драйвер Prolific USB-to-Serial Comm Port в Windows 10, 8, 7 не работает

Данная статья описывает ряд проблем возникающих при работе со старыми адаптерами KLM и ELM327, которые использовались для подключения PC к автомобильным блокам управления. В частности многие автолюбители использовали и сейчас пользуются этими адаптерами для сброса ошибок на своих автомобилях. Если кому-то будет интересна эта тема, то могу подробно расписать, так как сам активно занимался прошивкой и перепрограммированием ЭБУ на отечественных авто и иномарках. Сейчас же эти адаптеры стали довольно бюджетные и любой автолюбитель может сам позволить купить себе такой, только проблем с их работой меньше не становится.

Всё что будет описано ниже относится не только к автомобильным USB адаптерам, но и вообще к различному обородуванию которое подключается через USB шину и использует для своей работы драйвер Prolific USB-to-Serial Comm Port.

Несмотря на активное продвижение USB на рынке цифровых технологий, ряд устройств для подключения к ПК используют несколько устаревшие COM-порты. Поскольку в большинстве современных компьютеров отсутствует соответствующий разъём, выходом из ситуации становится переходник «USB-to-COM». В данной статье я поясню, что это за драйвер Prolific для устройства USB-to-Serial Comm Port для операционной системы Windows 10, 8, 7. А также как можно решить ошибку с кодом 10, возникающую при работе с указанным драйвером.

Что такое Prolific USB-to-serial Comm Port в ОС Windows 10, 8, 7?

Набор программного обеспечения для установки, отладки и удаления из системы преобразователя интерфейсов USB-to-COM работает на чипах от компании «Prolific Technology Inc». Обычно это набор драйверов, который устанавливаются на PC, и обеспечивает корректное взаимодействие преобразователя интерфейсов с компьютером пользователя.

Указанный преобразователь используется для работы с устройствами, которые подключаются к PC через последовательный (COM) порт. Это различные программаторы, принтеры, девайсы для работы с GPS-навигацией, с ГБО и так далее.

Пример устройства с драйвером

Поскольку использующиеся по умолчанию драйвер к чипам компании «PL-2303H» и «PL-2303X» написаны «Prolific Technology Inc» ещё в 2012 году, они плохо работают с новыми Виндовс 8 и 10. В этом случае компания рекомендует использовать устройства на чипах «PL2303TA» и «PL-2303HXD» для корректной работы с современными ОС.

  1. Для скачивания драйверов к устройству с чипом от «Prolific» перейдите на сайт производителя prolific.com.tw.
  2. Выберите чип, который используется в вашем устройстве, и загрузите к нему соответствующий драйвер (обычно в форме архива).
  3. Распакуйте архив, запустите инсталлятор, установите драйвер на ваш PC.

Корректно установленный драйвер в ДУ

Читайте также: Скачать драйвер для PCI-контроллер Simple Communications Windows 7 64 bit.

Суть и причина проблемы при возникновении ошибки с кодом 10

Компания «Prolific» прославилась в сети не своими чипами, а дисфункцией своих драйверов, возникающей при переходе пользователя с Windows 7 b 10. Как я уже упоминал выше, некоторые драйвера к чипам «Prolific» работают только с Виндовс 7 и ниже. И прекращают работать с более модерными версиями ОС (8,10). Многие же пользователи, перейдя с 7 на 10 версию Windows, обнаружили, что их устройства с чипами «Prolific» перестали работать. А в Диспетчере устройств рядом с названием «Prolific usb-to-serial comm port» красуется восклицательный знак, сигнализирующий о возникшей ошибке с кодом 10.

Другим же фактором возникновения проблемы является подделка чипов «Prolific» малоизвестными китайскими производителями. Как и в случае настоящих чипов, фейковые чипы имеют тот же Vendor ID (VID_067B) и тот же «Product ID» (PID_2303), потому отличить подлинник от подделки бывает сложновато.

Для устранения фейковых чипов «Prolific» выпустила новые драйвера, которые не работают с ненастоящими чипами, делая их бесполезными. Одновременно данное решение привело к отказу от драйверной поддержки более ранних адаптеров компании.

Поэтому 64-битные драйвера «Prolific», распространяемые «Майкрософт» через службу обновлений Windows, версий 3.4.67.325, 3.4.25.218, 2.1.51.238, 3.4.62.293 не будут работать с большинством адаптеров. А в «Диспетчере устройств» пользователь будет видеть восклицательный знак и код ошибки 10. Или, в качестве альтернативы, вы не будете видеть ошибок в самом ДУ, но ваше устройство попросту не будет работать.

Это может быть полезным: Скачиваем и устанавливаем драйвер Qualcomm HS-USB QDLoader 9008.

Как исправить код ошибки 10 Prolific Comm Port при помощи драйвера

Чтобы избавиться от ошибки 10 Prolific вам необходимо выполнить несколько шагов, которые я опишу ниже. Важно понимать, что если ваш адаптер нормально работал до установки очередного обновления Windows, тогда вам будет необходимо откатить версию актуального драйвера до предыдущего рабочего варианта.

Если же драйвер у вас был установлен, но не работал корректно – вам будет необходимо удалить любую установленную в систему инсталляционную программу драйвера PL-2303, сам неработающий драйвер, и информационный (INF) файл, после чего приступать к нижеизложенной инсталляции.

Удалите некорректную инсталляцию драйвера

Необходимо учитывать, что модерные ОС Виндовс настроены на автоматическое обновление ваших драйверов без вашего разрешения. Потому не имеет значения, сколько раз вы вручную удалили ваш драйвер и перезагрузились – при следующем подключении адаптера USB-To-Serial ОС вновь установит неработающую версию драйвера. Потому перед установкой нижеизложенного драйвера рекомендуется отключить службу автоматического обновления Windows. Иначе последняя вновь установит неработающий драйвер.

Единственным 64-битным драйвером, который работает со всеми адаптерами «Prolific» является драйвер версии .3.3.2.102. Разберём способы его установки.

Установка для 64-битной системы:

  1. Скачайте инсталлер с сайта totalcardiagnostics.com;
  2. Отключите все адаптеры USB-To-Serial от вашего компьютера и запустите «PL2303_64bit_Installer.exe«;
  3. Когда вам будет предложено, подключите один из ваших адаптеров USB-To-Serial и нажмите на «Continue» (Далее);
  4. Перезагрузите ваш ПК.

Установка для 32-битной системы:

  1. Загрузите инсталлер с сайта totalcardiagnostics.com;
  2. Запустите программу установки. Если она предложит вам удалить драйвер, тогда выберите и удалите проблемный драйвер;
  3. Затем вновь запустите инсталлятор и установите правильный драйвер;

Также вариантом решения проблемы может стать способ, предложенный в данном видео:

Рекомендуем к прочтению: Как обновить драйвера онлайн.

Заключение

Драйвер Prolific USB-to-Serial Comm Port предназначен для обеспечения функционала устройств в Windows 10, 8, 7. Он использует COM-порт для подключения к пользовательскому ПК. Если же данный драйвер работает некорректно, рекомендуется установить его более старый аналог с помощью способов, описанных мной в данном материале.

Автор: Administrator вкл. 07 апреля 2012 .

Проблемы при «прошивке» ресиверов. Отсутствие COM порта. Использование ноутбука

В большинстве «старых» компьютеров и ноутбуков, приобретенных более 5лет назад, всегда было несколько COM портов (RS-232). По крайней мере, всегда был хотя бы один разъем «RS-232».


Рис. 1. Разъем на корпусе компьютера

К нему подключали различное внешнее оборудование: мыши, принтеры, модемы, специализированное оборудование. Поэтому проблем с подключением ресивера к компьютеру для «прошивки» не возникало. Достаточно было просто подключить, запустить программу для обновления ПО ресивера и спокойно сделать все необходимое.

В современных компьютерах разъем «RS-232» нередко отсутствует. Тут и возникают проблемы, зачастую весьма неприятные. В большинстве ресиверов нет иных способов «прошивки» кроме использования «RS-232». И «USB» вход для подключения внешнего флешь-накопителя есть не у всех ресиверов.

А иногда имеется и другая проблема: ноутбук имеет «COM» порт, но с ресиверами одной модели он работает, а с другими — нет. Это связано с нарушением производителем ноутбука стандарта передачи данных «RS-232». На это они идут в целях экономии энергии заряда аккумуляторной батареи. Если производитель ресивера был технически щепетилен и точен, то в ресивере будет установлена специальная микросхема для «COM» порта. Благодаря этой микросхеме ресивер будет работать и с ноутбуком, и с компьютером. Но установка микросхемы увеличивает общую стоимость изделия, а в последнее время производители экономят даже на этих мелочах! Поэтому и возникает проблема несовместимости ноутбуков и большинства ресиверов.

При использовании компьютера проблема отсутствия необходимых портов«RS-232» решается просто: необходимо приобрести дополнительный модуль с «COM» портами. Это плата, устанавливаемая в компьютер, называется «PIC—COM» или просто «плата СОМ портов».

Рис. 2. Плата PCI для компьютера с двумя «COM» портами

Если вы не сильны в компьютерах и ранее никогда не имели дело с установкой дополнительного оборудования в компьютер, то обратитесь к специалисту! Иначе можете «умертвить» дорогостоящее оборудование.

После установки платы в компьютер операционная система «Windows» — «ОС» присваивает новым установленным портам номер, например, «1», «2»…«25».

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

Рис. 3. Плата для ноутбука с «COM» портом

И тут есть подвох: в «старых» и «новых» ноутбуках два разных стандарта для дополнительного оборудования! Перед приобретением сверьтесь с инструкцией к вашему ноутбуку!

Если же вы не могли приобрести плату на компьютер или ноутбук, то остается один выход: «USB». Практически во всех современных моделях компьютеров имеется «USB» выход, как минимум два, а то и все восемь! В продаже имеются различные преобразователи «USB — COM».

Рис. 4. Преобразователь «USB — COM»

Рис. 5. Схема преобразователя «USB — COM»

Как спаять Переходник USB-COM самостоятельно. Вариант — 1

Ссылки по теме

Как сделать самому переходник USB-COM , который можно использовать для подключения конвертеров и прочих девайсов к компьютерам у которых нет «железного» COM-порта.
Внимание!
Переходник описанный ниже обеспечивает согласование только сигналов RX и TX.
Все прочие модемные сигналы не задействованы.
Большинству устройств, работающих без аппаратного управления потоком, этого более чем достаточно.
С конвертерами Pilot VAF/MAF переходник работает 100%

Поехали!

Для сборки вам потребуются следующие детали:

1. PL2303HX (USB-USART мост от Prolific)-1шт.
2. MAX232CSE (UART-RS232)-1шт.
3. Кварц 12.00 МГц-1шт.
4. Конденсаторы 10 нФ ( smd1206)-2шт.
5. Конденсаторы 1 мкФ (smd1206)-6шт.
6. Резисторы 27Ом ( smd1206) -2шт.
7. Резисторы 1.5КОм (smd1206)-1шт.
8. Разъем mini-USB -1шт.
9. Разеъем DB-9 папа – 1шт.
10. Фольгированный текстолит для платы 48*22мм – 1шт

Схема переходника

Печатная плата

Файлы схемы и печатки в формате Eagle PCB Editor можно скачать по этой ссылке

Сборка и настройка
Здесь собственно все элементарно — делаем плату , сверлим 4-ре отверстия и напаиваем все детальки.
В итоге у вас должен получиться вот такой вот переходничок:

Плату, чтобы не окислялась, можно задуть полиуретановым лаком или любым быстросохнущим автомобильным лаком, какой есть под рукой.
Далее этот девайс подключаем к порту USB компьютера.
Windows обнаружит новое устройство и попросит драйвера

Идем на сайт пролифика и выкачиваем самую последнюю версию дров

На момент написания статьи , самый последний драйвер был вот этот .

После скармливания винде драйвера , в системе должен появиться новый COM порт Prolific:

Теперь необходимо проверить работоспособность переходника

Для этого на переходнике в разъеме COM-порта , отверткой или проволочкой замыкаем между собой контакты 2 и 3 ( на самом разъеме обычно выбиты цифры с номерами контактов – приглядитесь повнимательнее ) Как вариант, можно напаять временную перемычку:

Далее запускаем программу «Гипертерминал» (Пуск->Программы->Стандартные->Связь->Гипертерминал)
На висте и семерке гипертерминала нет! Поэтому придется сходить в гугл/яндекс выкачать гипертерминал или любой его аналог.

Выбираем в настройках соединения наш новый сом-порт:

Далее гипертерминал предложит настроить параметры порта.
Выставляем :
-115200
-8
-N(нет)
-1
-управление потоком отсутствует

Теперь запускам соединение, выбираем английскую раскладку и пробуем чего-нибудь печатать.

На экране должны появиться символы нажимаемых клавиш:

Если буквы не появляются, то проверяйте монтаж

Вот собственно и все!
Теперь остается убрать перемычку с контактов 2-3 и можно пользоваться переходником по прямому назначению.

Как спаять Переходник USB-COM самостоятельно. Вариант — 2

Рисунок 1. Общий вид

Предлагаемый блок в собранном виде позволяет реализовать принцип: купил – подключил. Устройство позволит пользователям персональных компьютеров подключить к USB-порту устройства, работающие от COM-порта (RS232C).

Ориентировочная розничная цена: 540 руб

Технические характеристики

Напряжение питания от USB порта: 5 В.

Ток потребления: 20 мА.

Скорость соединения RS232C: 110-230000 бит/с

Интерфейс: USB1.1, USB2.0.

Поддерживаемые операционные системы: Win98, Win2000, WinXP, Vista, Linux и др.

Габаритные размеры устройства: 60×30 мм.

Комплект поставки

Блок переходника в сборе: 1.

Конструкция

Конструктивно переходник выполнен на двусторонней печатной плате из фольгированного стеклотекстолита, защищенной прозрачной термоусадочной трубкой.

Переходник обеспечивает все модемные сигналы: DSR, DTR, RTS, CTS, RI, DCD, а также основные сигналы RXD и TXD.

Описание работы блока

Принципиальная электрическая схема приведена на рис 2.

Центральная часть устройства – микроконтроллер CP2102 производства SILICON LABORATORIES. В качестве микросхемы драйвера уровней применен преобразователь MAX3243 производства фирмы Texas Instruments. Переходник обеспечивает все модемные сигналы: DSR, DTR, RTS, CTS, RI, DCD, а также основные сигналы RXD и TXD.

Установка устройства в ОС

Для установки драйверов для компьютера следует сначала скачать соответствующий вашей операционной системе драйвер.

Далее инсталлируйте драйвер на свой персональный компьютер. Подключите переходник. Операционная система обнаружит его и «попросит» драйвер, следует указать ей месторасположение этого драйвера (то место, куда он был распакован).

После успешной установки на переходнике должен засветиться светодиод, сигнализирующий готовность устройства к работе!

NEW Обновлённый драйвер от 25.01.2011 г. качать здесь.

1. Драйвер для Win Vista Вы можете скачать здесь.

2. Драйвер для Windows 2000/XP/Server 2003/Vista (v5.0) Вы можете скачать здесь.

3. Драйвер для Linux Вы можете скачать здесь.

4. Драйвер для Win98SE Вы можете скачать здесь.

5. Драйвер для OC Mac Вы можете скачать здесь.

6. an144sw.zip — c помощью данной программы можно изменить ID коды USB-COM переходника. Это нужно для того, чтобы получить возможность использовать несколько 8050 на одном ПК. Использовать только опытным пользователям! Вы можете скачать здесь.

ПРОВЕРКА РАБОТОСПОСОБНОСТИ BM8050 БЕЗ ВНЕШНЕГО ОБОРУДОВАНИЯ

Установите перемычки на контакты 2-3, 4-6, 7-8 СОМ-разъема ВМ8050 .

— Соедините устройство c USB-портом ПК.

— Посмотрите, какой порт ОС выделила для устройства, для чего войдите в Пуск — Настройка — Панель Управления — Система — Оборудование — Диспетчер Устройств — Порты (СОМ и LPT) — Silicon Labs CP210x USB to UART Bridge (COM1).

— Запустите стандартное приложение HiperTerminal для Windows из Пуск — Программы — Стандартные — Связь — HiperTerminal.

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

— Посмотрите, какой порт используется программой для связи с устройством, для чего войдите слева вверху Файл — Свойства и напротив «Подключаться через» выберите такой же порт, как и в Диспетчере Устройств (в нашем случае COM1).

— В этом же окне убедитесь, что выбрано управление потоком «Аппаратное» в программе, для чего нажмите кнопку в центре «Настроить» и в нижнем окне «Управление потоком» выберите «Аппаратное».

— Выйдите из настройки программы, для чего нажмите ОК, еще раз ОК.

— Напечатайте текст «Текст» в программе HiperTerminal, при этом на экране печатается текст «Текст», что подтверждает исправность устройства.

— Снимите перемычки с контактов 2-3, 4-6, 7-8 СОМ-разъема ВМ8050 .

— Напечатайте текст «Текст» в программе HiperTerminal, при этом на экране печать отсутствует, что подтверждает исправность устройства.

Настройка драйвера и выбор порта для переходника USB-COM

Тут нас поджидают первые проблемы: во-первых, ОС могла присвоить виртуальному порту слишком большой номер, например,«25». А программа для «прошивки» ресивера позволяет работать с номерами портов от одного до четырех. Во-вторых, не все преобразователи «USB -COM» могут работать с программой для «прошивки» и самим ресивером. Причина в том, что производители оборудования по-разному изготовили свои изделия и программы к ним. Проверять все преобразователи необходимо индивидуально под вашу программу и ваш ресивер. Часто бывает, что с одним оборудованием преобразователь работает, а с другим— нет.

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

Для изменения присвоенного ОС номера необходимо изменить его вручную. Для этого необходимо войти в «Диспетчер устройств»: «Пуск» — «Настройка» —«Панель управления» — «Система».

Рис. 15.6. «Панель управления»

В появившемся окне выбрать вкладку «Оборудование» и щелкнуть по кнопке «Диспетчер устройств». Откроется окно «Диспетчер устройств». В появившемся окне в древовидном списке выбрать строчку «Порты (COM и LPT). В раскрывшемся списке вы увидите все порты, имеющиеся в вашем компьютере. Выберите ваш виртуальный порт: «преобразователь «USB — COM». У меня преобразователь модели «Prolific».


Рис. 15.7. Список имеющихся портов

Щелкните по этой строчке ПРАВОЙ кнопкой мыши, в открывшемся окне выберите стройку «Свойства».

Рис. 15.8. Настройка выбранного порта

В появившемся окне выберите вкладку «Параметры порта». В строчке «Скорость» выберите «115200», затем щелкните по кнопке «Дополнительно».

Рис. 15.9. Настройка параметров порта

В нижней части открывшегося окна найдите вкладку «Номер COM порта».

Рис. 16. Изменение номера COM порта

Щелкните по вкладке и выберите необходимый номер COM порта.

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

После завершения настройки нажмите «ОК» для сохранения внесенных изменений и полностью выйдите из режима настроек, закрыв все ранее открытые окна. После этого перезагрузите компьютер для внесения необходимых изменений. Если же вы изменяли номер «COM» порта «USB — COM» преобразователя, то достаточно просто вынуть его из разъема компьютера и заново подключить.

Готовые решения USB-COM адаптеров от производителей.

Кабель-адаптер COM 9/25M -> USB AM 1м

Цена — 300 руб.
Описание Кабель для подключения устройств с последовательным интерфейсом (RS-232) к USB порту.
Тип оборудования Кабель-переходник
Разъемы кабеля или переходника COM25M, COM9M, USB A
Совместимость
Совместимость USB 1.1/2.0
Поддержка ОС Windows 2000, Windows XP
Прочее
Длина кабеля 1 метр
Логистика
Размеры упаковки (измерено в НИКСе) 21.5 х 14.5 х 4.1 см
Вес брутто (измерено в НИКСе) 0.136 кг

Кабель-адаптер TRENDnet COM9M—>USB AM 0.6м

Цена — 500 руб.
Основные
Производитель TRENDnet
Модель TU-S9
Описание Переходник позволяет подключить устройство с интерфейсом RS-232 (например, модем) к порту USB компьютера.
Тип оборудования Кабель-переходник
Разъемы кабеля или переходника COM9M, USB A
Диаметр 28/24 AWG
Параметры производительности
Скорость передачи данных 500 Кбит/сек
Питание От USB порта
Потребление энергии 500 мА — максимальное
Совместимость
Требования к системе RAM 64 Мб
Поддержка ОС Windows ME, Windows 2000, Windows XP
Прочее
Соответствие стандартам RoHS
Длина кабеля 0.6 метра
Вес 75 грамм
Рабочая температура 0

Размеры упаковки (измерено в НИКСе) 23 x 16.8 x 4.6 см
Вес брутто (измерено в НИКСе) 0.135 кг
Внешние источники информации
Ссылка на сайт производителя www.trendnet.com

Адаптер — переходник USB-COM (RS-232)

Цена — 1500 руб.
Адаптер предназначен для использования приборов и адаптеров расчитанных для включения через Com (RS232) порт, например это очень актуально при использовании современных компьютеров, которые имеют только USB, в этом случае, с помощью этого переходника вы можете использовать современные компьютеры и ноутбуки совместно с нашими приборами и адаптерами, такими как Сканер BMW, Сканер Mercedes, Scanmatik и др.

Оборудование для автосервисов, автодиагностика, диагностическое оборудование, диагностика авто, автомобильный сканер, автосканер, диагностический пост, чип тюнинг, оборудование для автодиагностики Carbrain, UNISCAN, ADP-504, KKL-USB, KKL-COM, сканер BMW, сканер Opel, BMW 1.3.6, Automan, Opel scanner, BMW scanner, мотор тестер, газоанализатор, диагностика двигателя, диагностика панели приборов Программатор транспондеров, OBD-2, OBD2, корректировка одометра, U-581, запуск двигателя, crash data, креш дата, крэш дата, спидометр, тахометр.

Хотя может нужно воспользоваться нуль модемным кабелем (2-3, 3-2, 5-5) и переходником типа —

К переходнику добавляете USB удлинитель вот вам и прямой нуль-модемный кабель.

  • Розничная стоимость 100р.
  • Тип A-A
  • Длина: 1.5 м

Но для остальных ресов нужен «перевёрнутый» нуль-модемный кабель.

  • Розничная цена 155.00 руб.
  • Тип разъема: DB9 F — DB9 F
  • Длина: 1.8 м

или такой переходник:

STLab U-350 (RTL) Адаптер COM 9M -> USB AM

Цена — 350 руб.
Основные
Производитель St-Lab
Модель USB DONGLE SERIAL 1 PORT
Описание Переходник позволяет подключить устройство с интерфейсом RS-232 (например, модем) к порту USB компьютера.
Тип оборудования Кабель-переходник
Разъемы кабеля или переходника COM9M, USB A
Встроенный USB-коннектор Да
Параметры производительности
Скорость передачи данных 115200 бит/сек
Интерфейс USB 1.1
Питание От USB порта
Поддержка ОС Windows 2000, Windows ME, Windows XP, Windows Vista, Windows 2003 Server
Размеры упаковки (измерено в НИКСе) 17 x 13 x 3.2 см
Вес брутто (измерено в НИКСе) 0.077 кг
Внешние источники информации Ссылка на сайт производителя www.st-lab.com

Комментарии

Добрый день. Прошу прощения за беспокойство и повторы.

Какое это великое счастье — ЖИТЬ,
СУЩЕСТВОВАТЬ в мире, ДЫШАТЬ, ВИДЕТЬ небо, воду, солнце! (И. Бунин)

Like this post? Please share to your friends:
  • Запись загрузочной флешки windows 10 uefi
  • Запись базы данных в кодировке windows
  • Запись загрузочной флешки windows 10 rufus
  • Запись аудио с экрана компьютера в windows 10
  • Запись загрузочного диска windows в linux