LabVIEWForum.de - Verständnisfrage

LabVIEWForum.de

Normale Version: Verständnisfrage
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

nachdem ich nun mein spektrometer korrekt ansprechen kann, d.h ich sende ein befehl und es kommen daten zurück, muss ich die "roh daten" korrekt verarbeiten.

zunächst bekomme ich idealerweise ein datenpaket mit folgender struktur:

1. byte = high byte of 1. spectrum value
2. byte = low byte of 1. spectrum value

usw.

nun muss ich aus dem low und high byte eine 16-bit integer bauen, wobei noch anzumerken ist, dass beim lowbyte nur bit 6 und 7 signifikant sind.
und das verstehe ich nicht,
ist nun meine zehl ein 16bit oder 8bit aus high und 2 bit aus low = 10 bit zahl? das wäre doch quatsch!

angenommen mein erster wert des spektrums wäre 10000. diesen könnte ich ja mit dem high byte nicht darstellen, da ich nur 8 bit zur verfügung hab, sodass 16 bit = 65536 diesen wert umfassen.

also 10000 = 1111101000 => 10 bit. wie würde ich nun diese zahl zusammenstallen?

ist das einfach: man nehme highbyte füge hinten die signifikanten bits des low bytes und voila?

vielen dank für die beseitigung meiner denksackgassenSmile
Die Auflösung deines Spektrometers ist wahrscheinlich 10 bit. Da Computer mit Bytes rechnen wären 16 Bit das kleinste wo diese 10 Bit noch reinpassen. Du musst also low und high Byte zu einem 16 Bit Wert zusammenführen: Palette Programming|Numeric|Data Manipulation. Dabei auch noch beachten ob deine Werte signed oder unsigned sind.

VDB
' schrieb:Die Auflösung deines Spektrometers ist wahrscheinlich 10 bit. Da Computer mit Bytes rechnen wären 16 Bit das kleinste wo diese 10 Bit noch reinpassen. Du musst also low und high Byte zu einem 16 Bit Wert zusammenführen: Palette Programming|Numeric|Data Manipulation. Dabei auch noch beachten ob deine Werte signed oder unsigned sind.

VDB


das würde also bedeuten, dass ich nur einen wertebereich von 0 bis 1023 habe?
' schrieb:nun muss ich aus dem low und high byte eine 16-bit integer bauen, wobei noch anzumerken ist, dass beim lowbyte nur bit 6 und 7 signifikant sind.
und das verstehe ich nicht,
ist nun meine zehl ein 16bit oder 8bit aus high und 2 bit aus low = 10 bit zahl? das wäre doch quatsch!

Wieso wäre das Quatsch? Wenn du sagst, HByte + Bit7LByte+Bit6LByte sind relevant, dann sind das eben 10 Bit...und das sind halt nicht mehr als 1024 Werte! Und das steht doch sicher in den Specs deines Messgerätes, oder?
' schrieb:ist nun meine zehl ein 16bit oder 8bit aus high und 2 bit aus low = 10 bit zahl? das wäre doch quatsch!
Quatsch ist das nicht. Das ist optimierte Vorgehensweise.

Dieser dein AD-Wandler im Endgerät hat nun mal nur 10Bit. Aber man kann im sagen, wie er die 10Bit auf zwei Bytes aufteilen soll. Entweder: Die acht niederwertigsten Bits ins Lowbyte und die beiden restlichen nach B0 und B1 vom Highbyte. Oder: Die acht höherwertigen Bits nach Highbyte und die restlichen zwei nach B6 und B7 vom Lowbyte. Vorteil: Wer nur einen 8Bit-µC hat und dem eine 8Bit Auflösung reicht, der wählt die erstere Methode. Alle anderen Fälle, und da gibt es mehrere, verwenden den aneren, normalen Fall.

Für eine Hochsprache wie LV ist diese erstere Einstellung natürlich etwas "mühselig".
Referenz-URLs