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 

Fehler beim Typecast: u32->sgl, sgl->u32



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!

06.04.2011, 14:46
Beitrag #1

rdugg Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2011

2011
2005
EN


Deutschland
Fehler beim Typecast: u32->sgl, sgl->u32
Hallo,

in einem komplexeren Prüfsystem wird auf einer RT-Hardware ein SGL-Array erzeugt, das unter anderen auch Daten von einem Bool-Array enthält, das ganze wird zum PC geschickt (TCP-IP) dann wird SGL-Array wieder zerlegt und das Bool-Array extrahiert.

Dabei tritt bei Bit 22 in einem 32iger Bool-Array ein Fehler auf.

Ich konnte das ganze ohne RT-Hardware auf dem PC reproduzieren.

In dem Beispiel (Anhang) sind zwei Varianten per Disable-Structure möglich.


2010Snip .vi  Beispiel.vi (Größe: 12,48 KB / Downloads: 423)


Einmal funktioniert der Typcast fehlerfrei, beim anderen Mal nicht.

Kann mir da bitte jemand weiterhelfen?

Vorab vielen Dank!!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.04.2011, 15:37 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2011 15:38 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Fehler beim Typecast: u32->sgl, sgl->u32
Hallo rdugg,

abgesehen davon, dass es grenzwertig ist aus einem Array mit 32 Elementen irgendwas bei Index 32 und 64 auszuschneiden, scheint beim BuildArray eine Prüfung der SGL-Werte stattzufinden. Aus einem "beliebigen" NaN wird dann ein korrektes NaN und der dahinterliegende 32bit-Wert ändert sich... Ohne BuildArray passiert auch nichts mit dem Bitmuster!

Mögliche Lösung:
Caste doch in ein U32-Array...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.04.2011, 00:08
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Fehler beim Typecast: u32->sgl, sgl->u32
(06.04.2011 14:46 )rdugg schrieb:  Einmal funktioniert der Typcast fehlerfrei, beim anderen Mal nicht.

Kann mir da bitte jemand weiterhelfen?

Hast Du Dir schon mal den Wert der Fliesskommazahl angeschaut? Das ergibt NaN (Not a number). Und gemäss Standard ist ein ganzer Range von Bit Patterns equivalent zu NaN, und ist NaN == NaN immer falsch.

Im einen Fall funktioniert es weil LabVIEW alles inplace tut und der binäre Wert der 4 Bytes im Speicher dadurch nie ändert. Im anderen Fall ist es wegen dem Array alles ausser Inplace. Und da immer: NaN != NaN, macht es auch nichts aus, wenn LabVIEW beim kopieren einer NaN Zahl ein anderes Bitpattern nimmt das ebenfalls NaN angibt, und das ist dann die kanonische NaN mit allen Bits gesetzt.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Bug Fehler angezeigt, aber kein Fehler in Liste ewiebe 1 4.471 07.04.2011 15:04
Letzter Beitrag: NWOmason

Gehe zu: