Hallo
Heute grübel ich über der Frage wie ich mehrere Rückgabewerte einer Funktion am besten händeln könnte. Als beispiel ermittle ich mit folgender Funktion alle freien seriellen Schnittstellen des Pc:
Public Shared Function GetFreeUsablePorts() As String()
Dim TestPort As SerialPort = New SerialPort, MyPorts As String()
Dim ports() As String, port As String, i As Integer = 0
ports = IO.Ports.SerialPort.GetPortNames() 'Ports des Rechners
' ermitteln
ReDim MyPorts(ports.Length - 1)
For Each port In ports
Try
With TestPort
.PortName = port 'Com 1, 2, ..., n
.ReadTimeout = 500 'ReadTimeout in ms
.Open() 'Versuchen zu öffnen
End With
Catch ex As Exception 'Fehlschlag
Finally
If TestPort.IsOpen = True Then
MyPorts(i) = port
End If
TestPort.Close()
End Try
I += 1
Next port
Return MyPorts
End Function Die Ports erhalte ich dann als Strings (Com1, Com2 usw) wenn diese nicht gerade belegt sind.
Nun würde ich gern alle Ports ermitteln lassen (also auch belegte) und die Namen mit einem True/False zurückgeben (offen/geschlossen). Ich benötigte also eine Funktion mit zwei Rückgabewerten bzw. einem Typ welcher dies ermöglicht. Prinzipiell würde der Code so ausschauen:
Public Shared Function GetPortStatus() As ????
Dim TestPort As SerialPort = New SerialPort, Status as ????
Dim ports() As String, port As String, i As Integer = 0
ports = IO.Ports.SerialPort.GetPortNames() 'Ports des Rechners
' ermitteln
For Each port In ports
Try
With TestPort
.PortName = port 'Com 1, 2, ..., n
.ReadTimeout = 500 'ReadTimeout in ms
.Open() 'Versuchen zu öffnen
End With
Catch ex As Exception 'Fehlschlag
Finally
Status=port 'Namen des Ports Übergeben
If TestPort.IsOpen = True Then 'Status des Ports Übergeben
Status = True
Else
Status = False
End If
TestPort.Close()
End Try
i += 1
Next port
Return Status 'Typ zurückgeben
End Function
End Class Die ???? müssten durch einen entsprechenden Typen ersetzt werden. Weiß aber nicht welcher für eine solche Aufgabe geeignet ist da hier ja sowohl String-Werte als auch Boolsche Werte auftreten. Im Prinzip erhoffe ich mir Später eine Auflistung wie diese:
Com1, True
Com4, False
Com5, True
usw.
Hat jemand einen Tip wie ich dies hinbekommen kann?
Ahnungsloser ahnungsloser... |