Port already open 提示

tanzhiwei 2007-09-15 01:58:08
本人不懂串行通信方面的编程,发觉程序可以控制机器的运动, 程序也可以读取及发送数据给机器,感到极大兴趣。想学习学习。。。

公司有一台机器,连着一台电脑,电脑通过COM1和此机器连接,用的软件是VB写的。
我猜用的是MSCOMM控件。
软件一般运行正常,但有时关了软件后,再开启,就会出现Port already open 提示,
应该是COM1被占用后没有释放的提示。我重启电脑,重启机器,再运行有时还是这样的提示,如何办呢?
是不是应该在程序上加上
...
If MSComm1.PortOpen = True Then

MSComm1.PortOpen = False

End If
MSComm1.PortOpen = True '先关了,再打开,就可保证不出现此错误?
...


对于程序是出现的错误提示:Port Already Open,我是这样做的(重启不行的前提条件下):
先在硬件管理器中禁有COM1,重启,再启用COM1,打开程序,就可以运行了.

------------------------------------------

本人只是此方面的菜鸟,想学习,请高手们带带呀,谢谢了.
...全文
393 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanzhiwei 2007-09-15
  • 打赏
  • 举报
回复
我查了很多资料,发觉,程序自己申请打开的串口,一定要在程序退出时自己关闭它,否则可能出现再次运行或别的程序使用到相应的串口(COM1 或 COM2)时,就会出现Port already open的错误,别的程序是不能强行关闭这个串口的(听说能,但挺麻烦的)
所以在程序中,应该捕获这个Port already open这个错误,否则让系统捕获,你的程序就异常退出了。

------------------------------------------------------------------------
On Error GoTo aa
MSComm1.Settings = "9600,N,8,1" '9600波特,无奇偶校验,8位数据,一个停止位
MSComm1.InputLen = 0 '读入整个缓冲区
MSComm1.CommPort = 1 '串口1 COM1
MSComm1.PortOpen = True '打开端口
...

aa:

If Err.Number = 8005 Then MsgBox "串口已经被别的程序占用"

End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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