我用combobox控件做的com口选择,但无论选择那个com口都可以正常运行(串口线连接的是com1口),那位能帮我看一下!谢了 
Private Sub Combo1_Change()           '下拉菜单,选择COM口
Dim COM As String
If Combo1.Text = "COM1" Then
COM = 1
ElseIf Combo1.Text = "COM2" Then
COM = 2
'ElseIf Combo1.Text = "COM3" Then
'MSComm1.CommPort = "COM3"
'ElseIf Combo1.Text = "COM4" Then
'MSComm1.CommPort = "COM4"
'ElseIf Combo1.Text = "COM5" Then
'MSComm1.CommPort = "COM5"
'ElseIf Combo1.Text = "COM6" Then
'MSComm1.CommPort = "COM6"
'ElseIf Combo1.Text = "COM7" Then
'MSComm1.CommPort = "COM7"
'ElseIf Combo1.Text = "COM8" Then
'MSComm1.CommPort = "COM8"
'ElseIf Combo1.Text = "COM9" Then
'MSComm1.CommPort = "COM9"
Else
End If
If MSComm1.PortOpen = True Then
    MSComm1.CommPort = COM
    End If
    
End Sub

解决方案 »

  1.   

    请将你的代码中的:
    If MSComm1.PortOpen = True Then
        MSComm1.CommPort = COM
        End If
    修改为:
    If MSComm1.PortOpen Then  Msccomm1.PortOpen=False
    msccomm1.commport=com
    msccomm1.portopen=true在PortOpen=True时,是不能设置Commport的
      

  2.   

    If MSComm1.PortOpen = True Then
        MSComm1.PortOpen = False 
    End If
    MSComm1.CommPort = COM
    MSComm1.PortOpen = True 
      

  3.   

    还是不行啊!
    现在我又改了一些代码!combobox控件:
    Private Sub Combo1_Change()
    'If MSComm1.PortOpen Then MSComm1.PortOpen = False
    If Combo1.Text = "COM1" Then
        MSComm1.CommPort = 1
    ElseIf Combo1.Text = "COM2" Then
        MSComm1.CommPort = 2
    ElseIf Combo1.Text = "COM3" Then
        MSComm1.CommPort = 3
    ElseIf Combo1.Text = "COM4" Then
        MSComm1.CommPort = 4
    ElseIf Combo1.Text = "COM5" Then
        MSComm1.CommPort = 5
    ElseIf Combo1.Text = "COM6" Then
        MSComm1.CommPort = 6
    ElseIf Combo1.Text = "COM7" Then
        MSComm1.CommPort = 7
    ElseIf Combo1.Text = "COM8" Then
        MSComm1.CommPort = 8
    ElseIf Combo1.Text = "COM9" Then
        MSComm1.CommPort = 9
        End If
    End Sub
    打开串口按键:
    Private Sub Command5_Click()
        MSComm1.PortOpen = True
        Command5.Enabled = False
    End Sub初始化:
    Form1.AutoRedraw = True
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.InputLen = 0              ' 设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据
    MSComm1.InBufferCount = 0
    MSComm1.OutBufferCount = 0
    MSComm1.RThreshold = 1            ' 每个字符到接收缓冲区都触发接收事件
    MSComm1.InputMode = comInputModehexadecimal      '采用二进制传输
    'If MSComm1.PortOpen = False Then
    'MSComm1.PortOpen = True
    'End If