请问怎么自动获取串口号?使用的是pcomm控件 串口通讯中使用了pcomm控件,现在有个问题,我是使用了232转USB装置,这样接入的串口就是随机的,怎么样能在程序里自动读取串口号呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以通过注册表来获取计算机的串口号uses Registry;procedure TFrm_Main.FormCreate(Sender: TObject);var reg: TRegistry; ts: TStrings; i: integer;begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey('hardware\DEVICEMAP\SERIALCOMM', false); ts := TStringList.Create; reg.GetValueNames(ts); ComboBox1.Clear; for i := 0 to ts.Count - 1 do begin ComboBox1.Items.Add(reg.ReadString(ts.Strings[i])); end; ts.Free; reg.CloseKey; reg.free; ComboBox1.ItemIndex := 0;end; 我试了一下,这个过程把所有的串口号都读出来了,我现在要自动获取那个232-USB设备的串口号,并且把这个号赋给程序中的portn。我要从这个口通信,调用sio_open之类的函数。请问这个功能怎么实现呢。我现在在硬件管理器里看见的USB设备的串口号是com6,这时我要让portn=6;请问调用你这个过程怎么实现呢? procedure TFrm_Main.FormCreate(Sender: TObject);var reg: TRegistry; ts: TStrings; i: integer;begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey('hardware\DEVICEMAP\SERIALCOMM', false); ts := TStringList.Create; reg.GetValueNames(ts); ComboBox1.Clear; for i := 0 to ts.Count - 1 do begin ComboBox1.Items.Add(reg.ReadString(ts.Strings[i])); end; ts.Free; reg.CloseKey; reg.free; ComboBox1.ItemIndex := 0;end;读出来的结果是com2 com3 com4 com5 com6 用SetupAPI枚举端口,根据属性判断是否为你的USB通讯端口。或者从注册表枚举所有端口后,依次尝试通讯(写一个指令并读取回应看是否成功) 求助用ServerSocket如何对大于8k的数据包分组发送? 请问tidattachment是作什么的. 谁是DELPHI高手,进来帮小弟搞定这个问题吧 注意了:高分求网吧内用的网络游戏地址! 求救 请教获取时间的方法?极菜的问题!!在线等 请问一个问题。。。在线。。。急切 d7报表,急 不建BDE别名,用ADO的方式怎样获得SQLServer的所有数据库名(服务器名,权限已给) 西安的朋友有想做Delphi工作的没?我公司急缺人才!!! 求opengl功能代码--opengl高手请进 有项目需找人合作完成
var
reg: TRegistry;
ts: TStrings;
i: integer;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware\DEVICEMAP\SERIALCOMM',
false);
ts := TStringList.Create;
reg.GetValueNames(ts);
ComboBox1.Clear;
for i := 0 to ts.Count - 1 do begin
ComboBox1.Items.Add(reg.ReadString(ts.Strings[i]));
end;
ts.Free;
reg.CloseKey;
reg.free;
ComboBox1.ItemIndex := 0;
end;
var
reg: TRegistry;
ts: TStrings;
i: integer;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware\DEVICEMAP\SERIALCOMM',
false);
ts := TStringList.Create;
reg.GetValueNames(ts);
ComboBox1.Clear;
for i := 0 to ts.Count - 1 do begin
ComboBox1.Items.Add(reg.ReadString(ts.Strings[i]));
end;
ts.Free;
reg.CloseKey;
reg.free;
ComboBox1.ItemIndex := 0;
end;读出来的结果是com2 com3 com4 com5 com6
或者从注册表枚举所有端口后,依次尝试通讯(写一个指令并读取回应看是否成功)