10.16 Wie liste ich die verfügbaren seriellen Schnittstellen auf?
VB5-VB6
Von: Thorsten Dörfler
Die serielle Schnittstelle ist zwar eine aussterbende Art, aber immer noch die häufigste Verbindungsform zu externen Geräten. Möchten Sie alle verfügbaren seriellen COM-Ports auflisten, können Sie das MSComm-Steuerelement verwenden und versuchen alle möglichen COM-Ports von 1-16 (Windows unterstützt mehr als 16 Ports, dies ist eine Einschränkung des Steuerelements) zu öffnen und werten dabei das Ergebnis aus.
Dies erlaubt gleichzeitig festzustellen, ob ein Port bereits belegt ist und diesen aus dem Ergebnis auszuschließen:
Public Function CommPortsAvail(ByRef MSComm As MSComm, _
Optional ByVal FreePortsOnly As Boolean _
) As Variant
Dim lPorts() As Integer
Dim lPort As Integer
Dim l As Integer
On Error Resume Next
With MSComm
For lPort = 1 To 16
.CommPort = lPort
.PortOpen = True
If (Err.Number <> comPortInvalid) Then
If Not (FreePortsOnly And _
Err.Number = comPortAlreadyOpen) Then
ReDim Preserve lPorts(l)
lPorts(i) = lPort
l = l + 1
End If
End If
If (.PortOpen) Then
.PortOpen = False
End If
Err.Clear
Next
End With
CommPortsAvail = lPorts()
End Function
Wenn Sie mit VB6 arbeiten, können Sie sich den Umweg über den Variant zur Rückgabe des Array sparen und direkt das Integer Array deklarieren und zurückgeben.