自动检测使用的串口 ( 积分: 100 )

  • 主题发起人 主题发起人 2843223
  • 开始时间 开始时间
2

2843223

Unregistered / Unconfirmed
GUEST, unregistred user!
我的计算机有个com口,一个在使用。一个没有使用。
问题: 怎么检测到正在使用的com口号码。
如 com1正在使用,直接检测到com1然后返回com1数值,要是com1,com2都没有使用,返回数据就是0,最好能给出原代码。谢谢
 
我的计算机有个com口,一个在使用。一个没有使用。
问题: 怎么检测到正在使用的com口号码。
如 com1正在使用,直接检测到com1然后返回com1数值,要是com1,com2都没有使用,返回数据就是0,最好能给出原代码。谢谢
 
用createfile去试啊,返回错误就表明可能正在试用。
 
如果要是没有的com口,返回也是错误的,
这样就不行了
 
你从注册表 HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/SERIALCOMM 中可以读出当前计算机可用的串行口名称,按此名称来进行遍历就行了。
 
不能打开的串口就是没有使用的啊
 
uses
Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
st: Tstrings;
i: Integer;
begin

reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware/devicemap/serialcomm', False);
st := TstringList.Create;
try
reg.GetValueNames(st);
for i := 0 to st.Count - 1do

Memo1.Lines.Add(reg.Readstring(st.strings));
finally
st.Free;
end;

reg.CloseKey;
finally
reg.Free;
end;

end;

然后就如楼上所说,打不开的就是在使用着的呀
 
正如吕雪松所说返回错误就表明
“可能”
正在试用。
有没有
什么错误的返回数据呀??
 
If the function succeeds, the return value is an open handle to the specified file. If the specified file exists before the function call and dwCreationDisposition is CREATE_ALWAYS or OPEN_ALWAYS, a call to GetLastError returns ERROR_ALREADY_EXISTS (even though the function has succeeded). If the filedo
es not exist before the call, GetLastError returns zero.
If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.
 
后退
顶部