LabVIEWForum.de - Datenstrom-Problem

LabVIEWForum.de

Normale Version: Datenstrom-Problem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

ich arbeite seit ein paar Tagen mit LabVIEW. Ich möchte Werte aus einer Datenquelle visualisieren. Die Daten aus der Datenquelle kommen regelmäßig aber mit 10ms(Pause) Abständen zwischen jedem Datenblock an.
Ich kann nur ganze Datenblöcke auswerten. Alle Datenblöcke sind gleich groß. Ich kann aber keine ID´s einsetzen! Die Datenköpfe sind nicht unterscheidbar.
Wie kann ich nun die serielle schnittstelle so konfigurieren, dass diese nur komplette Datenblöcke(Datenblöck zwischen zwei Pausen) ausliest??

Bedanke mich in Voraus für eure Hilfe!
vorkonfigurieren gar net!
du kannst z.b. entweder die schnittstelle pollen und nachsehen, wieviele bytes anliegen oder du liest kontinuerlich aus und setzt dir die pakete im anschluss selbst wieder zusammen (indem du einfach wieder auf die groeße (byte) zurueck rechnest!)
Zuerst mal bedanke ich mich für die schnelle Antwort.

Wie könnte ein VI für die Lösung aussehen, wenn ich die Polling-Methode anwende?
Da ich mich gerade in LabVIEW einarbeite habe ich noch viel Lernbedarf.
Das erste Datenblock soll nicht ausgewertet werden, da man ja mitten im Datenblock den Auslesevorgang starten könnte. Deshalb sollte erst ab dem zweiten Datenblock das Auslesen beginnen.
Ich freue mich für jeden Tip
oeffne mal unter help den example finder - wechsle auf den tab "search" und gib als suchbegriff "serial" ein - oeffne das beispiel basic serial write and read.vi!
Im Blockdiagramm siehst dann einen Eigenschaftsknoten mit dem Attribut "Bytes at Port" -> das kannst in eine while schleife packen und bei einer ganz bestimmten Anzahl an bytes die while schleife beenden und die bytes auslesen!

Die schoenere Methode waere, wenn du direkt an das VISA Read die Anzahl der Bytes anschließt, die einem Datenpaket entsprechen! Da wird dann net gepollt, sondern die Funktion wartet so lange, bis die entsprechende Anzahl an bytes am Port anliegen und holt diese gesammelt ab!
Die Variante ist um einiges Performance - schonender, jedoch musst mit dem Timeout fuer die Funktion recht klug setzen! Wennst andauernd pollst, geht zwar die Performance des Rechners in die Knie, aber du bist vom Timeout nahezu unabhaengig!
mit den wenigen Vorkenntnissen habe ich ein wenig Probleme mit der Umsetzung der Idee.
Wenn mir jemand behilflich sein könnte, mit einem VIA vielleicht, wäre ich dankbar.
Wie kann ich die Schnittstelle abhören, um zu sehen ob gerade etwas gesendet wird oder nicht, d.h. ob gerade eine Pause vorliegt?
Hi

du könntest ein VISA event für zeichen an der schnittstelle registrieren oder falls dein messgerät ein 'r' oder 'n' am ende deiner datenblöcke sendet ein event für diese. wenn das event auslöst übergibst du read die anzahl der zu lesenden bytes, read blockiert solange bis die anzahl an bytes eingedrutelt ist *g* und fertig.

mfg Mario
Referenz-URLs