Windows2000+SP3,VB6+SP5,运行一个用MSCOMM控件的程序,
第一次运行时正常,此后退出这个VB程序或按VB中停止后再次运行程序,
执行到MScomm1.portoprn=True时出错,显示错误8005,端口已打开;
此时如执行MScomm1.portoprn=True,显示错误8012,设备未打开
此时运行其他使用串口程序也无法使用此串口,注销后仍无法使用此串口;
重启机器后可以使用此串口(又是只能用一次)
什么原因?如何解决?

解决方案 »

  1.   

    你在上一次打开端口里关闭它了吗?(一般情况程序退出会自动关闭,有时则不然),在打开端口时最好也要加一个判断.
    if mscomm1.portopen=false then mscomm1.portopen=true
    do until mscomm1.portopen=true
      doevents
    loop
    关闭时也是如此,那么端口一般就可以关闭了,如果还不放心还可以
    set mscomm1=nothing
      

  2.   

    有些时候用第三方控件,退出时没有关闭端口就会出现此问题。MSCOMM是不会出现这个问题的。
      

  3.   

    我现在编的程序也有类似问题:
    if mscomm1.portopen=false then 
        mscomm1.portopen=true
    end if
    当程序执行到mscomm1.portopen=true时竟然报端口已经打开的错!!!
    在点一次执行按钮还能过去,不再报错!
    郁闷呀!
      

  4.   

    如果按照golden24kcn(不甜) 的方法来进行处理,应该是没有什么问题的,我是用的WIN2000+VB6。0+SP5为什么没有这种现象呢?
    不会是WIN2000的SP3的问题吧
    关注
      

  5.   

    加上一条错误处理就可以避免问题。
    ON ERROE RESUME NEXT。
    程序启动时,就算端口已经打开,不会报错。
      

  6.   

    我以前也遇到過!最重要就是要關閉端口:退出程序時一定要關閉端口;程序非法退出時也要使用錯誤處理,關閉端口.
    同意:golden24kcn(不甜)的寫法!
    對於有些朋友在程序中端口出現錯誤用on error來處理,解決guosheng (郭盛)的問題,不是根本的辦法.如果每次都是正常關弊端口,應該不會出現上述問題.
    個別情況下出現,可以用on error
      

  7.   

    最后我发现,
    只要使用MSComm1.RTSEnable = True而串口未与其他设备连接就出现此现象,
    删除此句或连接RTS/CTS至另一串口互发数据都可消除此现象。
    golden24kcn(不甜)的回答不行,因为此时确实MSComm1.PortOpen=False,但执行Mscomm1.PortOpen=True时既显示错误8005,端口已打开 。
     liuyanghe111(yang) 用错误陷阱,表面上没事,程序不报错,
    但实际上端口没打开,该干的活都干不了。
    不管怎么样,感谢大家的参与与回答。