当前位置:编程学习 > VB >>

请问,如何用VB6代码获取到本机的各端口

用于打印传输的,比如,LPT1、COM1之类的 --------------------编程问答-------------------- 我也求下代码 --------------------编程问答-------------------- WMI --------------------编程问答--------------------

Private Sub cmdCkCom_Click()
    For i = 1 To 8
        Call CheckPort(i)
    Next

End Sub



Private Sub CheckPort(X As Integer)
        Timer1.Enabled = False
        If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
       
        On Error GoTo ErrorHandler
        MSComm1.CommPort = i
        MSComm1.Settings = "19200,N,8,1"
        MSComm1.InputLen = 0
        MSComm1.PortOpen = True
        On Error GoTo 0
       
        MSComm1.Output = "ATI1" & Chr$(13)
                
        If WaitForResponse(1) = False Then GoTo NothingReturned
            
        MSComm1.Output = "ATI4" & Chr$(13)
                
        If WaitForResponse(1) = False Then GoTo NothingReturned
        
        MSComm1.PortOpen = False
        cmbPort.AddItem ("COM " + Str(i))
        Exit Sub
       
NothingReturned:
        MSComm1.PortOpen = False
        cmbPort.AddItem ("COM " + Str(i))
        Exit Sub
    
ErrorHandler:
        
        MsgBox "读取串口有误:" + ErrorString(err.Number, X)
End Sub



Private Function WaitForResponse(X As Integer) As Boolean

    buffer = ""
    WaitForResponse = False
    TimeElapsed = 0
    Timer1.Enabled = True
   
        Do
      
            DoEvents
      
            buffer = buffer & MSComm1.Input
      
                If Len(buffer) <> 0 Then

                        If InStr(1, buffer, "OK") <> 0 Then
            
                            WaitForResponse = True
                            Timer1.Enabled = False
                            TimeElapsed = 0
                            
                            Exit Function
                        End If

                End If
   
                If TimeElapsed > X Then
                    Timer1.Enabled = False
                    Exit Function
                End If
   
        Loop
   
End Function




Private Function ErrorString(ERROR As Long, X As Integer) As String

    Dim tmp As String

        Select Case ERROR
            Case 8021
                tmp = "设备控制块错误"

            Case 394
                tmp = "属性写只读"
            Case 380
                tmp = "无效的属性值"
            Case 8012
                'tmp = "The device is not open"
                tmp = "端口在使用"

            Case 8005
                tmp = "端口在使用"

            Case 8002
                tmp = "无效的端口号"
                
            Case 8018
                tmp = "在端口打开时操作无效"

            Case 8000
                tmp = "端口已打开或其他程序使用"

            Case 8020 & 8015
                'tmp = "Error reading comm device"
                tmp = "端口错误"

            Case 383
                tmp = "属性只读"
                
            Case Else
                tmp = "其他错误..."

        End Select

    ErrorString = tmp

End Function

--------------------编程问答-------------------- .PortOpen=ture后出现错误的都是不存在或者被占用的 --------------------编程问答-------------------- 学习拉,很不错的方法
谢谢
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,