Максимальное количество com портов в windows

I have a system which has some devices with which it communicates through virtual COM ports. With time, the COM port numbers change. I made some code that will search for the new COM port numbers for

I have a system which has some devices with which it communicates through virtual COM ports. With time, the COM port numbers change. I made some code that will search for the new COM port numbers for these devices and remember them. This works fine.

My problem is with defining the COM port number search range. I found, in the Microsoft KB, that there is usually (by default) a limit of 256 COM ports on a Windows NT OS. They also specify that this is configurable and there’s nothing preventing a system to have a very different maximum COM port number.

I’m wondering if there’s a way to programmatically know the COM port number range. Obviously, if I let the system only search the 2⁸ range, it’s going to take a very significantly shorter time than searching the, say, 2¹⁶ range! But if the system running my application is set to support over 2⁸ COM port numbers, at some point the application will surely start failing over and over again, until the COM port number allocation loops back to COM0 (or is it COM1?). I’d like to avoid that, if it doesn’t require too much sorcery.

I’m mainly working with Java, but any idea is welcome.

I have a system which has some devices with which it communicates through virtual COM ports. With time, the COM port numbers change. I made some code that will search for the new COM port numbers for these devices and remember them. This works fine.

My problem is with defining the COM port number search range. I found, in the Microsoft KB, that there is usually (by default) a limit of 256 COM ports on a Windows NT OS. They also specify that this is configurable and there’s nothing preventing a system to have a very different maximum COM port number.

I’m wondering if there’s a way to programmatically know the COM port number range. Obviously, if I let the system only search the 2⁸ range, it’s going to take a very significantly shorter time than searching the, say, 2¹⁶ range! But if the system running my application is set to support over 2⁸ COM port numbers, at some point the application will surely start failing over and over again, until the COM port number allocation loops back to COM0 (or is it COM1?). I’d like to avoid that, if it doesn’t require too much sorcery.

I’m mainly working with Java, but any idea is welcome.

Summary

CreateFile() can be used to get a handle to a serial port. The «Win32 Programmer’s Reference» entry for «CreateFile()» mentions that the share mode must be 0, the create parameter must be OPEN_EXISTING, and the template must be NULL.

CreateFile() is successful when you use «COM1» through «COM9» for the name of the file; however, the message

INVALID_HANDLE_VALUE

is returned if you use «COM10» or greater.

If the name of the port is \.COM10, the correct way to specify the serial port in a call to CreateFile() is as follows:

CreateFile(
«\\.\COM10», // address of name of the communications device
fdwAccess, // access (read-write) mode
0, // share mode
NULL, // address of security descriptor
OPEN_EXISTING, // how to create
0, // file attributes
NULL // handle of file with attributes to copy
);

NOTES: This syntax also works for ports COM1 through COM9. Certain boards will let you choose the port names yourself. This syntax works for those names as well.

Need more help?

Рекомендованные продукты

На складе

NPort IA-5150-TNPort IA-5150-T

NPort IA-5150-T

Ethernet сервер последовательных интерфейсов, 1xRS-232/422/485, с каскадированием (2xEthernet, 1 IP-адрес), -40…+75С


Цена со скидкой$458,84

32 393,69 ₽

На складе

NPort IA-5250-TNPort IA-5250-T

NPort IA-5250-T

Ethernet сервер последовательных интерфейсов, 2xRS-232/422/485, с каскадированием (2xEthernet, 1 IP-адрес), -40…+75С


Цена со скидкой$550,37

38 855,63 ₽

На складе

NPort IA-5150NPort IA-5150

NPort IA-5150

Ethernet сервер последовательных интерфейсов, 1xRS-232/422/485, с каскадированием (2xEthernet, 1 IP-адрес)


Цена со скидкой$324,97

22 942,59 ₽

На складе

NPort IA-5250NPort IA-5250

NPort IA-5250

Ethernet сервер последовательных интерфейсов, 2xRS-232/422/485, с каскадированием (2xEthernet, 1 IP-адрес)


Цена со скидкой$411,92

29 081,18 ₽

NPort 5650I-8-DT-TNPort 5650I-8-DT-T

NPort 5650I-8-DT-T

Ethernet сервер последовательных интерфейсов, 8xRS-232/422/485, DB9 Male, гальваническая изоляция 2кВ, -40…+75C


Цена со скидкой$1 956,38

138 118,67 ₽

NPort IA-5250I-TNPort IA-5250I-T

NPort IA-5250I-T

Ethernet сервер последовательных интерфейсов, 2xRS-232/422/485, с каскадированием (2xEthernet, 1 IP-адрес), изоляция 2 кВ, -40…+75C


Цена со скидкой$620,64

43 816,63 ₽

NPort IA-5250INPort IA-5250I

NPort IA-5250I

Ethernet сервер последовательных интерфейсов, 2xRS-232/422/485, с каскадированием (2xEthernet, 1 IP-адрес), изоляция 2 кВ, 0…+55C


Цена со скидкой$491,44

34 695,22 ₽

NPort IA-5150-M-ST-TNPort IA-5150-M-ST-T

NPort IA-5150-M-ST-T

Ethernet сервер последовательных интерфейсов, 1xRS-232/422/485, 100 BaseFX Ethernet (многомодовое оптоволокно, разъем ST), -40…+75C, IECEx


Цена со скидкой$593,35

41 889,98 ₽

  1. Какими моделями представлена серия преобразователей UPort?
  2. Что означает индекс «I» в названии моделей UPort?
  3. С какими операционными системами работают преобразователи UPort?
  4. Сколько устройств UPort можно подключить к одному компьютеру?
  5. Как произвести настройку преобразователя?
  6. Насколько преобразователи UPort совместимы с оборудованием других производителей, и могут ли они в полной мере заменить реальный COM-порт компьютера?
  7. Может ли преобразователь UPort работать на нестандартных скоростях последовательного порта?
  8. На каком чипсете построены преобразователи UPort? Совместимы ли устройства UPort с драйверами сторонних производителей?
  9. Есть ли у Вас средства по передаче USB-сигналов на дальние расстояния (посредством последовательных интерфейсов, Ethernet, оптики, Wi-Fi и проч.)?
  10. Поддерживают ли преобразователи UPort 9-битный формат передачи данных?

1. Какими моделями представлена серия преобразователей UPort?

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

  • Серия UPort 11xx — однопортовые преобразователи USB в RS-232, RS-422 и RS-485. Самые простые преобразователи, добавляющие в компьютер один последовательный порт.
  • Серия UPort 12xx/14xx/16xx — многопортовые (2/4/8/16-портовые) преобразователи. Добавляют несколько COM-портов в компьютер. Порты являются независимым друг от друга, каждому порту может персонально назначаться режим работы (RS-232, RS-422 или RS-485), формат передачи данных и т.д.
  • Серия UPort 2xxx — бюджетная серия преобразователей. Устройства выполнены в пластиковом корпусе и ориентированы на решение задач IT и офисной автоматизации.

Две последние цифры в номере модели преобразователя указывает на поддерживаемый интерфейс передачи данных. К примеру, UPort 1110 поддерживает только RS-232, UPort 1130, в свою очередь, поддерживает RS-422/485, а UPort 1150 имеет поддержку всех перечисленных интерфейсов RS-232/422/485. Данные цифры актуальны для всех серий преобразователей UPort.

2. Что означает индекс «I» в названии моделей UPort?

Индекс I означает наличие гальванической изоляции до 2кВ на последовательном порте преобразователя. Гальваническая изоляция 2кВ (на основе оптических пар) требуется, когда, например, в условиях промышленного применения необходимо защитить схемы компонентов ПК от возможного наличия разности потенциалов заземления при длинных линиях связи. В этом случае помимо полезного сигнала может появиться еще постоянная составляющая напряжения, часто приводящая к выходу из строя портов ПК. Чтобы это не произошло, ставится оптическая пара, пропускающая только переменную составляющую.

3. С какими операционными системами работают преобразователи UPort?

Преобразователи UPort поддерживаются всеми операционными системами Microsoft Windows, начиная с Windows 2000 и заканчивая Windows 10, операционными системами Linux с версиями ядра 2.4, 2.6, 3.x. Некоторые модели UPort поддерживают более широкий список операционных систем.
Самые последние драйверы и список поддерживаемых ОС Вы всегда можете скачать с нашего сайте, раздел «ПО и документация»

4. Сколько устройств UPort можно подключить к одному компьютеру?

Само по себе максимальное количество подключаемых устройств UPort не лимитировано. Но при подключении большого количества устройств необходимо иметь ввиду следующие ограничения:

  • Максимальное количество USB-устройств, поддерживаемое одним USB-контроллером: 127
  • Максимальное количество COM-портов, поддерживаемое ОС Windows: 256 (до Windows XP SP2 включительно) или 4096 (начиная с Windows XP SP3 и выше)

5. Как произвести настройку преобразователя?

Преобразователь готов к работе сразу после установки драйвера и, как правило, не требует специальных настроек.
Если модель Вашего преобразователя поддерживает различные последовательные интерфейсы (RS-232, RS-422, RS-485), то Вы можете указать каждому порту его режим работы.

Все основные настройки преобразователя в ОС Windows осуществляются через Диспетчер Устройств, раздел Многопортовые последовательные адаптеры. Во вкладке Port Configuration находятся основные настройки портов. Здесь можно менять интерфейс последовательного порта (RS-232, RS-422, RS-485), режим передачи данных и т.д.

Процедура изменения интерфейса последовательного порта на примере 2-портового устройства UPort 1250 представлена на картинке.
2018-04-28_1155.png

6. Насколько преобразователи UPort совместимы с оборудованием других производителей, и могут ли они в полной мере заменить реальный COM-порт компьютера?

Устройства UPort создают на Вашем компьютере полноценный COM-порт, никаких проблем возникнуть не должно. Могут возникнуть проблемы со старым программным обеспечением, так как при использовании UPort COM-порт создается средствами операционной системы, а старое программное обеспечение, разработанное для ОС DOS или версий Windows 3.1/95/98, зачастую обращается к порту на физическом уровне

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

7. Может ли преобразователь UPort работать на нестандартных скоростях последовательного порта?

Да, преобразователи UPort 1200/1400/1600 могут работать на нестандартных скоростях последовательного интерфейса, находящихся в пределах от 50 бит/с до 921 600 бит/с.

8. На каком чипсете построены преобразователи UPort? Совместимы ли устройства UPort с драйверами сторонних производителей?

Устройства UPort построены на базе микросхем, разработанных компанией MOXA. Мы не можем гарантировать работу устройств с драйверами сторонних производителей.

9. Есть ли у Вас средства по передаче USB-сигналов на дальние расстояния (посредством последовательных интерфейсов, Ethernet, оптики, Wi-Fi и проч.)?

К сожалению, на настоящий момент компания MOXA не выпускает удлинителей USB-интерфейсов.

10. Поддерживают ли преобразователи UPort 9-битный формат передачи данных?

Нет. Для 9-битной передачи данных лучше преобразователи UPort не использовать.
9-битные посылки не являются стандартом для интерфейса RS-232 и не поддерживаются преобразователями UPort. Теоретически, 9-битная посылка может быть сгенерирована путем принудительной установки бита четности 8-битной посылки в значение «0» или «1». Указанная установка может быть сделана только операцией изменения формата передаваемых данных, но эта операция выполняется в UPort достаточно долго (порядка 10 мс), что зачастую недопустимо при передаче данных.
Для передачи 9-битных посылок рекомендуется использовать мультипортовые платы, устанавливаемые внутрь компьютера. 

Я рассчитываю получить целую кучу выводов цифрового выхода, которыми я могу напрямую управлять с моего ЦП, и я надеюсь использовать целую кучу USB для последовательных портов для достижения этой цели.

Предполагается, что я использую высококлассный компьютер с современной ОС (Core i7 860, Windows 7 x64, много встроенных USB-портов). Есть ли практическое ограничение на количество этих устройств, которые я могу подключить к компьютеру и по-прежнему использовать должным образом? Я спрашиваю об этом, потому что на компьютерах обычно никогда не было больше 4 COM-портов, но это было тогда, когда компьютеры фактически имели COM-порты на своих материнских платах.

заранее спасибо

изменён Dennis Williamson77k

Я могу честно сказать, что я никогда не нашел ограничения на количество устройств COM-порта, которые может использовать машина.

Я проделал большую работу с машинами, которые используют несколько USB-устройств с четырьмя портами RS232, и я почти уверен, что на наших установках достаточно регулярно используются COM-порты от COM1 до COM16, которые используются одновременно.

Я ожидаю, что будет какое-то ограничение, например, 256 портов, но я не могу сказать наверняка …

О, кажется, я могу, эта страница для Windows NT (от которой происходит Win7) требует 256 портов, но это ограничение панели управления WinNT, фактическое ограничение заключается в возможности адресовать все порты и настолько ошеломительно огромно, что она не имеет значения

Ограничение последовательных портов на устаревших компьютерах было связано главным образом с ограниченным количеством доступных IRQ и тем фактом, что у них было только два чипа UART. Даже тогда были дополнительные платы, которые могли бы дать вам большое количество портов.

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

ответ дан Dennis Williamson77k

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:04, 29 января 2019.

ComDB

Разработчики: Microsoft
Написана на: Закрытый исходный код / Shared source
Операционная система: Microsoft Windows
Тип ПО: Системная база данных
Лицензия: Пользовательское соглашение
Веб-сайт https://docs.microsoft.com/en-us/previous-versions//ff546481(v=vs.85)

ComDB (COM Port Database) это системная база данных Microsoft Windows, которая содержит информацию об использовании номеров COM-портов установленными в системе COM-портами. Этот компонент упрощает установку COM-портов и обеспечивает соответствие номера порта единственному конкретному порту.

Все системные установщики для COM-портов используют ComDB для получения номера COM-порта. Хоть это и не требование устройств Plug and Play, все поставляемые установщики также должны использовать ComDB для получения номера COM-порта. [Источник 1]

Содержание

  • 1 Структура ComDB
  • 2 ComDB в редакторе реестра
  • 3 Процедуры ComDB
  • 4 Открытие ComDB
  • 5 Определение используемых номеров COM-портов
  • 6 Получение и освобождение номера COM-порта
  • 7 Сравнение с Amazon Redshift
  • 8 Источники

Структура ComDB

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

База данных состоит из массива элементов, каждый из которых указывает, используется ли номер COM-порта, или нет. Информации о том, какое устройство использует данный номер COM-порта, база данных не содержит. Первый элемент массива соответствует первому порту (COM1), второй соответствует второму и т.д.

Размер базы данных равен количеству номеров портов, которые в настоящее время она обрабатывает. Минимальное количество номеров портов, которые может обрабатывать база данных составляет COMDB_MIN_PORTS_ARBITRATED, максимальное число — COMDB_MAX_PORTS_ARBITRATED.

Размер базы данных можно увеличить с помощью процедуры ComDBResizeDatabase. Размер базы данных может быть только целым числом, кратным 1024.

ComDB в редакторе реестра

Если вы хотите получить информацию о всех номерах COM-порты, которые заняты в системе, тогда вы можете использовать COM Name Arbiter. Подсистема ввода / вывода Windows будет назначать значения на основе ключа COM Name Arbiter в реестре:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCOM Name Arbiter

Значение COMDB типа REG_BINARY содержит маски, которые показывают, какие COM-порты заняты системой (см. рисунок 1). Этот список отформатирован с прямым порядком байтов, поэтому первый байт соответствует COM1-COM8, второе значение соответствует COM9-COM16 и т. д.. Если первый байт равен 0x1с, в двоичном виде — 00011100, значит, заняты COM3, COM4 и COM5. [Источник 2]

Рисунок 1 – Значение ComDB в редакторе реестра Windows

Процедуры ComDB

Библиотека ComDB содержит следующие функции:

  • ComDBClaimNextFreePort — занимает самый низкий номер COM-порта, который еще не используется.
  • ComDBClaimPort — регистрирует неиспользуемый номер COM-порта как «используемый» в базе данных.
  • ComDBClose — закрывает дескриптор базы данных COM-порта.
  • ComDBGetCurrentPortUsage — возвращает информацию о номерах COM-портов, которые в настоящее время зарегестрированы как «используемые» в базе данных.
  • ComDBOpen — возвращает дескриптор ComDB.
  • ComDBReleasePort — освобождает номер COM-порта в ComDB.
  • ComDBResizeDatabase — изменяет размер базы данных.
  • SerialDisplayAdvancedSettings — подпрограмма, предоставленная системой для установки страницы дополнительных свойств для COM-порта
  • PPORT_ADVANCED_DIALOG — типизированная процедура, которая предоставляет дополнительное диалоговое окно SerialDisplayAdvancedSettings

Чтобы вызвать эти процедуры в установщике, необходимо связать установщик с файлом msports.lib, который поставляется с набором драйверов Windows (WDK).

Открытие ComDB

Перед использованием базы данных COM-порта необходимо открыть базу данных, вызвав процедуру ComDBOpen, чтобы получить дескриптор базы данных.

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

Определение используемых номеров COM-портов

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

Обычно это делается для того, чтобы:

  1. определить, сколько портов в настоящее время находятся в базе данных.
  2. получить информацию об использовании номера порта в caller-allocated битовом или байтовом массиве, где каждый бит или байт указывает, используется ли соответствующий номер порта.

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

Получение и освобождение номера COM-порта

Получить номер COM-порта можно, вызвав одну из следующих подпрограмм:

  1. ComDBClaimNextFreePort — занимает самый низкий доступный номер порта.
  2. ComDBClaimPort — пытается занять определенный номер порта.

Получение номера COM-порта регистрирует номер порта как «используемый» в ComDB.

Номер порта освобождается с помощью вызова процедуры ComDBReleasePort.

Сравнение с Amazon Redshift

Название Google BigQuery Amazon Redshift
Определение размера кластера Redshift попросит вас выбрать несколько процессоров, RAM, HD и т.д. и включить их Не требуется никаких необходимых ресурсов
Почасовая оплата Redshift требует оплату в режиме простаивания В режиме ожидания BigQuery взимает только $0,02 в месяц за каждый сохраненный ГБ
Скорость запросов Производительность Redshift [1] ограничена количеством процессоров BigQuery прозрачно приносит столько ресурсов, сколько необходимо для запуска запроса
Индексация Redshift предлагает индексировать данные по определенным критериям, чтобы выполнять быстрые запросы на основе этого индекса BigQuery не имеет индексов. Каждая операция выполняется быстро
Вакуумирование Redshift требует периодических операций технического обслуживания и «вакуума», которые работают в течение последних часов Отсутствует
Разделение и распределение данных Требуется, чтобы пользователь распространял данные на своих серверах, чтобы повысить производительность Не требуется
Растущий кластер Наблюдаются проблемы в работе, если увеличено количество одновременных пользователей BigQuery будет работать

Источники

  1. COM Port Database // Microsoft Documents [2018 — 2019]. Дата обновления: 29.12.2018. URL: https://docs.microsoft.com/en-us/previous-versions//ff546481(v=vs.85) (дата обращения 29.12.2018)
  2. Re-Assigning COM Port Numbers Using the Windows Registry // Future Technology Devices International Limited (FTDI). Дата обновления: 27.04.2016. URL: https://www.ftdichip.com/Support/Documents/AppNotes/AN_132_Re-Assigning_COM_Port_Numbers_Using_Registry.pdf (дата обращения 17.01.2019)
  1. Redshift

Понравилась статья? Поделить с друзьями:
  • Майкрософт эксель скачать бесплатно для windows 10 на русском торрент
  • Максимальное использование оперативной памяти windows 10
  • Майкрософт офис скачать бесплатно для windows виста
  • Майкрософт эксель скачать бесплатно для windows 10 на русском без регистрации
  • Максимально ускорить windows 10 для слабого пк