串口被占用 能否强行关闭

lilicaocao 2012-05-05 10:00:31
COM1正被其他程序使用着,我的程序需要用到COM1通信,因此我想在我的程序里加一个功能,先判断一下COM1是否被占用,若是被占用,则关闭COM1(在我的程序里关闭被其他程序占用的COM1),然后再打开COM1为我所用,不知这个功能能否实现???


PS:
有网友说可以使用 hComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
再调用CloseHandle(hComm);
但是当COM1被占用时CreateFile返回值始终是INVALID_HANDLE_VALUE,根本无法关闭

PS:
即使我知道了hComm,但在我的程序里调用CloseHandle(hComm);也无法关闭该串口
只有在占用COM1的程序中调用CloseHandle(hComm);才能关闭串口

!!!!求大侠指教,小弟分不多,愿都送上!!!!


...全文
3139 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pfengk 2012-07-27
  • 打赏
  • 举报
回复
有什么办法可以判断COM口为什么会被占用吗?
lqkankan 2012-05-29
  • 打赏
  • 举报
回复
火星大能猫 2012-05-29
  • 打赏
  • 举报
回复 1
[Quote=引用 9 楼 的回复:]

这个问题我也遇到了,但是还是没找到解决办法,这个串口被占用不是正在使用的程序造成的,是使用过的程序造成的,即便重启电脑或关闭电脑再开机还是在占用状态,而且会往上累计,有时候达到40多了,目前的解决方法是手动更改端口号,比如全部设置为com1,会提示“这个com口正在被使用”,点击确定,然后再改回原来的串口号就会被释放了
[/Quote]
这是一个办法.
馒头仔 2012-05-29
  • 打赏
  • 举报
回复
楼主就不能选别的COM吗,非要用COM1,连接哪个COM可以给用户选择啊
q229235084 2012-05-29
  • 打赏
  • 举报
回复
这个不懂。!!学习一下。
有没有搞USB 跟上机位通信的?
doubleu2005 2012-05-28
  • 打赏
  • 举报
回复 1
这个问题我也遇到了,但是还是没找到解决办法,这个串口被占用不是正在使用的程序造成的,是使用过的程序造成的,即便重启电脑或关闭电脑再开机还是在占用状态,而且会往上累计,有时候达到40多了,目前的解决方法是手动更改端口号,比如全部设置为com1,会提示“这个com口正在被使用”,点击确定,然后再改回原来的串口号就会被释放了
spark 2012-05-28
  • 打赏
  • 举报
回复
请问LZ,问题解决没?我现在也碰到了这个问题,正烦恼着呢,如果找到了方法,还请告知我一下,不胜感激!
缭绕飘渺 2012-05-08
  • 打赏
  • 举报
回复
搞串口也有几年经验了
从来没这样弄过
打开出错,就抛出错误信息

绕个弯的话
你看看进程检测,判断到占用串口的进程
然后关闭它
然后你程序再启动串口

检测的话很容易做到,像360,QQ电脑管家的解锁等等
lilicaocao 2012-05-08
  • 打赏
  • 举报
回复
自己顶起,求帮助
xky96 2012-05-06
  • 打赏
  • 举报
回复
其实在WinNT平台之前,串口可以通过UART寄存器直接访问,没有进程独占的说法---当然那时微软也没有真正的多任务系统。也就是说硬件底层是允许各个进程任意操作的。

为防止各个进程对同一串口的通讯冲突,WinNT禁止跨进程访问非共享打开的串口。

也可能有什么我们不知道的未公开API可以破解这种保护机制吧。

试试这款工具,
http://www.crsky.com/soft/1074.html

至少它可以列出被各个进程使用的句柄,也可以强行终止进程
lilicaocao 2012-05-06
  • 打赏
  • 举报
回复
自己顶起,望各位大侠帮帮忙啊!!!
Athenacle_ 2012-05-05
  • 打赏
  • 举报
回复
这种独占打开的串口,怎么再打开啊?。。。
OS必须保证重复打开的操作无效啊、、、、

真的,LZ去想想为什么COM1会被占用。然后GetLastError试试,看看是什么原因
xky96 2012-05-05
  • 打赏
  • 举报
回复
不行,串口上是不用动脑筋了。
还是想办法解决为什么串口会被占用吧
devmiao 2012-05-05
  • 打赏
  • 举报
回复
可以。不会对再打开的程序造成影响。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧