Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB4, VB5, VB6 | 25.07.03 |
COM-Schnittstellen auf Verfügbarkeit prüfen Dieser Tipp prüft, welche COM-Schnittstellen auf dem System vorhanden sind und gibt diese in einer ListBox aus. | ||
Autor: Dietmar G. Bayer | Bewertung: | Views: 34.374 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Für das Prüfen von COM-Ports zeigen wir Ihnen heute 2 Möglichkeiten.
Die erste Möglickkeit versucht durch Öffnen des Ports festzustellen, ob dieser existiert. Dabei werden auch Ports im Netz (Com-Server) erkannt. Alle erkannten COM-Ports werden in einer ListBox ausgegeben.
Dim i As Integer Dim F As Integer Dim sCOMParam As String ' Fehlerbehandlung aktivieren On Error Resume Next ' 16 Schnittstellen werden von VB unterstützt For i = 1 To 16 ' String mit COM-Default-Werten sCOMParam = "COM" & CStr(i) & ":9600,n,8,1" ' Versuch den COM-Port zu öffnen F = FreeFile Err.Clear Open sCOMParam For Input As #F ' wenn es jetzt kinen Fehler gibt, ' dann existiert der COM-Port If Err.Number = 0 Then List1.AddItem "COM" + CStr(i) Close #F End If Next i ' Fehlerbehandlung wieder ausschalten On Error Goto 0
Das ganze lässt sich natürlich auch in eine kleine Funktion packen, der man dann als Parameter den zu prüfenden COM-Port übergibt:
Public Function COMPort_Exists(ByVal nPort As Integer) As Boolean ' Existsiert eine bestimmte COM-Schnittstelle? Dim F As Integer Dim sCOMParam As String ' Fehlerbehandlung aktivieren On Error Resume Next ' String mit COM-Default-Werten sCOMParam = "COM" & CStr(nPort) & ":9600,n,8,1" ' Versuch den COM-Port zu öffnen F = FreeFile Err.Clear Open sCOMParam For Input As #F ' wenn es jetzt kinen Fehler gibt, ' dann existiert der COM-Port COMPort_Exists = (Err.Number = 0) Close #F ' Fehlerbehandlung wieder ausschalten On Error Goto 0 End Function
Aufruf der Funktion:
Dim bResult As Boolean bResult = COMPort_Exists(1)
2. Möglichkeit:
Der zweite Tipp zeigt uns zu den lokalen COM-Ports einige Informationen, darunter auch den Typ des Ports wie RS232 RS422, RS485 oder einen IR Port (Win2000 und XP)
Dim objWMIService As Object Dim colItems As Object Dim objItem As Object On Error Resume Next Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_SerialPort", , 48) For Each objItem In colItems MsgText1 = "Port: " + vbTab + objItem.DeviceID MsgText2 = "Typ: " + vbTab + objItem.ProviderType MsgText3 = "Max. BaudRate: " + vbTab + objItem.MaxBaudRate MsgBox MsgText1 + vbCrLf + MsgText2 + vbCrLf + MsgText3 Next On Error GoTo 0
Mit dieser Methode lassen sich auch weiter Informationen über hardwareseitig unterstütze Verfahren z.B. X-On/X-Off herausfinden.