LabVIEWForum.de
Serial auslesen wenn COM-Port verfügbar - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Serial auslesen wenn COM-Port verfügbar (/Thread-Serial-auslesen-wenn-COM-Port-verfuegbar)



Serial auslesen wenn COM-Port verfügbar - lrt65492 - 02.05.2012 09:46

Guten Tag,
ich habe ein Problem mit der seriellen Schnittstelle. Ich habe einen USB2Serial-Adapter, der so konfiguriert ist, dass er immer den COM-Port 7 (COM7) belegt. Mein vi soll nun erkennen wann der USB-Adapter eingesteckt ist und auch nur dann die Schnittstelle auslesen. Momentan wird nur beim Start des Programms die Verfügbarkeit überprüft.

Zwei ineinander verschachtelte Schleifen (eine für die Verügbarkeit und eine zum auslesen) wollte ich eigendlich vermeiden.
Was für Möglichkeiten gibt es da?

Vielen Dank
lrt65492


RE: Serial auslesen wenn COM-Port verfügbar - GerdW - 02.05.2012 10:08

Hallo Irt,

Zitat:Momentan wird nur beim Start des Programms die Verfügbarkeit überprüft.
Zwei ineinander verschachtelte Schleifen (eine für die Verügbarkeit und eine zum auslesen) wollte ich eigendlich vermeiden.
Wieso das denn nun wieder?
Entweder du willst zur Laufzeit ständig die Verfügbarkeit prüfen - oder nur beim Programmstart. Wenn du ständig (heißt: bei momentan nicht vorhandener Verbindung mit dem Gerät) prüfen willst, brauchst du eine äußere Schleife.

Evtl. würde sich hier eine Statemachine anbieten:
- State "init" prüft, ob COM-Port vorhanden und initialisiert diesen im Erfolgsfall
- State "Abfrage" läuft solange der Port vorhanden ist (d.h. bis ein [TimeOut-]Fehler auftritt)
- State "cleanup" räumt auf und geht zurück auf Anfang ("init")


RE: Serial auslesen wenn COM-Port verfügbar - Andora - 02.05.2012 10:23

(02.05.2012 09:46 )lrt65492 schrieb:  Guten Tag,
ich habe ein Problem mit der seriellen Schnittstelle. Ich habe einen USB2Serial-Adapter, der so konfiguriert ist, dass er immer den COM-Port 7 (COM7) belegt. Mein vi soll nun erkennen wann der USB-Adapter eingesteckt ist und auch nur dann die Schnittstelle auslesen. Momentan wird nur beim Start des Programms die Verfügbarkeit überprüft.

Zwei ineinander verschachtelte Schleifen (eine für die Verügbarkeit und eine zum auslesen) wollte ich eigendlich vermeiden.
Was für Möglichkeiten gibt es da?

Vielen Dank
lrt65492

Hallo,

oder steck alles in die Schleife.


RE: Serial auslesen wenn COM-Port verfügbar - lrt65492 - 03.05.2012 08:08

Guten Morgen,
ich wollte eine verschachtelte Schleife vermeiden, weil ich wirklich nur einmal in der Sekunde den Seriellen Port auslesen möchte, sonst kommt es dort zu Lesefehlern.
Ich weiß nicht wie genau der Ablauf der Schleifen dann funktioniert.
Wenn die serielle Schnittstelle angeschlossen ist, läuft dann nurnoch die innere Schleife? Und die Äußere steht? Und Wiederholt die sich dann wirklich nur alle Sekunde? Oder funktioniert das dann?

Vielen Dank für eure Bemühungen
Gruß lrt65492


RE: Serial auslesen wenn COM-Port verfügbar - GerdW - 03.05.2012 08:14

Hallo Irt,

Zitat:Ich weiß nicht wie genau der Ablauf der Schleifen dann funktioniert.
Guck's dir doch einfach mit ExecutionHighlighting an...

Zitat:Wenn die serielle Schnittstelle angeschlossen ist, läuft dann nurnoch die innere Schleife?
Ja.

Zitat:Und die Äußere steht?
Ja, THINK DATAFLOW!

Zitat:Und Wiederholt die sich dann wirklich nur alle Sekunde?
Zumindest hast du eine Wartezeit von 1s konfiguriert. Wobei feste Wartezeiten beim seriellen Port fast immer falsch sind...


RE: Serial auslesen wenn COM-Port verfügbar - Andora - 03.05.2012 08:14

(03.05.2012 08:08 )lrt65492 schrieb:  Guten Morgen,
ich wollte eine verschachtelte Schleife vermeiden, weil ich wirklich nur einmal in der Sekunde den Seriellen Port auslesen möchte, sonst kommt es dort zu Lesefehlern.
Ich weiß nicht wie genau der Ablauf der Schleifen dann funktioniert.
Wenn die serielle Schnittstelle angeschlossen ist, läuft dann nurnoch die innere Schleife? Und die Äußere steht? Und Wiederholt die sich dann wirklich nur alle Sekunde? Oder funktioniert das dann?

Vielen Dank für eure Bemühungen
Gruß lrt65492

Hallo,

"ich wollte eine verschachtelte Schleife vermeiden" - das habe verstanden, deswegen entferne die innere Schleife [attachment=39680], somit hast keine verschachtelte Schleife mehr und für einmal pro Sekunde reicht die Geschwindigkeit.


RE: Serial auslesen wenn COM-Port verfügbar - lrt65492 - 18.05.2012 09:01

Hallo Zusammen,
erstmal vielen Dank für eure Hilfe.´Es funktioniert soweit ganz gut mit zwei Schleifen. Nur gibt es ab und zu Lesefehler. GerdW sagt ja schon:
(03.05.2012 08:14 )GerdW schrieb:  Wobei feste Wartezeiten beim seriellen Port fast immer falsch sind...
wie kann ich das vermeiden?
In meinem Sub-Vi "Serial read" lese ich die Eigenschaft "Bytes at port" schon aus, hat es damit etwas zu tun?

Vielen Dank
lrt65492


RE: Serial auslesen wenn COM-Port verfügbar - GerdW - 20.05.2012 19:07

Hallo lrt,

Zitat:wie kann ich das vermeiden?
Entweder:
Auf BytesAtPort verzichten und mit EOT-Char arbeiten (dabei feste Anzahl Zeichen abfragen).
Oder:
Feste Anzahl Zeichen abfragen, damit String zusammensetzen und gesuchte Antwort parsen...