INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Anzeigen eines Wertes welcher von RS232 kommt



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.02.2009, 15:20 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2009 23:10 von jg.)
Beitrag #1

Duffman2 Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Sep 2008

8
2008
de

73547
Deutschland
Anzeigen eines Wertes welcher von RS232 kommt
Hallo,
ich verstehe etwas in einem Programm nicht und wollte fragen ob es mir jemand erklären könnte.
Ich lese einige Werte aus einem Gerät mit einem VisaRead aus. Diese Werte sind mit einer Mantisse und einem Exponenten. Ich hab mich da jetzt mal ein bisschen eingelesen aber verstehe trotzdem nicht warum in dem SubVi dieser C-Code verwendet wird. Im endeffekt werden da ja nur die einzelnen Bytes mit einer Oder MAskierung verglichen und dann auf die ausgangsvariable geschrieben. Aber ich verstehe nicht wieso?
Im Anhang sind mal das Hauptprogramm, das SubVi und die Erklärung aus dem Datensatz zu der Codierung.


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.02.2009, 21:09 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2009 21:17 von IchSelbst.)
Beitrag #2

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Anzeigen eines Wertes welcher von RS232 kommt
' schrieb:Ich hab mich da jetzt mal ein bisschen eingelesen aber verstehe trotzdem nicht warum in dem SubVi dieser C-Code verwendet wird.
Der Code macht aus jeweils vier Stück U8 ein Stück U32. Das U32 ist dann formatmäßig gesehen ein SGL.

Zitat:Im endeffekt werden da ja nur die einzelnen Bytes mit einer Oder MAskierung verglichen und dann auf die ausgangsvariable geschrieben. Aber ich verstehe nicht wieso?
Verglichen wird da nix. Da werden Bits verschoben und diese verschobenen Werte logisch verodert.

Es liegen ja aufgrund des Lesens von VISA nur Werte im Format U8 vor und zwar vier Stück pro Messgröße. Diese vier Stück müssen nun so verknüpft werden, dass der richtige Messwert herauskommt. Und das geht eben nun mal so wie hier programmiert: Der Exponent z.B. (das ist X4, X8 und X12) muss an die oberste Stelle einer Zahl. Und an die oberste Stelle kommt man, indem man die Zahl (z.B. X4) um 24 Bitpositionen verschiebt. Im Code "((x4 << 16) << 8)". Das ist mit (x4 << 24) identisch. "<<" ist C-Syntax und heißt "Bitweise schieben". Die anderen U8-Werte (also X1, X2 und X3) sind die Mantisse. Und auch diese drei U8-Werte müssen nun an die jeweils richtige Position geschoben werden. Die verschobenen Werte werden nun logisch veroder (ist das Zeichen "|". Das doppelte Zeichen "||" wäre ein boolsche Veroderung). Jetzt muss die entstandene Zahl nur noch von Format U32 in das SGL-Format umgewandelt werden - das geht mit der LV-Typkonvertierung.

Zum allgemeinen Aufbau einer SGL-Zahel siehe auch in WikiPedia unter Fließkommazahl.


Nachtrag:
In wie fern das dritte Bild (Mantisse.bmp) mit dem Code identisch ist, hab ich nciht überprüft. Ich gehe mal davon aus, das der Code richtig funktioniert.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.02.2009, 23:12
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Anzeigen eines Wertes welcher von RS232 kommt
Offtopic2
Ich möchte mal wieder darauf hinweisen, dass es deutlich bessere Bildformate für Screenshots gibt als unkomprimierte BMPs.
Ich habe mir erlaubt, deine Bitmaps durch PNGs zu ersetzen (6kB zu 751 kB, 14kB zu 1061 kB, 110kB zu 958 kB).

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.02.2009, 09:35
Beitrag #4

Duffman2 Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Sep 2008

8
2008
de

73547
Deutschland
Anzeigen eines Wertes welcher von RS232 kommt
Danke für die schnelle Antwort!! Jetzt ist mir das klar.
Ich hab irgend wie gedacht das es eine oder Maskierung ist weil wir so eine ähnliche Syntax mal im Mükrocontroller Unterricht hatten. Aber so ist das jetzt echt logisch.

Eine kleine Frage hab ich noch: Wie macht dieses Type cast die Convertierung? Ich dachte das dies um einiges komplizierter sein sollte da es sich ja um eine Mantisse und zusätzlich um den Exponenten handelt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  woher kommt diese Meldung? gottfried 2 2.934 14.09.2020 14:48
Letzter Beitrag: gottfried
  Beim vergleich kommt anscheinend schon kein boolscher Wert raus noled 3 4.635 04.12.2015 09:35
Letzter Beitrag: Lucki
  Vergleich simple PID und LV PID - woher kommt der Unterschied? hans_p 4 4.644 02.03.2015 13:29
Letzter Beitrag: dali4u
  Auswahl eines Arrays anhand des Wertes eines zweiten Arrays treffen alan 2 4.592 19.02.2015 16:12
Letzter Beitrag: alan
  letzte Zeile eines Strings anzeigen greglemond 20 15.675 01.08.2012 14:35
Letzter Beitrag: fabqu
  Werte eines Clusters im Array anzeigen lassen Flogge154 3 4.680 26.03.2012 15:31
Letzter Beitrag: jg

Gehe zu: