阅读:2871回复:4
获取系统串口数量(不用打开串口的方法)
最好在98下也可以使用。
|
|
沙发#
发布于:2004-12-08 18:11
从注册表中枚举
|
|
|
板凳#
发布于:2004-12-08 20:48
这个方法不知道可不可以动态刷新,比如一个虚拟串口设备连接了他知道么?我手边没有USB串口,想知道一下。枚举设备的方法98下不知道怎么做。
|
|
地板#
发布于:2004-12-12 21:15
最简单的方法:
打开com1,成功吗? 打开com2,成功吗? ................. 最多四个!!! |
|
地下室#
发布于:2005-03-15 13:19
枚举注册表:
/* -------- 从注册表里搜寻安装的串口 ----------------------- Win2k/XP和Win98/Me的注册表值不同,所以用枚举 把串口名字写入一个ComboBox控件里 */ void FindCommPort( CComboBox *pComboBox ) { HKEY hKey; #ifdef _DEBUG ASSERT( pComboBox != NULL ); pComboBox->AssertValid(); #endif if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, \"Hardware\\\\DeviceMap\\\\SerialComm\", NULL, KEY_READ, &hKey ) == ERROR_SUCCESS ) // 打开串口注册表 { int i=0; char portName[256],commName[256]; DWORD dwLong,dwSize; while(1) { dwLong = dwSize = sizeof(portName); if( ::RegEnumValue( hKey, i, portName, &dwLong, NULL, NULL, (PUCHAR)commName, &dwSize ) == ERROR_NO_MORE_ITEMS ) // 枚举串口 break; pComboBox->AddString( commName ); // commName就是串口名字 i++; } if( pComboBox->GetCount() == 0 ) { ::AfxMessageBox( \"在HKEY_LOCAL_MACHINE:Hardware\\\\DeviceMap\\\\SerialComm里找不到串口!!!\" ); // ::PostQuitMessage(1); } RegCloseKey(hKey); } } |
|