串口问题。请大虾们帮忙。(100分)

  • 主题发起人 主题发起人 sohard
  • 开始时间 开始时间
S

sohard

Unregistered / Unconfirmed
GUEST, unregistred user!
1、如何检测机器上所有的可用端口?
2、如何知道我哪个端口正在使用?
 
没人知道吗
。。。
 
1.
var
reg: TRegistry;
st: Tstrings;
rt: TStrings;
i: Integer;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware/devicemap/serialcomm', False);
st := TstringList.Create;
rt := TStringList.Create;
try
reg.GetValueNames(st);
for i := 0 to st.Count - 1 do
rt.Add(reg.Readstring(st.strings));
Result := rt.Text; //rt里面就是可用串口
finally
st.Free;
rt.Free;
end;

reg.CloseKey;
finally
reg.Free;
end;
end;
2.不知道:)
 
netstat -ano
 
2.打开正在使用的端口,然后捕捉异常,有此端口详细的信息.
例如:
TRY
//打开端口

.......
EXCEPT ON E:Exception DO
BEGIN
memo1.Text:='打开端口发生错误:'+E.Message;
END;
 
慢的就用端口扫描。快速得到有个函数。
 
1.二楼办法可行
2.你机器共有几个端口?如果不跟串口服务器相连的话,一般最多的有两个;既然就两个串口,那你依次打开这两个串口,如果哪个出现异常,那就说明串口正在使用(在硬件串口没坏的情况下);
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
816
SUNSTONE的Delphi笔记
S
S
回复
0
查看
737
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部