Hallo,
vermutlich vorerst meine letzte Hürde die es zu lösen gilt.
-Der PC besitzt meist mehrere COMs
-Das Modul was an einen Port angeschlossen ist sendet mir ein "OK" zurück, wenn ich eine bestimmte Zeichenfolge sende.
Der nötige Com-Port soll also automatisch ermittelt werden.
Zum test hatte ich ein kleines Programm geschrieben, aber es scheitert schon darann, das ich an COM1 und COM3 Daten senden kann und bei COM2 bekomme ich einen Fehler (COm1-3 vorhanden, Modul an COM3)
Gedanke: ein bereits geöffneter COM darf nicht abgefragt werden um nicht andere Module an den COMs zu beeinflussen. Wäre das Richtig so?
Wie teste ich ob ein Port bereits offen ist?
Das habe ich schon mal als Gerüst zusammengestellt.
(Für das Forum abgeändert, da sonnst zu lang)
Habe gerade einen bösen fehler entdekt Z gibt hier die Anzahl der Ports an, nicht aber die eigentliche Nummer. Gehen wir also mal davon aus, das es nur COM1-3 gibt
Ist die Reihenfolge prinzipiell Falsch?
Da wo die Fragezeichen sind komm ich eben nicht weiter.
---> Hier geht es halt anders weiter
Danke für jede Hilfe
vermutlich vorerst meine letzte Hürde die es zu lösen gilt.
-Der PC besitzt meist mehrere COMs
-Das Modul was an einen Port angeschlossen ist sendet mir ein "OK" zurück, wenn ich eine bestimmte Zeichenfolge sende.
Der nötige Com-Port soll also automatisch ermittelt werden.
Zum test hatte ich ein kleines Programm geschrieben, aber es scheitert schon darann, das ich an COM1 und COM3 Daten senden kann und bei COM2 bekomme ich einen Fehler (COm1-3 vorhanden, Modul an COM3)
Gedanke: ein bereits geöffneter COM darf nicht abgefragt werden um nicht andere Module an den COMs zu beeinflussen. Wäre das Richtig so?
Wie teste ich ob ein Port bereits offen ist?
Das habe ich schon mal als Gerüst zusammengestellt.
(Für das Forum abgeändert, da sonnst zu lang)
Habe gerade einen bösen fehler entdekt Z gibt hier die Anzahl der Ports an, nicht aber die eigentliche Nummer. Gehen wir also mal davon aus, das es nur COM1-3 gibt
VB.NET-Quellcode
- Public Class Form1
- Dim COM_Schnittstellen As String()
- Dim A As Integer ' Anzahl der gefundenen Ports
- Dim Port As String 'Port der gerade geählt ist
- DIM Z AS integer
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- COM_Schnittstellen = System.IO.Ports.SerialPort.GetPortNames() ' COMs ermitteln
- A = COM_Schnittstellen.Length 'Anzahl der Schnittstellen
- IF A = 0 then MSGBOX ("kein COM gefunden") : --->ENDE
- For Z = 1 to A 'alle Ports abfragen
- IF ????Port schon geöffnet???? then Next : ---> Nichts gefunden
- Dim com As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM"&Z) : '?????ist das so erlaubt?
- COM.writeline ("Hallo") 'Daten senden
- ???? Antwort mit ????? "OK" then --> Z ist das was ich suche...weiter im programm
- Close.COM ' Port schließen
- Next z
- End Sub
- Sub SendSerialData(ByVal data As String)
- Using com As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("com"&Z)
- com.WriteLine(data)
- End Using
- End Sub
- End Sub
Ist die Reihenfolge prinzipiell Falsch?
Da wo die Fragezeichen sind komm ich eben nicht weiter.
---> Hier geht es halt anders weiter
Danke für jede Hilfe
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Rodenberger“ ()