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!
ok, wenn ich meinen durch String in Hex -erstellten Hex-String als Hex anzeigen lasse, hat er nicht mehr die Werte wie vorab, sodass mir jetzt auch klar ist warum er einen anderen Zahlenwert aufweißt.
d.h. ich muss mein Problem anders formulieren bzw. nochmal ganz am Anfang angreifen:
Mein Messgerät gibt mir meine Werte in Dezimalschreibweise aus (als U8), diese muss ich jedoch erst in Hex umwandeln um diese dann über IEEE in meinen gewünschten Wert zu erhalten.
d.h. Mein Messgerät spuckt mir 65 und 160 aus, in Hex sind das dann 41 und A0 und über IEEE-Umwandlung erhalte ich aus 41A0 (zusammengefügt) dann 20 und somit meinen gewünschten Wert. Wie kann ich das realisieren?
Anzeige
15.04.2015, 15:45 (Dieser Beitrag wurde zuletzt bearbeitet: 15.04.2015 15:47 von GerdW.)
ein SGL besteht aus 4 Bytes!
Das hatten wir doch alles schon einmal…
Zitat:Mein Messgerät gibt mir meine Werte in Dezimalschreibweise aus (als U8)
Falsch formuliert!
Dein Gerät gibt dir U8-Werte aus, die du dir in Dezimaldarstellung anguckst. Du kannst dir die Werte aber auch in Hex-, Binär- oder Oktaldarstellung anschauen…
so, bin immer noch am Kämpfen. Mit den Lösungsvorschlägen von GerdW komm ich leider nicht weiter, sodass ich euch mal ein VI als Beispiel angehängt habe. Ich bekomme von meinem Gerät die DATA zurück und muss diese über IEEE umwandeln, ein Lösungsversuch ist mit dabei bei welchem ich die Daten versuche zu einem String zu verknüpfen und dann umzuwandeln. Zudem ist nochmal die Variante mit String eingeben und über Typecast umwandeln dabei, welche ja auch gut funktioniert, ich nur nicht weiß wie ich meine Eingangsdaten auf dieses oder ein anderers funktionierendes Format bekomme.
Was mir Labview bei sämtlichen Versuchen macht, ist dass er meine 41A0 (hex) als 65 160 interprätiert bzw. bei anderer Darstellung mit der ASCII-Hex-Tabelle in 34 31 41 30 umwandelt und dies dann in die Zahl konvertiert.
Was ich aber möchte, ist dass er das ganze als 4 1 A 0 interpretiert (bin 0100 0001 1010 0000) und dies dann in eine Zahl konviertiert (sodass ich 20 als Ergebnis erhalte).
Ich hab mich glaub ich inzwischen so festgefahren, dass ich keine Ahnung mehr habe was ich noch probieren soll. Komm irgendwie hier mit LabView nicht zurecht.
16.04.2015, 10:47 (Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2015 10:55 von GerdW.)
Zitat:Komm irgendwie hier mit LabView nicht zurecht.
Das sieht man an dem unnötigerweise verwendeten Matrix-Datentyp…
Und daran, dass du immer noch nicht bei allen deinen String-Controls den Anzeigemodus sichtbar machst!
Außerdem, weiß ich nicht, was du hast: Dein VI funktioniert doch!
Beweis:
Dummerweise hast du keine Daten in deinem "Modbus Data Unit" hinterlegt, sodass wir immer noch nichts über deine zu wandelnden Daten wissen…
Nachtrag: Der Umweg über den DBL-Datentyp hilft dir garantiert nicht weiter - der stört hier nur!
was meinst du mit keine Daten hinterlegt? Ich habe hier einfach von Hand Zahlen eingetragen (siehe Screenshot).
das der untere Teil funktioniert ist mir schon klar, ich möchte aber dass der obere Teil auch als Ergebnis 20 ausgibt, da ich meine Daten nur über Data hineinbekomme und nicht händisch in String 2 eintrage.
Aber du musst ja eine DBL-Matrix erstellen, um daraus wieder Elemente zu indizieren. Dann wandelst du die DBL-Werte in hex-formatierte ASCII-Strings um, die du dann wiederum per Typecast in "vernünftige" SGL-Zahlen umwandeln willst. Das hört sich schon sehr beratungsresistent an…
Aber anscheinend schaffst du es nicht, eine vorhandene Lösung auf deine Daten anzuwenden:
Oder direkt ohne Umweg über den U32:
Wobei sicherzustellen ist, dass du die korrekte Anzahl von 4 Bytes bereitstellst - auch das hast du ja noch immer nicht geschafft…