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 

Von 4x uint8 zu uint32 zu int32 zu fxp



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!

31.10.2009, 00:21
Beitrag #1

ayk Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Sep 2007

8.5
2007
kA

88161
Deutschland
Von 4x uint8 zu uint32 zu int32 zu fxp
Hi,

stehe seit paar Tagen vor einem "kleinen" Problem. Ich bekomme über CAN eine Nachricht, die aus 8 Bytes besteht. Nun möchte ich 4 Bytes zusammenfassen, damit ich einen 32Bit wert bekomme, was ich auch hinbekomme mit hi+lo. Allerdings hätte ich nun gerne, dass der Wert nun als FXP 32en21 behandelt wird. Wenn ich den aktuellen int32 in fxp convertiere, übernimmt er den int32 wert als vorkommawert, statt einfach an 11. stelle den Punkt zu setzen. Ich hoffe ich konnte mich klar AusdrückenSmile) Hätte da jemand eine Idee?

Danke schon mal im Voraus!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
31.10.2009, 08:16 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2009 08:22 von Lucki.)
Beitrag #2

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Von 4x uint8 zu uint32 zu int32 zu fxp
Hast Dus schon mal mit Typumformung versucht? Bei mir scheint die Konvertierung Array_of_U8 <--> FXP sowie String <--> FXP in beiden Richtungen zu funktionieren, aber ich bin kein Experte in Sachen FixPoint-Format.
Du müßtest evtl. mal so ein Byte-Array posten und außerdem das, was herauskommen soll.
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.10.2009, 13:30
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Von 4x uint8 zu uint32 zu int32 zu fxp
Kann mal einer aus einem richtigen LV, also einer englischen Version, keiner deutschen Version, die Beschreibung von "Wortlänge" und "Integer-Länge" hier posten. Ich werd aus der deutschen Beschreibung einfach nicht schlau.

Irgendwie funktioniert das alles nur suboptimal. Eigentlich möchte man doch haben, dass ein (vorzeichenloser) 32Bit-Wert z.B. automatisch einen 11Bit-breiten Vorkommawert (also maximal 2047) hat. Die restlichen 21 Bit sollen als Nachkommawert gelten. Eine 1 wäre also nicht das gesetzte B0 des 32Bit-Wertes, sondern das gesetzte B21 (= B31 - (11-1)).

Lucki's Methode gemäß linkes Bild wäre ein harter Typcast (den ich eigenlich immer vermeiden möchte), sollte aber funktionieren, wenn die Konfiguration des FXP-Formates nachvollziehbar wäre.

Ein normaler U32->FXP-Konverter würde den ganzen U32 natürlich als Vorkommastelle nehmen.

Eine andere Möglichkeit wäre noch, man teilte die U32-Zahl durch 2^21, wandle nach dbl und gebe das auf einen FXP. Und eigentlich sollte doch der FXP eine DBL-Zahl verstehen können. Die hat schließlich auch Vor- und Nachkommastellen.

Und außerdem: Muss es unbedingt FXP sein, tut es DBL nicht auch?

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
31.10.2009, 13:39
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Von 4x uint8 zu uint32 zu int32 zu fxp
' schrieb:Kann mal einer aus einem richtigen LV, also einer englischen Version, keiner deutschen Version, die Beschreibung von "Wortlänge" und "Integer-Länge" hier posten. Ich werd aus der deutschen Beschreibung einfach nicht schlau.
Mach ich doch gerne: Word length und Integer word length.
Hierzu die Screenshots:
       
Word length ist also die Gesamtgröße, Integer word length die Anzahl an Bits, die für den "Vorkommawert" zuständig sind. Erkennt man prima, indem man mal beim zweiten Feld den max./min. Wert eingibt.

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
31.10.2009, 14:45 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2009 14:46 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
Von 4x uint8 zu uint32 zu int32 zu fxp
' schrieb:Word length ist also die Gesamtgröße, Integer word length die Anzahl an Bits, die für den "Vorkommawert" zuständig sind. Erkennt man prima, indem man mal beim zweiten Feld den max./min. Wert eingibt.
Alles richtig, nur darf man deshalb nicht glauben, daß z.B. eine FIX-Zahl mit Wortlänge 2 und 1 Nachkommastelle (Wertevorrat also 0; 0.5; 1; 1.5) im Speicher nur 8 bit oder weniger Platz reserviert. Das Abspeichern aller FIX-Formate scheint immer linksbündig innerhalb von 64bit zu erfolgen, also auch in diesem Beispiel.
   
Die interessante Frage, was passiert mit so einem Format bei Shift oder Rotation, stößt ins Leere: Es geht nicht.
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
  Aus zweimal int16 mach int32, bloß wie? herrhannes 5 3.737 30.08.2012 13:21
Letzter Beitrag: Lucki
  Refnum nach String oder nach int32 t4b-1re-2 4 6.288 27.05.2008 16:15
Letzter Beitrag: rolfk
  Daten zu UInt8-Array Curtis Newton 3 4.086 30.04.2008 08:07
Letzter Beitrag: Curtis Newton
  uint8 to boolean _marco_ 2 3.855 17.08.2006 10:26
Letzter Beitrag: cb

Gehe zu: