怎样查串口被个程序占用

 我来答
匿名用户
2014-09-02
展开全部

有时候因为用的设备次数多了,或者装了一些硬件的驱动后,驱动程序会一直占用这个端口,当你在对端口号进行打开操作的时候,你会发现端口打不开,显示的是“正在使用中”或者端口已被占用。解决办法如下:

在“开始菜单”中的“运行”中输入regedit,然后点“确定”,打开注册表编辑器

按照下图中的路径找到COM Name Arbiter。然后在右侧“ComDb”上点“右键”选择“删除”。然后关闭注册表编辑器,重启电脑。再次重复刚才的更改端口号的步骤就可以了。

删除掉注册表的这个项目是让xp系统重新构建COM端口的列表,这样就可以改掉那些端口被占用的状态。不过如果修改注册表并重启后,仍然有COM口状态是使用中的话,那说明你这个COM端口真正的连接着一个硬件设备的,这种情况下你只能选其他的端口号或者你检查并去掉这个设备。



萍水e相逢
推荐于2016-04-06 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.5亿
展开全部
如你怕打开端口出错,可用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'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式