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 

4 Bytes zu float



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!

29.10.2010, 11:40
Beitrag #1

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
4 Bytes zu float
Hallo @ all

Ich habe auf meinem Mikrocontroler einen Sinuswert ausgerechnet. Diese hat den Datentype float(4Bytes). Ich habe die 4 BYtes jetzt per RS232 an den PC gesendet. Jetzt möchte ich aus dem Bytearray wieder einen float erzeuegen jedoch weiß ich nicht wie.

Kann mir einen einen Tip geben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.10.2010, 11:44
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
4 Bytes zu float
http://zone.ni.com/reference/en-XX/help/37...lang/type_cast/

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
29.10.2010, 11:56
Beitrag #3

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
4 Bytes zu float
Wenn es nur vier Bytes sind geht auch das "Join Numbers" VI von der Data Manipulation Palette. Ansonsten Byte Array in Float Array Type casten. Dabei muss man auf die Byte-Order achten (big endian / little endian) und ggf. mit Byte-swap und Word-swap anpassen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 11:59
Beitrag #4

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
4 Bytes zu float
Mit der TypeCast Funktion habe ich noch nie gearbeitet und die Beschreibung finde ich nicht besonders übersichtlich. Kann mir vieleicht jemand ein kleines Beispiel erzeugen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 12:05 (Dieser Beitrag wurde zuletzt bearbeitet: 29.10.2010 12:47 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
4 Bytes zu float
Man kann den String entweder als 4-Byte-String schicken (oberes Beispiel). Dann kommen aber alle Zeichen von ASCII 0..255 vor und man hat keinerlei Steuerungsmöglichkeiten bei der Übertragung (z.B. Termination Char)
Oder als HEX-String - dann sind es aber 8 Byte (unteres Beispiel)
   
Das Ganze funktioniert natürlich nur, wenn Du die gesamte Datenkette selbst im Griff hast. Wenn Du dich mit irgendeinem vorgegebenen 4-Byte Format für die SGL-Zahl abfinden mußt, dann kann die Rückwandlung komplizierter werden.

Information zur Typecast-Funktion: Jede Variable oder Konstante besteht intern aus den eigentlichen Daten (bei Type SGL sind das 4 byte), und der Typbeschreibung (Hier: daß es sich bei den 4 Byte um eine SGL-Zahl handelt). Die Typecast macht mit den Daten gar nichts, sondern unterjubelt den Daten nur eine andere Typbeschreibung. Sie ist deshalb eine sehr schnelle und leistungsfähige Funktion, aber mit Vorsicht zu verwenden, da sonst Unvorhergesehenes herauskommen kann.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 12:43
Beitrag #6

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
4 Bytes zu float
Ich glaube wir haben uns falsch verstanden.

Ich habe z.B. eine float Zahl 2.345325. Diese ist 4 Byte groß. Jetzt übertrage ich zuerst von den 32Bit das Datenbit 0 bis 7. Anschließend das Datenbit 8 bis 15, dann 16 bis 23 und zum Schluß 24 bis 31.

Von der RS232 Schnittstelle bekomme ich jetzt 4 Bytes. Diese muss ich jetzt in der richtigen Reihenfolge wieder zusammensetzen und dann in einen float casten. Dies hat jedoch bis jetzt leider noch nicht richtig funktioniert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.10.2010, 13:02
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
4 Bytes zu float
   
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
29.10.2010, 13:10 (Dieser Beitrag wurde zuletzt bearbeitet: 29.10.2010 13:17 von Lucki.)
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
4 Bytes zu float
Ja wenn Dein µC von der 4-byte-SGL-Zahl ein anderes 32-bit-Format sendet als ich im Beispiel angenommen habe, dann muß Du natürlich die Prozedur was der µC genau macht erst mal verraten, bevor an eine qualifizierte Antwort zu denken ist.

Das Beispiel von Jens ist übrigens auch nichts anderes, nur daß dort nicht darauf eingegangen ist, daß eine RS232-Übtragung immer als ASCII-Zeichenkette erfolgt und nicht als parallele 4 Byte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 13:49
Beitrag #9

joedoe1979 Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2006

8.5.1
2005
de

23654
Deutschland
4 Bytes zu float
Ich habe es wie folgt gemacht:

wäre: float test = 2.4536;

putchar( ((uint8_t*)&test)[0] );
putchar( ((uint8_t*)&test)[1] );
putchar( ((uint8_t*)&test)[2] );
putchar( ((uint8_t*)&test)[3] );


Ich habe es auch geschaft auf der PC Seite wie Jens G. wieder in eine float Zahl zurückgewamdelt.

Wenn ich vom µC aus die Zahl 2.4536 nehme dann geht es auch

Auch die Zahl -19,23468 geht

Wenn ich jedoch die Zahl 987619,23468 nehme dann geht es nicht mehr, obwohl es doch noch im Zahlenbereich liegt. Ich weiß bis jetzt noch nicht woran es liegt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 13:54
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
4 Bytes zu float
Hallo Joe,

Zitat:Zahl 987619,23468
Diese Genauigkeit bei einem SGL ist einfach nur Quatsch... Aber nichtsdestotrotz: was für Zeichen schickt denn dein µC bei einer solchen Zahl? Entweder liegt der Fehler schon dort oder (unwahrscheinlich) bei LabVIEW beim Zurückwandeln...

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
  Array 4 Elemente (Float) aufbrechen Tobiii 6 5.495 13.02.2017 09:24
Letzter Beitrag: Tobiii
  Formatbezeichner für float und Dezimalzeichen %.; kombinieren (In String formatieren) dali4u 0 3.390 21.02.2015 11:45
Letzter Beitrag: dali4u
  String -> float number gottfried 6 8.428 11.05.2013 08:36
Letzter Beitrag: gottfried
  Bytes auswerten und visualisieren BEng Thomas 4 7.694 24.08.2012 15:02
Letzter Beitrag: BEng Thomas
  float wert in 4 byte konvertieren könnes 6 6.485 06.01.2012 13:11
Letzter Beitrag: eb
  Problem Werte aus EEPROM nach FLOAT H-STB 5 5.598 30.12.2011 17:09
Letzter Beitrag: H-STB

Gehe zu: