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 

Fragen zur Funktion "Typenformung"



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.2007, 11:30
Beitrag #1

Gabi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 50
Registriert seit: Oct 2007

8.2
2005
kA


Deutschland
Fragen zur Funktion "Typenformung"
Weiß jemand genau wie diese Funktion "Typenformung" arbeitet und wozu diese eigentlich da ist? Muss doch nen bestimmten Grund haben?
Z.b. ist es einleuchtend das wenn vor der Funktion ein U8-Integer angeschlossen wir und den Eingang "Typ" offen lässt, man die Zahl in ASCII-Code in einem String zurückbekommt. Ist ja auch klar, denn ein String ist ja nichts anderes als ein Array von Zahlen welche dann in ASCII umgesetzt werden. So ist doch z.b. ein string welcher folgerdermaßen aussieht
|abcde| nichts anderes als ein Array von Zahlen |97|98|99|100|101| in ASCII-Darstellung. Und deshalb erhält man den ASCII Code in einem String wenn man vor der Funktion ein Array of U8-Integer anschließt. ABER wenn man nun ein DBL-Array anschließt so bekommt man nur wirres Zeug raus.
Hat nicht jemand dafür ein sinnvolles Beispiel wofür diese Funktion gut ist?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
31.10.2007, 11:40 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2007 11:43 von eg.)
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Fragen zur Funktion "Typenformung"
' schrieb:Weiß jemand genau wie diese Funktion "Typenformung" arbeitet und wozu diese eigentlich da ist? Muss doch nen bestimmten Grund haben?
Z.b. ist es einleuchtend das wenn vor der Funktion ein U8-Integer angeschlossen wir und den Eingang "Typ" offen lässt, man die Zahl in ASCII-Code in einem String zurückbekommt. Ist ja auch klar, denn ein String ist ja nichts anderes als ein Array von Zahlen welche dann in ASCII umgesetzt werden. So ist doch z.b. ein string welcher folgerdermaßen aussieht
|abcde| nichts anderes als ein Array von Zahlen |97|98|99|100|101| in ASCII-Darstellung. Und deshalb erhält man den ASCII Code in einem String wenn man vor der Funktion ein Array of U8-Integer anschließt. ABER wenn man nun ein DBL-Array anschließt so bekommt man nur wirres Zeug raus.
Hat nicht jemand dafür ein sinnvolles Beispiel wofür diese Funktion gut ist?


Also ich benutze dieses VI sehr sehr oft, da ich viel mit binären Übertragungsprotokollen (z.B. Kommunikation mit Geräten über serielle Schnittstelle) arbeite.
Desweteren kann man jede Menge Platz auf der Festplatte sparen, wenn man z.B. Double-Array binär statt ASCII in eine Datei abspeichert, das hat sogar den Vorteil, dass man keine Punkt/Komma Probleme und keine Nachkommastellenprobleme hat.

eg

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.10.2007, 11:59
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Fragen zur Funktion "Typenformung"
' schrieb:ABER wenn man nun ein DBL-Array anschließt so bekommt man nur wirres Zeug raus.
Die Funktion macht nichts weiter als quasi ein Datenstream zu erzeugen. Einen Stream kann man wunderbar mit Strings handeln, da diese eine Länge haben, die eben die Länge der Daten angibt - unabhängig vom Typ der Daten und deren Wert. Steams sind aber nicht zum lesen da, sondern (siehe eq) z.B. zum Speichern.

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.2007, 13:37 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2007 21:21 von jg.)
Beitrag #4

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Fragen zur Funktion "Typenformung"
Hier ein Beispiel, das ein 100000 Dbls großes Array binär und als ASCII-Tabelle abspeichert.

1. die binäre Datei ist etwa 1/2 der Tabellendatei
2. wenn man die Auflösung der Tabellendatei ändert, ändert sich auch die Größe, bei binären Datei hat man immer die volle Dbl-Auflösung.

eg

(VI LV 8.0)


Angehängte Datei(en)
Sonstige .vi  Example.vi (Größe: 24,46 KB / Downloads: 253)

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2007, 00:22 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2007 21:21 von jg.)
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
Fragen zur Funktion "Typenformung"
' schrieb:Weiß jemand genau wie diese Funktion "Typenformung" arbeitet und wozu diese eigentlich da ist? Muss doch nen bestimmten Grund haben?
Z.b. ist es einleuchtend das wenn vor der Funktion ein U8-Integer angeschlossen wir und den Eingang "Typ" offen lässt, man die Zahl in ASCII-Code in einem String zurückbekommt. Ist ja auch klar, denn ein String ist ja nichts anderes als ein Array von Zahlen welche dann in ASCII umgesetzt werden. So ist doch z.b. ein string welcher folgerdermaßen aussieht
|abcde| nichts anderes als ein Array von Zahlen |97|98|99|100|101| in ASCII-Darstellung. Und deshalb erhält man den ASCII Code in einem String wenn man vor der Funktion ein Array of U8-Integer anschließt. ABER wenn man nun ein DBL-Array anschließt so bekommt man nur wirres Zeug raus.
Hat nicht jemand dafür ein sinnvolles Beispiel wofür diese Funktion gut ist?

Ich würde es so erklären:
Ein "Typ" (Also z.B ein Integer I16) besteht immer aus 2 Abschnitten: "Typbeschreibung" und "Daten". Die "Daten" sind letztlich immmer eine zusammenhängende Folge von Bytes. Mit der "Typenformung" ist es möglich, den Daten eines gegebenen Typs eine andere Typbeschreibung unterzuschieben, ohne die Daten selbst zu verändern.
Beispiel: Gegeben: Array of Bytes U8. Länge 12. Typgewandelt nach Array of U32 ergibt sich ein Array of U32 der Länge 3.
Da die Daten überhaupt nicht angerührt werden, ist die Typformung eine sehr schnelle Methode, schneller als die "offiziellen" Werkzeuge, die man in jedem Falle auch benutzen könnte. Die Typenwandlung sollten nur genügend erfahrene Anwender mit der gebotenen Vorsicht benutzen, da es leicht zu unerwarteten Ergebnissen kommen kann.
Wir beispielsweise ein einzelnes Byte U8 in eine Gleitkommenzahl gewandelt, dann ist das Nonsens, da die erforderlichen Anzahl von Bytes, aus denen sich die Zahl zusammensetzt, gar nicht vorhanden ist

Das Beispiel von Eugen ist schon so etwas wie die höhere Schule und bedarf vielleicht noch einer Erklärung.
Aufgabe: Es soll ein Array von 1000 Gleitkommazahlen (double) in eine Datei im Textformat abgespeichert werden.
Offizielle Methode:
Dei Zahlen werden einzeln mit der Funktion "Zahl nach String" konvertiert und dann als einspaltige Tabelle im Textformat gespeichert.
Methode Eugen:
Der ganze Array wird typgewandelt in String. Es entsteht ein Textsalat mit allen vorkommenden ASCII-Zeichen von 0..255, den zwar kein Mensch mehr interpretieren kann, den man aber im Format Text abspeichern kann. Das Einzige, worauf es letztlich hier ankam, war nicht die Lesbarkeit des Textes für einen menschlichen Betrachter, sondern daß man den Text, wenn er wieder eingelesen wird, wieder in das ursprüngliche Zahlenarray konvertieren kann. Und das geschieht wieder mit der Funktion "Typformung", nur in umgekehrter Richtung, also von Text nach Array of Double.
(Kritisch würde ich hier allerdings anmerken: Wenn es nicht darauf ankommt, das was abgespeichert wird lesen und editieren zu können, warum wird dann nicht einfach im Binärformat abgespeichert?)

Und hier noch das gewünschte "sinnvolle" Beispiel. Aber wie gesagt, die Typformung ist immer irgendwie ersetzbar, so auch hier. Hier geht es um die Konvertierung von 4 bytes nach 2* Integer U16
   

(VI LV 8.2)


Angehängte Datei(en)
Sonstige .vi  Zahlen_verbinden.vi (Größe: 10,81 KB / Downloads: 196)
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
  Fragen zu PID Regler belu003 3 6.363 18.08.2010 17:50
Letzter Beitrag: Lucki
  Newbie-Fragen zur GUI Tito 3 5.156 18.06.2010 10:45
Letzter Beitrag: GerdW
  Fragen zum Buch Aisling 9 8.795 22.08.2009 11:10
Letzter Beitrag: Aisling
  Allgemeine Fragen kcccp 9 7.152 03.07.2009 07:17
Letzter Beitrag: kcccp
  3 Newbie-Fragen =) piWa 3 4.412 31.07.2008 10:00
Letzter Beitrag: piWa
  Fragen zur Benutzeroberfäche Mitch 3 4.141 29.07.2008 16:00
Letzter Beitrag: Mitch

Gehe zu: