Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/30: Рейтинг темы: голосов - 30, средняя оценка - 4.77
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407

Как получить номер КОМ-порта зная VID и PID

31.08.2012, 11:52. Показов 6317. Ответов 13

Студворк — интернет-сервис помощи студентам
Как получить номер COM-порта зная VID и PID?
Кто нить сталкивался?
Хочу, чтобы оно само поставляло номер порта.
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.08.2012, 11:52
Ответы с готовыми решениями:

Отключение оборудования по vid\pid
Приветствую. Может кто занимался таки делом, хоть чуток информации. Дело в том что это usb hub например (вложение). С USB девайсом...

Получение идентификатора носителя PID и VID
Получение идентификатора Флешки PID и VID

Получить VID и PID юсб флешки зная букву накопителя
Всем привет. В общем: зная "букву" флешки, необходимо получить её VID и PID (серийный номер)... Вот и все, только проблема в том, что...

13
Заблокирован
31.08.2012, 14:42
VID - идентификатор производителя и PID - идентификатор устройства USB
Вы его через USB подключаете?
Для USB была тема

Добавлено через 13 минут
К сожалению, я так COM-порты не подключал, не знаю можно ли номер узнать.
0
 Аватар для KATbIK
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
04.09.2012, 09:53
abbat81, Если нашел ответ расскажи?
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
04.09.2012, 10:38
KATbIK, возвращаясь к вашей теме. При получении списка виртуальных портов через SetupAPI, рядышком с именем присутствует и номер порта, достаточно отпарсить.

https://www.cyberforum.ru/post3302700.html
Получить описания COM-портов
(методы под VB.NET остаются те же)
1
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
04.09.2012, 11:57  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
(методы под VB.NET остаются те же)
Я очень был бы благодарен за адаптацию этой функции под .NET ато я не настолько силен.

Очень апетитно это выглядит:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
uses SetupAPI;
function get_num_comname(node, sub: string): string;
 function GetDevName(PnPHandle: HDEVINFOS; const DevData: TSPDevInfoDataS): string;
 var
  BytesReturned: DWORD;
  RegDataType: DWORD;
  Buffer: array [0..256] of CHAR;
 begin
  BytesReturned := 0;
  RegDataType := 0;
  Buffer[0] := #0;
  SetupDiGetDeviceRegistryPropertyS(PnPHandle,
                                    DevData,
                                    $C,
                                    RegDataType,
                                    PByte(@Buffer[0]),
                                    SizeOf(Buffer),
                                    BytesReturned);
  Result := Buffer;
  if Result'' then exit;
  BytesReturned := 0;
  RegDataType := 0;
  Buffer[0] := #0;
  SetupDiGetDeviceRegistryPropertyS(PnPHandle,
                                    DevData,
                                    $0,
                                    RegDataType,
                                    PByte(@Buffer[0]),
                                    SizeOf(Buffer),
                                    BytesReturned);
  Result:=Buffer;
 end;
var
  _i:DWORD;
  Res: DWORD;
  GUID: PGUID;
  Buffer: array [0..1023] of CHAR;
  BufSize: DWORD;
  //
  PnPHandle: HDEVINFOS;
  DevData: TSPDevInfoDataS;
  RS: LongBool;
  Devn: Integer;
  _DN,_PN:ULONG;
  s: string;
begin
  result:= '';
  _i:=0;
  repeat
    GetMem(GUID, SizeOf(TGUID));
    Res := CM_Enumerate_ClassesS(_i, GUID^, 0);
    if Res  $25 then begin
      SetupDiGetClassDescriptionS(GUID^, @Buffer[0], Length(Buffer), BufSize);
      // проверяем узел
      if pos(node, Pchar(@Buffer[0]))>0 then begin
       PnPHandle := SetupDiGetClassDevsS(@GUID^, nil, 0, DIGCF_PRESENT);
       if PnPHandle = INVALID_HANDLE_VALUE then Exit;
       Devn := 0;
       repeat
        DevData.cbSize := SizeOf(DevData);
        RS := SetupDiEnumDeviceInfoS(PnPHandle, Devn, DevData);
        if (RS) and (_DN$1) then begin
         s:= GetDevName(PnPHandle, DevData);
         // проверяем субкласс
         if pos(sub, s)>0 then begin
          result:= copy(s, pos('COM', s), 4);
         end;
         Inc(Devn);
        end;
        if Devn=0 then break;
       until not RS;
       SetupDiDestroyDeviceInfoListS(PnPHandle)
      end;
     end;
     Inc(_i);
     FreeMem(GUID);
   until Res = $25
end;
1
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
04.09.2012, 12:08
...под NET не обещаю, а вот в DLL-ку загнать могу (может
вечерком
...сам давно хотел адаптировать под внешнее использование.
).
2
 Аватар для KATbIK
86 / 81 / 28
Регистрация: 02.08.2011
Сообщений: 335
04.09.2012, 13:08
raxp, Вот спасибо за наводку, я чет не обратил внимание на SPDRP_FRIENDLYNAME.
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
04.09.2012, 18:25
Описание API вызова библиотеки GetNumCom.DLL
2
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
05.09.2012, 11:56  [ТС]
raxp, отлично.
Потестил пример и он именно так работает, как и требуется.
Если у кого будет работа с этим на .NET, то выложите пожалуйства на пример на НЕТе.
Спасибо.
0
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
10.09.2012, 22:29  [ТС]
Вот думаю, время появлиось, руки дошли и тут на тебе....
А может криво руки мои шли, поправьте пожалйста.
Миниатюры
Как получить номер КОМ-порта зная VID и PID  
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
11.09.2012, 06:04
Та же песня
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
11.09.2012, 09:20
DllImport http://msdn.microsoft.com/ru-r... s.90).aspx
Как пользоваться DllImport

abbat81, способ на скрине подходит по-большей части для родных библиотек, и уж тем более данная либа не является COM-объектом.
0
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
11.09.2012, 11:45  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
DllImport http://msdn.microsoft.com/ru-r... s.90).aspx
Как пользоваться DllImport
По указанім примерам смог повторить, но никак не могу на основании єтих примеров подружиться с GetNumCom.dll.

Помогите понять описание.
Спасибо
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
11.09.2012, 14:17
...подключение сторонних DLL в NET следует осуществлять согласно вышеприведенным ссылкам. VS не держим-с, так что сами. Если нужно будет изменить параметры экспорта в DLL в ту или иную сторону, пишите, модифицирую.

Не по теме:

Хотя вот на шарпее (C#) мои DLL-ки с аналогичными параметрами экспорта, вр-онлайновцы, согласно инструкции http://msdn.microsoft.com/en-u... 72513.aspx, подключали и использовали с успехом. Что конкретно они писали, не спрашивайте, VS не использую.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.09.2012, 14:17
Помогаю со студенческими работами здесь

Получить VID и PID юсб флешки
Всем привет, собственно необходимо получить информацию о флешке хотя бы VID и PID номера... Пробовал через...

Не могу получить PID,VID устройства USB
Linux, Qt, hidapi/hidraw Пишу некую программу, которая должна работать с несколькими устройствами. Использую библиотеку hidapi-hidraw...

как можно получить данные из ком-порта?
Пожалуйста, напомните, В Вижуал Бейсик как можно получить и отправить даннқе на адреса порт. В КюБейсик это бқло так: a=INP(ADRESS)...

LibUsbDotNet - как программно поменять VID/PID
Здравствуйте. Осваиваю LibUsbDotNet. И сразу возникла куча вопросов. Есть у них на сайте пример, выводящий список подключенных...

RegisterDeviceNotification / WM_DEVICECHANGE / VID _ PID
Не могу подписаться на WM_DEVICECHANGE какие-то неизвестные ошибки не пойму что не так virtual void WndProc(Message% m) override ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru