
怎样查串口被个程序占用
2014-09-02
展开全部
有时候因为用的设备次数多了,或者装了一些硬件的驱动后,驱动程序会一直占用这个端口,当你在对端口号进行打开操作的时候,你会发现端口打不开,显示的是“正在使用中”或者端口已被占用。解决办法如下:
在“开始菜单”中的“运行”中输入regedit,然后点“确定”,打开注册表编辑器。
按照下图中的路径找到COM Name Arbiter。然后在右侧“ComDb”上点“右键”选择“删除”。然后关闭注册表编辑器,重启电脑。再次重复刚才的更改端口号的步骤就可以了。
删除掉注册表的这个项目是让xp系统重新构建COM端口的列表,这样就可以改掉那些端口被占用的状态。不过如果修改注册表并重启后,仍然有COM口状态是使用中的话,那说明你这个COM端口真正的连接着一个硬件设备的,这种情况下你只能选其他的端口号或者你检查并去掉这个设备。
展开全部
如你怕打开端口出错,可用try..except ..end 结构处理异常,如果出错你可提示本端口不可用,提示用户选择其他端口。
如你想测试那个端口是否可用,你可以用mscomm或spcomm控件测试一下,如果
串口被占用或不存在就会触发异常,你再根据返回错误提示判断那个端口是被占用还是不存在,如mscomm控件,错误码8002是端口不存在,8005是端口已被占用。
下面是用spcomm控件,测试端口的delphi代码,
for j:=1 to 10 do //找系统端口
begin
comm1.CommName:='com'+inttostr(j);
try
comm1.StartComm;
//标记本端口可用
memo1.Lines.Add('串口'+inttostr(j)+'可用');
comm1.StopComm;
except
//标记本端口不可用
memo1.Lines.Add('串口'+inttostr(j)+'不可用');
end;
end;
next
Startcomm方法用于打开串口,当打开失败时通常会报错。错误主要有 7种
:⑴串口已经打开;⑵打开串口错误;⑶文件句柄不是通信句柄;⑷不能
够安装通信缓存;⑸不能产生事件;⑹不能产生读进程;⑺不能产生写进
程;
返回包括:
'This serial port already opened'
'Error opening serial port'
'File handle is not a comm handle'
'Cannot setup comm buffer'
'Unable to create event'
'Unable to create read thread'
'Unable to create write thread'
如你想测试那个端口是否可用,你可以用mscomm或spcomm控件测试一下,如果
串口被占用或不存在就会触发异常,你再根据返回错误提示判断那个端口是被占用还是不存在,如mscomm控件,错误码8002是端口不存在,8005是端口已被占用。
下面是用spcomm控件,测试端口的delphi代码,
for j:=1 to 10 do //找系统端口
begin
comm1.CommName:='com'+inttostr(j);
try
comm1.StartComm;
//标记本端口可用
memo1.Lines.Add('串口'+inttostr(j)+'可用');
comm1.StopComm;
except
//标记本端口不可用
memo1.Lines.Add('串口'+inttostr(j)+'不可用');
end;
end;
next
Startcomm方法用于打开串口,当打开失败时通常会报错。错误主要有 7种
:⑴串口已经打开;⑵打开串口错误;⑶文件句柄不是通信句柄;⑷不能
够安装通信缓存;⑸不能产生事件;⑹不能产生读进程;⑺不能产生写进
程;
返回包括:
'This serial port already opened'
'Error opening serial port'
'File handle is not a comm handle'
'Cannot setup comm buffer'
'Unable to create event'
'Unable to create read thread'
'Unable to create write thread'
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询