获取系统串口号

简介:

原来C++Builder6在XP下获取串口的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void  TTools::GetSystemPortList(TStringList * pList)
{
         TRegistry *regkey= new  TRegistry();
         pList->Clear();
         regkey->RootKey=HKEY_LOCAL_MACHINE;
         TStringList *KeyNames;
         KeyNames= new  TStringList();
         regkey->OpenKey( "HARDWARE\\DEVICEMAP\\SERIALCOMM" , false );
         regkey->GetValueNames(KeyNames);
         for ( int  i=0;i<=(KeyNames->Count-1);i++)
         {
            AnsiString a = regkey->ReadString(KeyNames->Strings[i]);
            pList->Add(a);
         }
        
         regkey->CloseKey();
         delete  KeyNames;
         delete  regkey;
}

这种方法,编译好的程序,在Win10下无效,需要管理员权限执行才行.
在Win10直接用API读注册表获取,代码如下:

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
void  TTools::GetSystemAllPort(TStringList * pList)
{
     HKEY  hKey;
     DWORD  result;
     TCHAR  valueName[255];
     TCHAR  data[255];
     DWORD  valueNameSize,dataSize;
     DWORD  i;
     result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,  "Hardware\\DeviceMap\\SerialComm"
              NULL, KEY_READ, &hKey); //读取注册表串口信息
     if (ERROR_SUCCESS == result)
     {
         for (i=0;i<256 ;i++)
         {
             valueNameSize = dataSize =  sizeof (valueName) /  sizeof ( TCHAR );
             result = RegEnumValue(hKey, i, valueName, &valueNameSize, NULL, NULL, 
                      ( LPBYTE )data, &dataSize);
             if (ERROR_NO_MORE_ITEMS == result )
             {
                 break ;
             }
             else
             {
                pList->Add(( char *)data);
             }
         }
     }
     else
     {
         ::MessageBox(0, "PORT ERROR!" , "Error" ,0);
     }
     RegCloseKey(hKey);
}















本文转自Chinayu201451CTO博客,原文链接: http://blog.51cto.com/9233403/2067175 ,如需转载请自行联系原作者


相关文章
|
7月前
串口服务器的选择中注意点
串口服务器的选择中注意点
25 0
查看串口
查看串口
84 0
可编程 USB 转串口适配器开发板参数设置
前述各种指令在参数修改完成后仅可当时生效,修改后的参数断电不保存。使用[SAVE]关键字可将当前参数保存至 EEPROM,使参数永久保存。
可编程 USB 转串口适配器开发板参数设置
可编程USB 转串口适配器开发板的S2S功能
USB2S 支持基于 STC 单片机的二次开发,若有需要,可参照原理图和单片机型号手册自行开发具有特殊功能的固件程序。
可编程USB 转串口适配器开发板的S2S功能
|
存储 芯片
可编程 USB 转串口适配器开发板 UART 转 I2C
AT24Cxx 是可擦写 EEPROM 存储芯片,xx 表示容量,单位为 Kbits。USB2S 板上已有 1 片 AT24Cxx (默认为 AT24C02),设备地址为 0xA0。
可编程 USB 转串口适配器开发板 UART 转 I2C
|
网络安全 芯片
可编程 USB 转串口适配器开发板 时钟芯片参数读取与修改
DS1302 是实时时钟芯片,SPI 接口,可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302 内部有一个 31×8 的用于临时性存放数据的 RAM 寄存器。
可编程 USB 转串口适配器开发板 时钟芯片参数读取与修改
|
传感器 测试技术 芯片
可编程 USB 转串口适配器开发板连接计算机使用S2STool工具
S2STool 是为 S2S 固件开发的测试工具,运行于 Windows 平台,内置串口调试助手和 S2S 参数配置工具,支持动态解析自定义的芯片驱动,用户可自行编写、修改、增加任何芯片的驱动程序, 方便对芯片进行测试和评估。
可编程 USB 转串口适配器开发板连接计算机使用S2STool工具
|
传感器 芯片 内存技术
可编程 USB 转串口适配器开发板电压设置
通过电压选择器跳线可设置 USB2S 的工作电压,如下图所示,跳线帽位于 3.3 一侧时工作电压为 3.3V,跳线帽位于 5.0 侧时工作电压为VIN(即USB 供电时的 5.0V)。 设置工作电压时必须两个跳线帽同时调整。
可编程 USB 转串口适配器开发板电压设置
|
物联网 芯片 开发者
串口初始化及RFID上电复位|学习笔记
快速学习串口初始化及RFID上电复位
249 0
串口初始化及RFID上电复位|学习笔记
|
区块链 开发工具 C语言
教你用Qt开发一个串口上位机控制LED
教你用Qt开发一个串口上位机控制LED
715 0
教你用Qt开发一个串口上位机控制LED