String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
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!
15.07.2015, 21:21 (Dieser Beitrag wurde zuletzt bearbeitet: 15.07.2015 21:23 von hansi9990.)
String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
Hallo zusammen
Ich suche eine Möglichkeit um einen Sting (je 3zeichen entsprechen 1Byte) zu zerlegen und als Zahl auszugeben.
So sollte z.B. ein String der so aussieht 255255255255 in seine einzelnen Bytezeichen zerlegt werden 255 255 255 255 = FF FF FF FF = 4294967295 oder 255 255 = FF FF = 65535..
Gibt es dafür eine Funktion oder ein fertiges vi oder kennt jemand eine Möglichkeit und kann mir auf die Sprünge helfen?
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
(15.07.2015 21:21 )hansi9990 schrieb: Gibt es dafür eine Funktion oder ein fertiges vi oder kennt jemand eine Möglichkeit und kann mir auf die Sprünge helfen?
Ich fürchte, das wirst du selbst programmieren müssen. Du müsstest dir jeweils 3 Zeichen abspalten und diese in ein Byte wandeln. Dann verknüpfst du die Bytes mit der Byteverknüpfungsfunktion bis zu einer 32 Bitzahl.
Gruß, Marko
16.07.2015, 08:25 (Dieser Beitrag wurde zuletzt bearbeitet: 16.07.2015 08:43 von GerdW.)
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
Danke für den Input.
Es hat sich ergeben das ich den ersten Teil nicht mehr benötige da ich jetzt mit einem U8 Zahlen Array arbeiten kann.
Zum zweiten Teil habe noch ein Anliegen, kann man irgendwie die Max Bytelänge des am Typumwandler angelegten Referenz-Datentyp herausfinden (U8 und I8 = 1 U16 und I16 = 2 U32 und I32 = 4)?
Ich möchte je nach Datentyp die Länge im Array ausschneiden, ich habe es so wie im Anhang versucht aber das funktioniert so nicht.
Hat jemand eine Idee wie ich das machen könnte?
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
Hallo hansi,
Zitat:Ich möchte je nach Datentyp die Länge im Array ausschneiden, ich habe es so wie im Anhang versucht aber das funktioniert so nicht.
Und warum nicht? Weil in deinem BD einige CoercionDots zu sehen sind!
Mögliche Lösung: erstelle für jeden Datentyp einen Case. Im Case holst du die Bytes aus dem Array und wandelst die Daten um. Dann wandelst du den so erzeugten Datentyp in den größtmöglichen/größt-genutzten um und gibst ihn aus dem Case aus.
Warum? Weil LabVIEW streng typisierte Drähte verwendet! Du kannst dank THINK DATAFLOW nicht verschiedene Datentype über ein und denselben Draht laufen lassen! (Wenn man Variant, was hie rnicht hilft, außer acht lässt.)
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
Hallo Gerd
Danke.
Ich habe jetzt 6 einzelne VI's (I8,I16,I32,U8,U16 und U32) ohne Case Struktur erstellt, den Ausgang habe ich auf "an Quelle anpassen" gesetzt und daraus dann ein Polymorphes Vi gemacht, das funktioniert auch.
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
Hallo hansi,
Zitat:das funktioniert auch.
Wenn es hinterher über einen Draht weitergehen soll, dann musst du um das polymorphe VI herum eine Casestruktur bauen und auf den größten Datentyp coercen…
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
?? Sorry, verstehe nicht was du damit meinst.
So wie im Bild dargestellt soll es dann weitergehen (in dem subVI "Byte Array Converter" versteckt sich das Polymorphe VI.)
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
Hallo hansi,
Zitat:in dem subVI "Byte Array Converter" versteckt sich das Polymorphe VI.
Ist das das polymorphe VI oder ist dieses darin enthalten?
Fakt ist, dass du hier immer den gleichen Datentyp herausbekommst, wie oben schon mehrfach geschrieben!
RE: String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer
Nein, ich komme nicht mit dem gleichen Datentyp heraus.
Ich habe es gerade probiert, der Datentyp am Ausgang passt sich am Datentyp an der oben unter "Typ" vorgegeben wird. Es ist natürlich Voraussetzung das am VI ein Element mit den benötigten Typ angeschlossen wird.
Das liegt wohl daran das ich bei allen subVI's das Anzeigeelement (in meinem Bild mit "Wert" bezeichnet) auf "An Quelle anpassen" gesetzt habe.
Habe das Polymorphe VI mal angehängt.
Ups sorry, dazu werden natürlich auch die subVI's benötigt.
Das auch noch.