我用vb编写了一段关于串口通信的程序,调试的时候发现只要一点打开串口,他就会跳出‘无效的端口号’信息

当然我用的是Mscomm控件,还有就是用的虚拟串口,难道不能用虚拟串口么,有哪位仁兄,知道原因的,帮忙指点一下,谢谢!PrivateSubCombol_Click()If... 当然我用的是Mscomm控件,还有就是用的虚拟串口,难道不能用虚拟串口么,有哪位仁兄,知道原因的,帮忙指点一下,谢谢!

Private Sub Combol_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False '关闭通信端口
End If
MSComm1.CommPort = Combol.ListIndex + 1
End Sub
Private Sub Command1_Click()
On Error GoTo uerror
If Command1.Caption = "关闭串口" Then
MSComm1.PortOpen = False
Command1.Caption = "打开串口"
Shape1.FillColor = &HFFFFC0
Else
MSComm1.PortOpen = True
Command1.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.AddItem "COM3"
Combo1.AddItem "COM4"
Combo1.AddItem "COM5"
Combo1.AddItem "COM6"
Combo1.AddItem "COM7"
Combo1.AddItem "COM8"
Combo1.ListIndex = 0
MSComm1.CommPort = 3
MSComm1.Settings = "19200,n,8,1"
Command1.Caption = "打开串口"
Shape1.FillColor = &HFFFFC0
Option2.Value = True
Combo2.AddItem "256000"
Combo2.AddItem "128000"
Combo2.AddItem "115200"
Combo2.AddItem "57600"
Combo2.AddItem "38400"
Combo2.AddItem "28800"
Combo2.AddItem "19200"
Combo2.AddItem "9600"
Combo2.AddItem "4800"
Combo2.AddItem "2400"
Combo2.AddItem "1200"
Combo3.AddItem "无 None"
Combo3.AddItem "奇 Odd"
Combo3.AddItem "偶 Even"
Combo4.AddItem "4"
Combo4.AddItem "5"
Combo4.AddItem "5"
Combo4.AddItem "6"
Combo4.AddItem "7"
Combo4.AddItem "8"
Combo5.AddItem "1"
Combo5.AddItem "2"
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 512
End Sub
Private Sub MSComm1_OnComm()
Dim BytReceived() As Byte
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEventRxOver
Text1.Text = ""
Exit Sub
Case comEvReceive
MSComm1.InputLen = 0
strBuff = MSComm1.Input
If MSComm1.InputMode = comInputModeBinary Then
BytReceived() = strBuff
For i = 0 To ubond(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i)) & ""
Else
strData = strData & Hex(BytReceived(i)) & ""
End If
Next
Text1 = Text1 & strData
strData = ""
Else
Text1 = Text1 & strBuff
End If
End Select

End Sub
Private Sub Option1_Click()
MSComm1.InputMode = comInputModeText
End Sub

Private Sub Option2_Click()
MSComm1.InputMode = comInputModeBinary
End Sub
展开
 我来答
zdingyun
2013-08-16 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48174
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

LZ的代码缺省打开的是COM3,不知LZ的虚拟串口号是啥。


仔细看了下LZ的COM口选择控件的名称有误,数字1在代码中是字母l,以致造成COM口无法选择。


修改如下:

Private Sub Combo1_Click()
    If MSComm1.PortOpen = True Then
        MSComm1.PortOpen = False                    '关闭通信端口
    End If
    MSComm1.CommPort = Combo1.ListIndex + 1
    Text3 = MSComm1.CommPort
End Sub

Private Sub Command1_Click()
    On Error GoTo uerror
    If Command1.Caption = "关闭串口" Then
        MSComm1.PortOpen = False
        Command1.Caption = "打开串口"
        Shape1.FillColor = &HFFFFC0
    Else
        MSComm1.PortOpen = True
        Command1.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.AddItem "COM3"
    Combo1.AddItem "COM4"
    Combo1.AddItem "COM5"
    Combo1.AddItem "COM6"
    Combo1.AddItem "COM7"
    Combo1.AddItem "COM8"
    Combo1.ListIndex = 0
    MSComm1.CommPort = Combo1.ListIndex + 1
    MSComm1.Settings = "19200,n,8,1"
    Command1.Caption = "打开串口"
    Shape1.FillColor = &HFFFFC0
    Option2.Value = True
    Combo2.AddItem "256000"
    Combo2.AddItem "128000"
    Combo2.AddItem "115200"
    Combo2.AddItem "57600"
    Combo2.AddItem "38400"
    Combo2.AddItem "28800"
    Combo2.AddItem "19200"
    Combo2.AddItem "9600"
    Combo2.AddItem "4800"
    Combo2.AddItem "2400"
    Combo2.AddItem "1200"
    Combo3.AddItem "无 None"
    Combo3.AddItem "奇 Odd"
    Combo3.AddItem "偶 Even"
    Combo4.AddItem "4"
    Combo4.AddItem "5"
    Combo4.AddItem "5"
    Combo4.AddItem "6"
    Combo4.AddItem "7"
    Combo4.AddItem "8"
    Combo5.AddItem "1"
    Combo5.AddItem "2"
    MSComm1.InBufferSize = 1024
    MSComm1.OutBufferSize = 512
    MSComm1.RThreshold = 1
End Sub
Private Sub MSComm1_OnComm()
    Dim BytReceived() As Byte
    Dim i As Integer
    Select Case MSComm1.CommEvent
        Case comEventRxOver
            Text1.Text = ""
            Exit Sub
        Case comEvReceive
            MSComm1.InputLen = 0
            strBuff = MSComm1.Input
            If MSComm1.InputMode = comInputModeBinary Then
                BytReceived() = strBuff
                For i = 0 To UBound(BytReceived)
                    If Len(Hex(BytReceived(i))) = 1 Then
                        strData = strData & "0" & Hex(BytReceived(i)) & ""
                    Else
                        strData = strData & Hex(BytReceived(i)) & ""
                    End If
                Next
                Text1 = Text1 & strData
                strData = ""
            Else
                Text1 = Text1 & strBuff
            End If
    End Select

End Sub
Private Sub Option1_Click()
    MSComm1.InputMode = comInputModeText
End Sub

Private Sub Option2_Click()
    MSComm1.InputMode = comInputModeBinary
End Sub
电气自动化0016
2013-08-15
知道答主
回答量:1
采纳率:0%
帮助的人:1469
展开全部
不能用虚拟串口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式