Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Хрень получает фсе FTDI. Как работает - сам разбирайся.

Отправлено Trashy (192.168.2.203,213.167.60.19) 10 мая 2011, г. 18:33
В ответ на: как в Дельфи список com-портов получить знаю, а как их "тип" получить - понять что это виртуальный порт WizNet нада.... отправлено basilmak 10 мая 2011, г. 18:25



#define CLASSGUID GUID_DEVCLASS_PORTS
#define IFACE_GUID GUID_DEVCLASS_PORTS




Label5 -> Caption = ("Устройство не обнаружено");
//ComboBox6->Items->Clear();
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD i;
// Create a HDEVINFO with all present devices.
_GUID GUIDCLASS;//{36FC9E60-C465-11CF-8056-444553540000};

hDevInfo = SetupDiGetClassDevs(&CLASSGUID,//NULL,
0, // Enumerator
0,
DIGCF_PRESENT | DIGCF_INTERFACEDEVICE );

if (hDevInfo == INVALID_HANDLE_VALUE)
{
GetErrorLast
}
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)
{ //Memo1->Lines->Add(i);
DWORD DataT;
LPTSTR buffer = NULL;
DWORD buffersize = 0;
buffersize = 80;
buffer = (char *)LocalAlloc(LPTR,buffersize);

while (!SetupDiGetDeviceRegistryProperty(hDevInfo,
&DeviceInfoData,
SPDRP_MFG,//DEVICEDESC,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{ // Change the buffer size.
if (buffer)
LocalFree(buffer);
(HANDLE)buffer = LocalAlloc(LPTR,buffersize);
}
else
{// Insert error handling here.
break;
}
} // Memo1->Lines->Add((char*)buffer);
if (((AnsiString)((char*)buffer))==("FTDI"))
{
while (!SetupDiGetDeviceRegistryProperty(hDevInfo,
&DeviceInfoData,
SPDRP_FRIENDLYNAME,//SPDRP_MFG,//DEVICEDESC,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{ // Change the buffer size.
if (buffer)
LocalFree(buffer);
(HANDLE)buffer = LocalAlloc(LPTR,buffersize);
}
else
{ // Insert error handling here.
break;
}
}
Label5 -> Caption = ((char*)buffer);
char * St = 0;
char * rt = "";
St = strstr((char*)buffer,"COM");
rt = strstr((char*)buffer,")");
*(unsigned char*)rt=0;
if (St)
{
ComboBox5->Text = St;
}
}
}
if ( GetLastError()!=NO_ERROR &&
GetLastError()!=ERROR_NO_MORE_ITEMS )
{ // Insert error handling here.
MessageBox( NULL, "Normal", "Error", MB_OK | MB_ICONSTOP );
}
SetupDiDestroyDeviceInfoList(hDevInfo);



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите 2 и 3:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru