自己的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
展开
 我来答
天上曲_one
推荐于2017-09-10 · TA获得超过639个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:214万
展开全部
原因有:端口没有打开时不可以操作,端口打开时不可以再次打开,端口关闭时不能再次关闭
解决方法:
使用 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
tonkeys
2012-08-14 · TA获得超过1513个赞
知道大有可为答主
回答量:2087
采纳率:33%
帮助的人:2419万
展开全部
能贴出代码吗

我试了你的代码是可用的,
是不是你的机器端口被占用了。??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式