本人不懂串行通信方面的编程,发觉程序可以控制机器的运动, 程序也可以读取及发送数据给机器,感到极大兴趣。想学习学习公司有一台机器,连着一台电脑,电脑通过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,打开程序,就可以运行了.------------------------------------------本人只是此方面的菜鸟,想学习,请高手们带带呀,谢谢了.

解决方案 »

  1.   

    我查了很多资料,发觉,程序自己申请打开的串口,一定要在程序退出时自己关闭它,否则可能出现再次运行或别的程序使用到相应的串口(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