想实现一个功能,一个combo里面显示计算机上的串口号,一个命令按钮用于打开这个串口,遇到一个问题就是如果我用另外一个软件打开计算机上的一个串口,比如com1,然后我在combo里选择com1后按下打开串口按钮,总是显示串口已经打开。我在Mscomm的oncomm事件里写了错误处理,可是好像程序根本就没运行到oncomm程序段就显示实时错误8005,端口已经打开。
我想知道在vb里怎么捕获一个端口是否已经被打开或无效,我在命令按钮里用if语句判断也不行。
我想知道在vb里怎么捕获一个端口是否已经被打开或无效,我在命令按钮里用if语句判断也不行。
Private Sub Cmdopencom_Click()
Me.MSComm1.CommPort = Right(Me.Combo1.Text, 1)
If Me.MSComm1.PortOpen = False Then
Me.MSComm1.PortOpen = True
Else
If MsgBox("端口已经打开", vbOKOnly) = vbOK Then
Exit Sub
End If
End If
End Sub
Private Sub Cmdopencom_Click()
on error goto OpenErr
Me.MSComm1.CommPort = Right(Me.Combo1.Text, 1)
If Me.MSComm1.PortOpen = False Then
Me.MSComm1.PortOpen = True
End If
Exit sub
OpenErr:
msgbox "串口打开失败"
End Sub
on error Resume next
Err.clear
Me.MSComm1.CommPort = Right(Me.Combo1.Text, 1)
If Me.MSComm1.PortOpen = False Then
Me.MSComm1.PortOpen = True
End If
if err.number<>0 then
msgbox "串口打开失败"
end if
End Sub
Option Explicit
Dim i As Long
Dim entry
Private Sub Combo1_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.CommPort = Val(Combo1)
End SubPrivate Sub Command1_Click()
On Error GoTo useErr
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Exit Sub
useErr:
MsgBox ("COM错误!=" & Err.Number)
End SubPrivate Sub Form_Load()
For i = 1 To 16 ' 计数值从 1 到 100。
entry = i ' 创建输入项。
Combo1.AddItem entry ' 添加该输入项。
Next i
End Sub
Private Sub Cmdopencom_Click()
On Error GoTo err
Me.MSComm1.CommPort = Val(Right(Me.Combo1.Text, 1))
If Me.Cmdopencom.Caption = "打开串口" Then
If Me.MSComm1.PortOpen = False Then
Me.MSComm1.PortOpen = True
Me.Cmdopencom.Caption = "关闭串口"
Exit Sub
End If
Else
If Me.Cmdopencom.Caption = "关闭串口" Then
Me.MSComm1.PortOpen = False
End If
End If
err:
MsgBox err.Description, vbExclamation + vbOKOnly, "提示信息"
End Sub
问题是当一个串口被打开时是可以提示串口被占用,但当我打开一个串口后想要关闭这个串口是程序运行到红色的部分就跳过了直接运行err了,各位高手能详细解释下为什么吗?