Перейти к содержанию
    

Считать полную информацию о COM порте в Windows XP

Привет всем!

 

Пишу прогу в Visual Studio 2008 на С++ для работы с COM портами под ОС Windows XP.

Вопрос такой как можно считать дополнительную информацию о COM портах, которая пишится в менеджере устройств.

На рисунке цветом выделил какую именно информацию нужно считывать.

 

Спасибо!

post-39115-1340368561_thumb.jpg

Изменено пользователем Neumeyka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос такой как можно считать дополнительную информацию о COM портах, которая пишится в менеджере устройств.

Информацию можно считать из реестра: HKEY_LOCAL_MACHINE\hardware\devicemap\serialcomm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

извиняюсь, что поднял некропост.

 

А в C# тоже надо через реестр, или есть какой-то готовый, но неведомый мне метод ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотелось бы заметить, что предложенное решение не совсем то, что просил топик стартер.

post-1143-1398082189_thumb.png

 

 

Вообщем, кому интересно, то на С# будет так:

        //--------------------------------------------------------------------
        private string get_com_ext_info( int com_id )
        {
            RegistryKey key = Registry.LocalMachine;
            key = key.OpenSubKey( "HARDWARE\\DEVICEMAP\\SERIALCOMM" );
            string[] names = key.GetValueNames();

            for( int i = 0; i < names.Count(); i++ )
            {
                System.Object value = key.GetValue( names[ i ] );
                if( value.ToString( ) == ( "COM" + com_id.ToString( ) ) )
                    return names[ i ].Replace( "\\Device\\", "" );
            }

            return "???";
        }

 

Ща пошукаю, как сделать аналогично диспетчеру задач

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотелось бы заметить, что предложенное решение не совсем то, что просил топик стартер.

 

Пример поиска порта с нужным именем (на Си):

void uart_list_devices()
{
    char name[]="Bluegiga Bluetooth Low Energy";

    BYTE* pbuf = NULL;
    DWORD reqSize = 0;
    DWORD n=0;
    HDEVINFO hDevInfo;
    //guid for ports
    static const GUID guid = { 0x4d36e978, 0xe325, 0x11ce, { 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 } };
    char *str;
    char tmp[MAX_PATH+1];
    int i;
    SP_DEVINFO_DATA DeviceInfoData;

    snprintf(tmp,MAX_PATH,"%s (COM%%d)",name);


    DeviceInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
    hDevInfo = SetupDiGetClassDevs(&guid,   //Retrieve all ports
                                      0L,
                                     NULL,
                                     DIGCF_PRESENT );
    if(hDevInfo==INVALID_HANDLE_VALUE)
        return;
    while(1)
    {

        if(!SetupDiEnumDeviceInfo(
                hDevInfo,
                n++,
                &DeviceInfoData
        ))
        {
            SetupDiDestroyDeviceInfoList(hDevInfo);
            return;
        }
        reqSize = 0;
        SetupDiGetDeviceRegistryPropertyA(hDevInfo, &DeviceInfoData, SPDRP_FRIENDLYNAME, NULL, NULL, 0, &reqSize);
        pbuf = (BYTE*)malloc(reqSize>1?reqSize:1);
        if (!SetupDiGetDeviceRegistryPropertyA(hDevInfo, &DeviceInfoData, SPDRP_FRIENDLYNAME, NULL, pbuf, reqSize, NULL))
        {
            free(pbuf);
            continue;
        }
        str = (char*)pbuf;
        if(sscanf(str,tmp,&i)==1)
        {

            printf("%s\n", str);
            //emit DeviceFound(str,QString("\\\\.\\COM%1").arg(i));
        }
        free(pbuf);
    }
    return;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...