Настройка com порта в windows 7 для прошивки

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

В диспетчере устройств щелкните правой кнопкой мыши устройство, использующее COM1, и выберите «Свойства», на вкладке «Параметры порта» выберите параметр «Дополнительно», после чего вы увидите раскрывающееся окно, в котором указан COM1, и вы можете прокрутить вниз до другого номера COM, который НЕ является используется и выберите его, а затем нажмите OK во всех окнах, пока не вернетесь в …

РЕШЕНИЕ

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

24 мар. 2021 г.

Когда появится диспетчер устройств, найдите запись с надписью «Порты (COM и LPT)» и щелкните рядом с ней, чтобы развернуть ее. Если вы используете встроенный в компьютер последовательный порт, он будет указан как «Коммуникационный порт». Если вы используете переходник с USB на последовательный, он будет указан как «Последовательный порт USB».

Выполните этот шаг, чтобы использовать порт COM 1:

  1. Подключите устройство, которое требует использования COM-порта.
  2. Откройте диспетчер устройств, выполнив следующие действия:…
  3. Разверните «Порты (COM и LPT)».
  4. Щелкните устройство правой кнопкой мыши и выберите «Свойства».
  5. Щелкните вкладку «Настройки порта». …
  6. Щелкните номер COM-порта ->? Потяните полосу прокрутки вниз и выберите COM1.

15 апр. 2010 г.

Как мне изменить мои порты USB на COM1?

Щелкните правой кнопкой мыши порт связи (COM1) и выберите «Свойства». В окне «Свойства» щелкните вкладку «Конфигурация порта», а затем нажмите «Настройка порта». В поле «Номер порта» используйте раскрывающееся меню, чтобы выбрать COM2 для вашего собственного COM-порта, и нажмите «ОК».

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

Как мне узнать, работает ли мой последовательный порт?

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

7. Перейдите в меню «Просмотр» в диспетчере устройств и нажмите «Показать скрытые устройства». 8. Прокрутите вниз до раздела Порты, и вы сможете увидеть все скрытые и неиспользуемые COM-порты.

Выберите View-> Show Hidden Devices в меню консоли. Разверните ветку Порты (COM и LPT) и найдите в списке устройство, которому назначен нужный COM-порт. (Бледный значок означает, что этот COM-порт уже назначен, но в настоящее время устройство не подключено) Щелкните его правой кнопкой мыши и выберите «Удалить».

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

Сделать это:

  1. Щелкните правой кнопкой мыши на Мой компьютер и выберите Свойства.
  2. Выберите вкладку «Оборудование» и откройте Диспетчер устройств.
  3. В разделе «Порты (COM и LPT)» щелкните правой кнопкой мыши COM-порт и выберите «Свойства».
  4. Выберите вкладку «Параметры порта» и нажмите кнопку «Дополнительно».

2 колода 2010 г.

Для этого щелкните правой кнопкой мыши строку «Последовательный порт USB» и выберите «Свойства» во всплывающем меню. Щелкните вкладку «Параметры порта», а затем нажмите кнопку «Дополнительно». Выберите раскрывающийся список «Номер COM-порта» и выберите номер COM-порта 2, 3 или 4 (обычно COM1 уже используется).

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

Какой порт COM1?

Порт COM1 громоздкий. Порт COM1 — это последовательный порт на компьютере. Последовательный порт — это разъем, позволяющий периферийным устройствам, таким как мышь или модем, подключаться к компьютеру через кабель. Последовательные порты были заменены небольшими разъемами универсальной последовательной шины.

Как добавить порт в диспетчер устройств?

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

Обновлено 12.06.2017

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Материал сайта pyatilistnik.org

Содержание

  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

Источник

Читайте также:  драйвер для дублирования экрана на телевизор для виндовс 10

Adblock
detector

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

Микроконтроллеры К1986ВЕ1QI, К1986ВЕ92QI, К1901ВЦ1GI и К1986ВК01GI имеют контроллер USB-интерфейса, реализующий функции контроллера ведомого устройства (Device) и ведущего устройства (Host). В составе библиотеки SPL приведён пример для ведомого устройства (Device) под названием «VCOM_Echo», который позволяет использовать МК в качестве CDC USB устройства (Класс Коммуникационного Устройства), настроенного как виртуальный COM-порт. Чтобы ПК определял МК именно как устройство, подключенное по COM-порту, необходимо установить специальный драйвер. Ссылка на скачивание драйвера доступна в конце статьи.

В данной статье рассмотрена пошаговая установка драйвера Virtual COM порт в ОС Windows 7.

Установка драйвера

Для установки драйвера виртуального COM-порта необходимо иметь права администратора!

Загружаем в МК проект «VCOM_Echo» и подключаем отладочную плату к ПК с помощью кабеля USB A-B. На ПК открываем «Диспетчер устройств Windows», его можно найти в поиске меню «Пуск». Если драйвер не установлен, то после подключения МК по USB в диспетчере устройств появится «Неизвестное устройство». Открываем «свойства» нового устройства, как показано на рисунке 1.

Рисунок 1 — Диспетчер устройств Windows: неизвестное устройство

Если МК определился в группе «Контроллеры USB» и отображается как «Unknown Device», вероятно был нарушен протокол обмена по USB, и проблему следует искать в ПО МК.

В открывшемся окне «Свойства…» выбираем пункт «Изменить параметры» (рисунок 2), при этом возможно потребуется ввести пароль администратора.

Рисунок 2 — Свойства «неизвестного устройства»

В новом окне выбираем пункт «Обновить драйвер», как показано на рисунке 3.

Рисунок 3 — Обновление драйвера в окне «Свойства…»

Здесь необходимо выбрать «поиск драйверов на компьютере» (рисунок 4).

Рисунок 4 — Окно «Обновление драйверов»

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

Рисунок 5 — Окно «Обновление драйверов»: выбор директории с драйвером

В процессе установки Windows может вывести предупреждение, в котором необходимо выбрать пункт «Всё равно установить этот драйвер», как показано на рисунке 6.

Рисунок 6 — Окно с предупреждением при установке драйвера

После установки драйвера в диспетчере устройств во вкладке «Порты(COM и LPT)» должно появиться новое устройство «Milandr USB RS-232 Emulation Driver» (рисунок 7).

Рисунок 7 — Диспетчер устройств Windows: новое COM-устройство 

Если установить всё-таки не получается, то

Можно попробовать запустить операционную систему Windows в безопасном режиме или режиме с отключенной обязательной проверкой подписи драйверов. 

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

Рисунок 8 — Дополнительные варианты загрузки Windows 7

Для Windows 8 и 10 есть несколько способов перейти в аналогичное Windows 7 меню выбора режима загрузки, но самый простой заключается в том, чтобы нажать кнопку «Перезагрузка» вместе с зажатой кнопкой Shift прямо в меню «Пуск» (рисунок 9).

Рисунок 9 — Алгоритм попадания в первоначальный загрузчик Windows

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

Рисунок 10 — Меню выбора режимов загрузки Windows 8 (10)

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

Сохранить статью в PDF

Кто не любит читать — внизу есть видео.
Подключаем KKL VAG COM 409.1 к компьютеру. Начинаем установку программы VAG COM, VCDS или Вася диагност 1.1 — я пользуюсь ей. Программа устанавливается просто. Все время жмем «Далее.»
После установки заходим в настройки программы и проходим тест (нажимаем на кнопку «Тест»). Если статус порта пишет — «не найден», то нужно поменять порт.

Для этого нужно…

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

Чтобы изменить COM port…

Находим пункт «Порты COM и LPT» — открываем его — там и есть наш кабель «USB Serial port». Заходим в его свойства. Вкладка — параметры порта — Кнопка дополнительно — меняем номер порта от 1 до 4 — жмем «ОК». Выходим. (Здесь также можно установить драйвера.)

Затем в настройках программы Вася диагност выбираем порт, который поставили в «Диспетчере устройств.» Проходим тест. В окне должно появиться —
Статус порта: Ок,
Адаптер: Не найден.
Теперь можно подключить к авто и соединяться с ЭБУ.

Наша страница на DRIVE2:

Открыв
окно свойств порта и выбрав вкладку
Настройка, увидим множество опций
(рис. 4).

Рис.4 – Окно настройки com-порта

Скорость
— в этом пункте выбираем скорость
обмена между устройством и ПК.

Биты
данных
 —
сколько бит передавать за один раз
(между старт-битом и стоп-битом).

Четность —
выбор способа контроля четности. При
передаче к числу добавляется еще один
бит, дополняющий количество единиц в
числе до четного или нечетного (это уже
как выбрано в режиме передачи). Этот бит
становится младшим разрядом передаваемого
числа и принимает значение 1, если у
нас нечетное число единиц, и 0, если
четное. При проверке на четность, в
случае если мы приняли нечетное число
единиц (при проверке на нечетность —
наоборот), порт передает устройству
информацию об ошибке и просит повторить
передачу.

Стоповые
биты
 —
количество стоп-бит, необходимых для
правильного распознавания конца байта.

Управление
потоком
 —
выбор режима управления потоком
(аппаратного или программного). В режиме
программного управления, при определении
ошибки, требуется некоторое время, чтобы
отправить сигнал XOFF и приостановить
прием, но за это время может произойти
передача нескольких байт, которые будут
утеряны (в случае отсутствия буфера
принимаемых данных).

В
пункте Дополнительно
можно выбрать объем буферов FIFO либо
отключить их вообще (что не рекомендуется).

Совет.
Если у вас все нормально работает, не
меняйте настройки, стоящие по умолчанию!
Менять их необходимо тогда, когда этого
требует устройство (о чем, наверняка,
будет подробно сказано в инструкции к
нему).

Таблица 2 –
Ресурсы
com-портов

Номер COM порта

Используемые
адреса

Номер IRQ

COM1

3F8h — 3FFh

IRQ4

COM2

2F8h — 2FFh

IRQ3

COM3

3E8h — 3EFh

IRQ4

COM4

2E8h — 2EFh

IRQ3

2.2Работа с сom-портом из-под Win32

С портами из-под
Win32 работают так же, как и с обычными
файлами, используя при этом всего
несколько специфичных функций WinAPI.
Однако коммуникационный порт — это
не совсем обычный файл. Для него, например,
нельзя выполнить позиционирование
файлового указателя, или же создать
порт, если таковой отсутствует.

Любая работа с
портом начинается с его открытия. Для
этого используется файловая функция
WinAPI.

C
последовательными портами в Win32 работают
как с файлами. Причем используют только
функции API Win32.

Начинается работа
с открытия порта как файла, причем для
асинхронного режима ввода-вывода
возможен только один вариант:

HANDLE
handle = CreateFile(«COM1», GENERIC_READ | GENERIC_WRITE,
NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

Других вариантов
быть не может, поэтому не будем
рассматривать параметры этой функции
подробно, единственное, что можно сделать
— это заменить “COM1” на “COM2”.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Изменение номера COM-порта в Windows

Изменение номера COM-порта в Windows

Столкнулся тут недавно с тем, что у меня куда-то пропадают номера COM-портов (интерйфес RS-232, через который работает моя управлялка освещением на Ke-USB24A). Недавно был COM16, переключил разъёмчик USB — порт вдруг стал уже COM22. Неее, не дело! Полез разбираться и заодно делюсь с вами, читатели, как удалить записи об отключённых и ненужных устройствах и сменить номер COM-порта в Windows. Написано будет про Windows XP, думаю, под другие винды надо будет действовать по аналогии.

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

Первым делом я полез в свойства устройства, чтобы сменить номер порта в свойствах устройства и обломался. Мой любимый COM16 (под него настроениа програ по умолчанию) был кем-то занят (по словам системы). Так как с системой я разговариваю также, как с проводочками — «Слышь ты, с##ка!! Охренела чтоле?!», то я вспомнил об одной замечательной системной переменной DEVMGR_SHOW_NONPRESENT_DEVICES, которая позволяет хорошо почистить базу данных (и реестр) от записей о старых устройствах. Но — обо всём по порядку.

Переменная среды DEVMGR_SHOW_NONPRESENT_DEVICES заставляет Диспетчер устройств показывать все-все устройства, записи о которых есть в базе данных Windows (часть хранится где-то в системных папках, часть в реестре — поэтому я пишу о базе данных). Для начала нам надо её установить или создать, если до этого такой шаг никогда не делался.

Тыкаем по значку Мой компьютер правой кнопкой, выбираем Свойства (горячие клавиши: Win+Break). Открывается откно «Свойства системы».

 Вызов окна "Свойства: Система"

Переходим в нём на вкладку «Дополнительно», и в самом низу видим кнопку «Переменные среды». Она нам и нужна. Кстати, замечание в сторону: на этой же вкладке в рамке «Загрузка и восстановление» находится кнопка «Параметры», за которой сныкана очень полезная галочка «Выполнить автоматическую перезагрузку», которая на свежей Windows всегда стоит. А это значит, что при возникновении синего экрана (BSOD, STOP 0x…) система сразу же жестоко перезагружается, не давая его как следует рассмотреть. Настоящие пользователи не могут себе простить этого, поэтому можно зайти вэтот раздел настроек и галку снять.

Как перейти к переменным среды

Ну а у нас открыто окно «Переменные среды», где мы видим два раздела: «Переменные среды пользователя xx» и «Системные переменные». Вообще, эти все «переменные»- аналог старого доброго SET PATH= и прочих SET xx=yy в bat-файлах. Только теперь, в Windows, они делятся ещё и на персональные для пользователя, или на глобальные для всех пользователей. В локальных я обычно, когда ставлю систему, исправляю TEMP и TMP на что-то более короткое — например, перенаправляю в тот же системный каталог %SystemRoot%Temp. Раньше из-за этого ругались старые инсталляторы какого-нибудь хитрого софта и старые версии конкретно InstallShield — они не могли создать свои временные файлы по длинному пути. Это уменьшает безопасность системы, так как всякие Word’ы кладут временные файлы документов тоже в Temp и, следовательно, потенциально любой юзер может видеть их в общей временной папке.

Переменные среды

Нам же нужны «Системные переменные», и конкретно DEVMGR_SHOW_NONPRESENT_DEVICES. Посмотрите в списке, если её нет — тогда нажимаем кнопку «Создать», и заполняем открывшееся окошко «Новая системная переменная». Если же переменная есть в списке — проверьте правильность её написания и значение — 1.

Добавляем новую переменную

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

Убеждаемся, что она у нас есть

После этого обязательно нужно перезагрузить систему!

Удаление неиспользуемых устройств (часть 2)

Итак, мы перезагрузились, и теперь можно открывать диспетчер устройств. Я снова сделаю это через тот же значок «Мой компьютер» на рабочем столе (надо сказать, он только для этого там и висит). Тыкаем правой кнопкой, выбираем в меню пункт «Управление». Надо сказать, что это быстрее, чем лазить по всяким панелям управления и Пуск’ам. Сравните: Пуск > Настройка > Панель управления > Администрирование > Управление компьютером, или один клик? Хе-хе.

Вызов консоли "Управление Компьютером"

У нас (через некоторое время тупняка) открывается замечательная консоль «Управление компьютером», в которой нас интересует всего один пункт: «Диспетчер устройств». Тыкаем на него слева в дереве, и справа у нас радостно открывается другое дерево — всяких устройств, которые подключены в системе и для которых стоят драйвера.

Консоль "Диспетчер устройств"

Консоль «Диспетчер устройств»

Мы, не менее радостно сразу же лезем в меню «Вид», выбирая пункт «Показать скрытые устройства» и, если наша переменная DEVMGR_SHOW_NONPRESENT_DEVICES была установлена верно и система была перезагружена, мы увидим список устройств раза в два-три больше, чем обычно.

Показать скрытые устройства

Показать скрытые устройства

Ради интереса можно раскрыть какую-нибудь ветку, чтобы посмотреть, как же система выводит информацию о подключённых и неподключённых устройствах. Я развернул раздел «Клавиатуры» и USB-устройств. Почему вообще так много устройств и откуда они берутся? Дело в том, что система (не от дурости, а для умности) запоминает не только код производителя (VendorID) и модель (ModelID) устройства, а ещё и то место на шине, куда оно подключено. Для всяких плат — это номер (или какой-то внутрений идентификатор) слота PCI, PCI-E, для USB — номер разъёма. Каждая такая комбинация считается совершенно отдельным устройством, для которого нужны драйвера.

Почему же система тогда не просит драйвера от, например, принтера, если мы его переткнули в другой разъём? При первом подключении принтера — понятно, система не знает устройство и просит дрова. А при последующих к другому разъёму? В этом случае работает база данных драйверов, где прописано что для VendorID+ModelID — такой-то драйвер. И при изменении подключения устройства система берёт тот же драйвер, какой и был, ничего не спрашивая.

Итак, рассмотрим скриншот повнимательнее. Зелёным я выделил те устройства, которые система знает (они подключены) в данный момент. Красным — те, которых нет (они сейчас не подключены). Сама система их, если приглядеться, маркирует или яркой, или затенённой иконкой. Клавиатур две, потому что это ноутбук с подключенной отдельной клавиатурой по USB. Так как дырок USB у меня 4, и ещё было две разных клавы, то этих «Клавиатура HID» наплодилась куча. Можно смело удалить те, которые серые.

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

Подключённые и отключённые устройства

Ну а нам ещё надо показать, где же можно поменять (или освободить) себе красивый портик COM для наших задач. Эти порты (даже те, которые получаются от RS-232<>USB преобразователей) лежат в разделе «Порты (COM и LPT)». Моё устройство маркируется как CS COM-USB Bridge, и изначально вдруг повисло на COM22. Мне же хотелось получить назад свой COM16 (на скрине он уже есть). Только включив «Показать скрытые устройства», я понял всю глубину грехопадения :) Эти чёртовы сотики отожрали себе ВСЕ порты, какие могли!! Естественно, они были не подключены сейчас к системе, изначально их было не видно, а на моём порту COM16 стояло гордое «(используется)». Потому что я переткнул разъём своего Ke-USB24A в другую дырку. А это, видите ли, уже новое мля устройство! Ну ничего! Старое с COM16 было удалено, и текущий девайс был переназначен на тот, старый порт.

Номера COM-портов и привязка к устройствам

Как это сделать? Лезем правой кнопкой на девайс, выбираем свойства (особо резвым можно просто два раза щёлкнуть левой). Показал на примере другого порта.

Вызов свойств устройства

Открывается окно свойств устройства, где нас интересует вкладка «Параметры порта». Особо отмечу, что все эти скорости, чётности: а) всё равно настраиваются программно в той проге, которая общается с таким USB-RS-232 устройством, б) По USB всё равно ни на что не влияют. Тыкаем кнопку «Дополнительно».

Вкладка "Дополнительно" свойств устройства

И у нас открывается мелкое окошко, но с огромным списком портов. Вообще,номер порта зарезервирован от 1 до 65535, тут решили ограничиться 256. Вот так! А вы- COM1-COM4. Кстати, это хороший камень в сторону тех идиотин, которые делают программаторы (и другие важные и нужные устройства) со старым софтом, где окошко выбора порта выглядит как 4 переключателя-точки (radio-button): «Выберите порт: () COM1 (*) COM2 () COM3 () COM4». И всё. Поэтому, кстати, у меня в проге управления порт выбирается списочком.

Огромный список COM-портов

Огромный список COM-портов

Здесь можно выбрать любой свободный порт. Я постарался перегруппировать все девайсы так, чтобы высвободить самые первые номера портов. Высвободились COM1 и COM2 — мне хватило. Ещё важное замечание: правильные данные об «(используется)» обновляются всё же после перезагрузки, так что два-три раза систему подёргать придётся. Мне лень — в статье нужно было показать только принцип. Играйтесь!

Выбранный порт и порт в программе управления

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

Понравилась статья? Поделить с друзьями:
  • Настройка com порта windows 10 rs 485 bolid
  • Настройка classic shell для windows 10
  • Настройка ccleaner для правильной чистки windows 10
  • Настройка bluetooth модема в windows 10
  • Настройка bluetooth микрофона в windows 10