vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB4, VB5, VB625.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. BayerBewertung:  Views:  34.324 
ohne HomepageSystem:  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.
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.