用Vb编写:如果电脑接的是usb接口转串口,那在combo中显示端口为com3和com4,如果电脑接的是串口那么combo中显示的端口是com1和com2

解决方案 »

  1.   

    Sub showPortNum(portName As String)
    Combo1.Clear
    Select Case portName
    Case "usb"
    Combo1.AddItem "COM3"
    Combo1.AddItem "COM4"
    Case "com"
    Combo1.AddItem "COM1"
    Combo1.AddItem "COM2"
    End Select
    Combo1.Text = "选择端口号"
    End SubPrivate Sub Command1_Click()
    showPortNum "com"
    End Sub
      

  2.   

    你可以编一个函数,检查一下电脑存在的串口并显示出来啊,这样比较通用.
    可用如下函数,在本机测试通过,如果存在那些串口,funCommPortFix就会返回存有端口的字符串数组.'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '函 数 名:  funCommPortFix
    '作    用:  对COM口进行检测,测试哪些端口可以使用
    '使用说明:  定义一动态数组arr() As String,令arr=funCommPortFix(),便可获得存在端口号."
    '修改历史:
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function funCommPortDetect(PortNumber As Integer) As Integer
        On Error Resume Next
        MSComm0.CommPort = PortNumber
        MSComm0.PortOpen = True
        If Err Then
            funCommPortDetect = -1
        Else
            funCommPortDetect = PortNumber
        End If
        MSComm0.PortOpen = False
    End Function
    Public Function CommPortFix() As String()
        Dim intCommPortNumber As Integer, blnFirst As Boolean
        Dim strResult As String
        On Error Resume Next    '屏蔽错误
        blnFirst = True
        For intCommPortNumber = 1 To 16
            If funCommPortDetect(intCommPortNumber) <> -1 Then
                If blnFirst Then
                    strResult = "COM" & intCommPortNumber
                    blnFirst = False
                Else
                    strResult = strResult & " " & "COM" & intCommPortNumber
                End If
            End If
        Next
        CommPortFix = Split(strResult, " ")
    End Function
      

  3.   

    使用MSCOMM控件可获取当前计算机的可以使用的串口号,
     
    Option Explicit 
    Dim a As Integer 
    Private Sub Form_Load() 
    Me.AutoRedraw = True 
    On Error GoTo uerror 
    For a = 1 To 4 'WINXP下可搜索到16 
    MSComm1.CommPort = a 
    MSComm1.PortOpen = True 
    If MSComm1.PortOpen = True Then 
    Print "可用Com号= "; a 
    MSComm1.PortOpen = False 
    Else 
    End If 
    Next 
    Exit Sub 
    uerror: 
    Print "出错或占用Com号= "; a 
    Resume Next 
    End Sub
      

  4.   

    我试了一下,可是我定义一个动态数组给他赋值
     Dim StrSport() As String
     StrSport = CommPortFix()
    程序运行后显示不能给数组赋值