请问用MSCOMM控件,如何枚举系统当前可用的串口,并且显示名称
利用‘异常’机制来获取,代码如下procedure Tform_Winzard.CheckComPort;
var
i:integer;
ComName:String;
begin
for i := 1 to 16 do
begin
try
MSComm.CommPort:=i;
MSComm.PortOpen:=true;
sleep(30);
MSComm.PortOpen:=false;
ComName:= 'COM '+IntToStr(i);
RadioGroup1.Items.Add(ComName);
except
continue;
end;
end;
end;
但是用usb转串口,却找不到串口。 各位有啥好办法没有? 有一个好方法 ,刚才试了可行
通过读取注册表来获取,串口信息都是保存在注册表的这个位置
var
reg : TRegistry;
ts : TStrings;
i : integer;
sName,sPort:string;
slList:TStringList;
begin
reg := TRegistry.Create;
ts := TStringList.Create;
slList:=TStringList.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware\devicemap\serialcomm',false);
reg.GetValueNames(ts);
slList.Sorted:=true;
for i := 0 to ts.Count -1 do begin
sName:=LowerCase(Trim(ts.Strings));
//得到串口名称
sPort := UpperCase(Trim(reg.ReadString(sName)));
if Copy(sPort,1,3) <> 'COM' then Continue;
sPort:=Copy(sPort,4,Length(sPort));
sPort:=FormatFloat('000',StrToInt(sPort));
slList.Add(sPort);
end;
slPort.Clear;
for i:=0 to slList.Count-1 do
slPort.Add('COM'+IntToStr(StrToInt(slList.Strings)));
finally
ts.Free;
reg.CloseKey;
reg.free;
end; 楼主方法不错,连猫口也找出来了 楼主能讲一下不?
页:
[1]