LabVIEWForum.de - Allgemeine Vorgehensweise: Kommunikation mit Messgerät

LabVIEWForum.de

Normale Version: Allgemeine Vorgehensweise: Kommunikation mit Messgerät
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8
Hallo Serial,

in einer modernen LV-Version würde man das so lösen: Bedingungsanschluss der FOR-Loop aktivieren und die Loop stoppen, sobald Puffer gelesen wurde…

Kann dein LV8.2 das schon?
(08.04.2014 13:07 )GerdW schrieb: [ -> ]Hallo Serial,

in einer modernen LV-Version würde man das so lösen: Bedingungsanschluss der FOR-Loop aktivieren und die Loop stoppen, sobald Puffer gelesen wurde…

Kann dein LV8.2 das schon?

Genau das kann es leider nicht. Habe mich da schonmal mit beschäftigt eine FOR-Loop abubrechen. Was ein mist aber auch....
Hallo Serial,

dann halt Rechtsklick auf die FOR-Loop -> Umwandeln nach While-Loop…
Da bin ich bei. Fehlt nurnoch ein TRUE, wenn Puffer gelesen ist....
Hallo Serial,

die Warnung/Fehlermeldung des VISARead auswerten…
Ty, wird gemacht.
Guten Tag,

soweit läuft alles ganz gut. Jetzt möchte ich die Übertragungsgeschwindigkeit erhöhen und habe mich entschieden, die Daten vom Oszilloskop im Format "BYTE" zu übertragen. Jedoch scheitere ich schon daran, mir die Binären Daten nach der Übertragung wieder in numerische Daten zu wandeln.

Folgenden Ansatz habe ich entwickelt:

Im Manual steht, dass der Ausgangsstring sofort mit den Daten beginnt (Start Point Data bis End Point Data). Ich leite daraus ab, dass keine Headerinformationen o.ä. übertragen werden. Zudem weiß ich, dass pro Messpukt 16 Bit benötigt werden (:WAVeform:BITS? ==> 16 ), deswegen lese ich pro Schleifendurchlauf 2 Byte.
Also gehe ich davon aus, dass ich den Lesepuffer sofort mit der Funktion String to Byte Array. Danach füge ich mittels Schieberegister das komplette Array zusammen. Wäre das erste Byte ein Header o.ä. würde ich diesen mit Teilstring natürlich entfernen.

Problem: Das Byte Array zeigt nur Wetre wie 18,0 und 255 an. Mehr nicht!
Am Ende soll ein Array entstehen, welches mit den realen Messwerten gefüllt ist (also FLOAT)



Bilder von meinem Vorhaben sind angehängt.

MfG
Serial
Hallo Serial,

1.) Wenn du schneller Daten übertragen willst, solltest du nicht nur 2 Bytes abfragen, sondern gleich größere Datenblöcke…
2.) Wenn du WORD-Daten erwartest, solltest du dein U8-Array auch nach WORD umwandeln:
[attachment=49309](Das Bild zeigt gleich 2 Methoden…)

Zitat:Am Ende soll ein Array entstehen, welches mit den realen Messwerten gefüllt ist (also FLOAT)
Auch das ist im Manual beschrieben, ich hatte es schon mal überflogen! Einfach mal nach dem von dir gezeigten Ausschnitt weiterlesen!
Es gibt da so Werte, mit denen man die WORD-Daten skalieren muss…
Habe ich das so richtig verstanden ?

Den String mit den Bytes wandle ich in ein Byte Array um. Danach macht der Typcast daraus U16. Nach der Arraybildung "behandle" ich jeden Wert (mit der Darstellung als Zahl) mit der Formel: Wert=((Range*Data*10)/(Division+Offset))

PS: ich wollte das eigentlich nicht mir WORD sondern Byteweise machen.

Gruß
Hallo Serial,

Zitat:Den String mit den Bytes wandle ich in ein Byte Array um. Danach macht der Typcast daraus U16.
Wenn du weiterhin jeweils nur 2 Bytes liest, dann kannst du den TypeCast auch zu einem skalaren U16 machen: 2 U8 werden zu einem U16…

Zitat:Nach der Arraybildung "behandle" ich jeden Wert (mit der Darstellung als Zahl) mit der Formel: Wert=((Range*Data*10)/(Division+Offset))
So steht es ja auch im Manual. Nur die Klammersetzung solltest du überdenken…

Zitat:ich wollte das eigentlich nicht mir WORD sondern Byteweise machen.
Wenn du BYTE lesen willst, dann solltest du nicht nach U16 umwandeln…
Seiten: 1 2 3 4 5 6 7 8
Referenz-URLs