请问,如何用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
--------------------编程问答-------------------- .PortOpen=ture后出现错误的都是不存在或者被占用的 --------------------编程问答-------------------- 学习拉,很不错的方法
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
谢谢
补充:VB , 基础类