小弟用VB的MSCOMM控件编写串口通讯程序,其中的portopen属性虽然可以简单判断一下串口是否已经打开,但是达不到我的要求。因为MSCOMM1.portopen好像只能检测MSCOMM1的端口是否打开,不能检测VB程序外部对串口的操作。比如我在程序外打开“串口调试助手”,明明已经占用COM1,但是在程序中MSCOMM1.portopen属性还是为false,根本不能检测到“调试助手”已经占用了端口号。不知道程序中怎样编写才能得知VB程序外的程序(比如串口调试助手等软件)已经打开了串口?分不够再加!谢谢!

解决方案 »

  1.   

    参考:
    http://community.csdn.net/Expert/topic/3932/3932936.xml?temp=.6236994
      

  2.   

    可以采用“错误处理方法”来处理:
    On Error Goto Err0:        ' 首先打开错误捕捉功能
    .....
    MSComm1.PortOpen = True    '打开串口,一旦出错,就跳转Err0
    .....Err0:
    Select Case Err.Number
    Case 8005    ' 串口已被占用的错误代码
         ' 此处加入串口已被占用的处理
         .........................
    Case ....   ' 其它错误处理
         ....
    End Select