Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: COM, OLE, ActiveX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Segaman
2 / 2 / 3
Регистрация: 03.09.2014
Сообщений: 148
1

Как узнать подключенные COM порты, их названия и количество

26.01.2015, 11:52. Просмотров 1734. Ответов 2
Метки нет (Все метки)

вообщем хочу написать программу, которая будет автоматически находить нужный COM порт по названию устройства и подключаться к нему.
нужно узнать список подключенных COM портов и получить их названия.
заранее спасибо
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2015, 11:52
Ответы с готовыми решениями:

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

[GPS] Как отобразить количество спутников в виде найденные/подключенные
Ну вобщем вопрос в названии. Как отобразить спутники в программе?

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

Как узнать про порты (разъемы) на моем компьютере?
Добрый вечер! В универе задали задание, узнать про порты на своем компьютере...

Как узнать названия всех подключений?
Вот сейчас у меня несколько подключений (и VPN и Megafon и всякие по сети). Как...

2
vxg
Модератор
3275 / 2072 / 327
Регистрация: 13.01.2012
Сообщений: 8,054
26.01.2015, 13:11 2
-порты бывают от COM1 до COM256.
-какие конкретно порты существуют прямо сейчас в системе можно узнать наверное из диспетчера устройств... мб еще как-то но у меня такой задачи не стояло
-наличие абонента подключенного на порт определить невозможно.
0
Segaman
2 / 2 / 3
Регистрация: 03.09.2014
Сообщений: 148
26.01.2015, 15:38  [ТС] 3
Лучший ответ Сообщение было отмечено Segaman как решение

Решение

решение уже сам собрал из того, что было в MSDN
C++
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
struct ComPort
{
    ComPort(lpstr name, lpstr key);
    ~ComPort();
    lpstr name;
    lpstr key;
};
 
void GetComList(CList&list)
{
    if(&list==NULL)return;
    writelog("GetComList");
 
    HKEY rKey;
    DWORD retCode = ERROR_SUCCESS;
    CHAR achValue[16383];
    CHAR achClass[MAX_PATH] = "";
    DWORD cchClassName = MAX_PATH;
    DWORD cSubKeys=0;
    DWORD cValues=0;
    //LONG a = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\", 0, KEY_READ, &rKey);
    LONG a = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM\\", 0, KEY_READ, &rKey);
    if(a!=ERROR_SUCCESS)
    {
        MessageBox(0,"GetComList error opening key","",MB_ICONERROR);
        writelog("GetComList error opening key");
        RegCloseKey(rKey);
        return;
    }
    a = RegQueryInfoKey(rKey,achClass,&cchClassName,NULL,&cSubKeys,NULL,NULL,&cValues,NULL,NULL,NULL,NULL);
    if(a!=ERROR_SUCCESS)
    {
        MessageBox(0,"GetComList error query info key","",MB_ICONERROR);
        writelog("GetComList error query info key");
        RegCloseKey(rKey);
        return;
    }
    {
        char txt[256];
        sprintf(txt,"GetComList name[%s] count[%ld]",achClass,cValues);
        writelog(txt);
    }
    for(int i=0; retCode == ERROR_SUCCESS; i++)
    {
        DWORD cchValue = 16383;
        retCode = RegEnumValue(rKey,i,achValue,&cchValue,NULL,NULL,NULL,NULL);
        if(retCode == (DWORD)ERROR_SUCCESS)
        {
            int len = strlen(achValue);
            lpstr nm = new char[len+1];
            strcpy(nm,achValue);
            nm[len] = 0;
            DWORD retCode2 = RegQueryValueEx(rKey,nm,NULL,NULL,(LPBYTE)&achValue,&cchValue);
            if(retCode2==(DWORD)ERROR_SUCCESS)
            {
                len = strlen(achValue);
                lpstr vl = new char[len+1];
                strcpy(vl,achValue);
                vl[len] = 0;
                {
                    char lms[128];
                    sprintf(lms,"GetComList item[%s] val[%s]",nm,vl);
                    writelog(lms);
                }
                list.Add(new ComPort(nm,vl));
            }else writelog("GetComList RegQueryValueEx error");
        }else writelog("GetComList RegEnumValue error");
    }
    RegCloseKey(rKey);
}
теперь ищу, как узнать имя устройства в портах.
само же устройство подключено в usb и эмулирует общение с ним по COM порту.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2015, 15:38

как узнать названия полей базы данных через VB6
У меня есть база данных Access в которой имеется таблица "Студенты", а названия...

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru