自己的vb程序为什么总是提示无效的端口号 ?
设备管理器com口就是我设计的com1.程序是这样的,自己感觉没问题啊PrivateSubForm_Load()IfMSComm1.PortOpen=TrueThenMS...
设备管理器com口就是我设计的com1.
程序是这样的,自己感觉没问题啊
Private Sub Form_Load()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Else
End If
Combo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.ListIndex = 0 '默认com1
MSComm1.CommPort = Combo1.ListIndex + 1
MSComm1.Settings = "9600,N,8,1"
Shape1.FillColor = &HFFFC0 '默认
End Sub
Private Sub Combo1_Change()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.CommPort = Combo1.ListIndex + 1 '读取com口号
End Sub
Private Sub Command2_Click()
On Error GoTo uerror
If Command2.Caption = "关闭串口" Then
MSComm1.PortOpen = False
Command2.Caption = "打开串口"
Shape1.FillColor = &HFFFFC0
Else
MSComm1.PortOpen = True
Command2.Caption = "关闭串口"
Shape1.FillColor = &HFF
End If
Exit Sub
uerror:
msg$ = "无效端口号"
Title$ = "串口调试助手"
X = MsgBox(msg$, 48, Title$)
End Sub 展开
程序是这样的,自己感觉没问题啊
Private Sub Form_Load()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Else
End If
Combo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.ListIndex = 0 '默认com1
MSComm1.CommPort = Combo1.ListIndex + 1
MSComm1.Settings = "9600,N,8,1"
Shape1.FillColor = &HFFFC0 '默认
End Sub
Private Sub Combo1_Change()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.CommPort = Combo1.ListIndex + 1 '读取com口号
End Sub
Private Sub Command2_Click()
On Error GoTo uerror
If Command2.Caption = "关闭串口" Then
MSComm1.PortOpen = False
Command2.Caption = "打开串口"
Shape1.FillColor = &HFFFFC0
Else
MSComm1.PortOpen = True
Command2.Caption = "关闭串口"
Shape1.FillColor = &HFF
End If
Exit Sub
uerror:
msg$ = "无效端口号"
Title$ = "串口调试助手"
X = MsgBox(msg$, 48, Title$)
End Sub 展开
2个回答
展开全部
原因有:端口没有打开时不可以操作,端口打开时不可以再次打开,端口关闭时不能再次关闭
解决方法:
使用 On Error Resume Next,遇到错误时继续运行
在要发送数据时,或某些必要的情况下,检查 Mscomm1.PortOpen是否=True,若不是,可以尝试打开一次端口,或弹出提示信息对话框
比如:
On Error Resume Next
If Mscomm1.PortOpen = False Then MSComm1.PortOpen=True
If MSComm1.PortOpen = False Then
MsgBox "COM1没有成功打开!"
End If
每次操作前都检查一遍端口,虽然麻烦,但是非常有效。
解决方法:
使用 On Error Resume Next,遇到错误时继续运行
在要发送数据时,或某些必要的情况下,检查 Mscomm1.PortOpen是否=True,若不是,可以尝试打开一次端口,或弹出提示信息对话框
比如:
On Error Resume Next
If Mscomm1.PortOpen = False Then MSComm1.PortOpen=True
If MSComm1.PortOpen = False Then
MsgBox "COM1没有成功打开!"
End If
每次操作前都检查一遍端口,虽然麻烦,但是非常有效。
追问
我把程序补上了,帮忙检查一下吧,我是没办法了
追答
你这里有一句:
On Error GoTo uerror 有问题,在遇到错误的时候,有可能是正常的情况,不要跳转到错误处理
应该改为
On Error Resume Next
应该在Exit Sub 之前判断此次操作是否完成,若没有完成,再提示"MsgBox "COM1没有成功打开!"
还有一个问题, Combo1_Change这个过程是无效的,功能实现不了,应该用Combo1_Click
我给你改一下程序:
Private Sub Form_Load()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
Combo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.ListIndex = 0 '默认com1
MSComm1.CommPort = Combo1.ListIndex + 1
MSComm1.Settings = "9600,N,8,1"
Shape1.FillColor = &HFFFC0 '默认
End Sub
Private Sub Combo1_Click()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
Shape1.FillColor = &HFFFFC0
MSComm1.CommPort = Combo1.ListIndex + 1 '读取com口号
End Sub
Private Sub Command2_Click()
On Error Resume Next
If Command2.Caption = "关闭串口" Then
MSComm1.PortOpen = False
Command2.Caption = "打开串口"
Shape1.FillColor = &HFFFFC0
If MSComm1.PortOpen = True Then
MsgBox "端口COM" & MSComm1.CommPort & "关闭失败"
End If
Else
MSComm1.PortOpen = True
Command2.Caption = "关闭串口"
Shape1.FillColor = &HFF
If MSComm1.PortOpen = False Then
MsgBox "端口COM" & MSComm1.CommPort & "打开失败"
End If
End If
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询