6 个解决方案
#1
看到你的代码片段,当时我就震惊了。抛开效率的问题不说了,就说你的需求,可以考虑遍历端口,用try...catch捕获错误。
#2
你在电脑的设备管理器中看端口
#3
从注册表中读取串口号,修改一下就能应用到你的程序
http://blog.const.net.cn/a/772.htm
http://blog.const.net.cn/a/772.htm
#4
额 ,我没怎么写过代码,第一次写,还请版主多指教,嘿嘿
#5
用TMS Async32串口控件, 这个最好用, 你需要的功能也有
#6
TStringList *tmp = new TStringList; //自動取得COM Port的數量
TRegistry *reg = new TRegistry;
reg->RootKey = HKEY_LOCAL_MACHINE;
if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
{
reg->GetValueNames(tmp);
for(int i=0;i<tmp->Count;i++)
{
AnsiString asCOM = reg->ReadString(tmp->Strings[i])+" 已连接....";
Memo1->Lines->Add(asCOM);
}
reg->CloseKey();
}
else Memo1->Lines->Add("没有COM口连接");
delete reg;
delete tmp;
TRegistry *reg = new TRegistry;
reg->RootKey = HKEY_LOCAL_MACHINE;
if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
{
reg->GetValueNames(tmp);
for(int i=0;i<tmp->Count;i++)
{
AnsiString asCOM = reg->ReadString(tmp->Strings[i])+" 已连接....";
Memo1->Lines->Add(asCOM);
}
reg->CloseKey();
}
else Memo1->Lines->Add("没有COM口连接");
delete reg;
delete tmp;
#1
看到你的代码片段,当时我就震惊了。抛开效率的问题不说了,就说你的需求,可以考虑遍历端口,用try...catch捕获错误。
#2
你在电脑的设备管理器中看端口
#3
从注册表中读取串口号,修改一下就能应用到你的程序
http://blog.const.net.cn/a/772.htm
http://blog.const.net.cn/a/772.htm
#4
额 ,我没怎么写过代码,第一次写,还请版主多指教,嘿嘿
#5
用TMS Async32串口控件, 这个最好用, 你需要的功能也有
#6
TStringList *tmp = new TStringList; //自動取得COM Port的數量
TRegistry *reg = new TRegistry;
reg->RootKey = HKEY_LOCAL_MACHINE;
if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
{
reg->GetValueNames(tmp);
for(int i=0;i<tmp->Count;i++)
{
AnsiString asCOM = reg->ReadString(tmp->Strings[i])+" 已连接....";
Memo1->Lines->Add(asCOM);
}
reg->CloseKey();
}
else Memo1->Lines->Add("没有COM口连接");
delete reg;
delete tmp;
TRegistry *reg = new TRegistry;
reg->RootKey = HKEY_LOCAL_MACHINE;
if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
{
reg->GetValueNames(tmp);
for(int i=0;i<tmp->Count;i++)
{
AnsiString asCOM = reg->ReadString(tmp->Strings[i])+" 已连接....";
Memo1->Lines->Add(asCOM);
}
reg->CloseKey();
}
else Memo1->Lines->Add("没有COM口连接");
delete reg;
delete tmp;