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 

HEX-Spielereien: Probleme mit Konvertierungen und Prüfsumme



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!

23.02.2009, 20:37
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
HEX-Spielereien: Probleme mit Konvertierungen und Prüfsumme
' schrieb:Hey Jens,

ok - jetzt blicke ich da schon etwas mehr durch...Wink

Der String setzt sich wie folgt zusammen:

1.) Steuerzeichen - bei mir das kleine "p" -> 1 Byte ASCII als 1 byte HEX
2.) Stellwert Dezimal 0-3000 -> Dezimalzahl als 2 byte HEX
3.) Auffüllen mit "00000" -> 5 Byte ASCII als 5 Byte HEX ("0" -> 0x30)
...Insgesamt also 8 Byte

Nun hast du mir mit der 7_2.vi schon ein paar tolle Tipps gegeben, insb. was die Prüfsumme angeht. Leider habe ich den ersten Teil nach wie vor nicht alleine richten können, da mich genau der Unterschied Zahl->HEX bzw. ASCII->Hex von einer einfachen Lösung abhält. M.E. gäbe es ja zwei Wege, den String zu berechnen:

- Steuerzeichen als String
- Dezimalzahl nach HEX, dies in einen String wandeln und dran hängen
- 00000 als String dran hängen

Oder aber:

- Steuerzeichen ASCII -> HEX wandeln
- Dezimalzahl nach HEX und dies dran hängen
- "00000" von ASCII nach HEX wandeln und dran hängen
- Das Ganze wieder in ASCII zurück wandeln

Ich habe mich bisher fast ausschließlich an der umständlichen zweiten Variante versucht und dabei zur Vereinfachung Steuerzeichen und "00000" als 70 bzw. 3030303030 direkt in den String eingegeben. Die 2 Byte Stellgröße auch als "2 Byte" Hex- String auszugeben hat auch noch irgendwie geklappt. Ich wußte letzlich bloß mit dem zusammengesetzten "Hex-String" nichts anzufangen, weil ich mit dem keine Prüfsumme rechnen konnte und es auch keine einfache Möglichkeit gibt, diesen wieder in Zeichen umzuwandeln...Sad. Die erste Variante ist aber vermutlich eh einfacher, scheitert aber an einer einfachen Umwandlung der Dezimalzahl zu Hex und das zum ASCII Zeichen.

Ich schau' mal, ob ich hier noch ein nützliches sub-VI für die Wandlung ASCII->HEX finde. Vielleicht denk' ich aber auch viel zu kompliziert und es wird hier eh schon Einspruch erhoben...Wink

Gruß,
Dennis
Jaja, meiner Meinung nach denkst du VIEL zu kompliziert.
Ich habe das schon mal probiert, zu erklären.
Wenn du einen Buchstaben "p" per RS-232 senden willst, dann sendest du einfach das "p". Das der ASCII-Code (also die Binärdarstellung nach ASCII-Code-Tabelle) dieses Buchstaben 112dez bzw. 0x70 ist, braucht dabei nicht zu interessieren. Also ja nicht sich von dem p den Binärcode holen, diesen dann in eine Hex-Zahl wandeln und dies dann wieder in einen String wandeln. Somit machst du aus einem Byte zwei Byte.

Von dem, was du geschrieben hast, ist definitiv Variante 1 richtig, vergiss das mit Variante 2.

Oder noch mal anders gesagt:
Du musst unterscheiden zwischen einem String und seiner Darstellung im Speicher des Computer! Da wird schließlich alles binär als 1 und 0 dargestellt.
Als sinnvolle Zusammenfassung wurden dann mal 8bit zu einem Byte zusammengefasst. In 8bit kannst du 256 verschiedene Zahlen darstellen. Oder, wenn du dir die erweitere ASCII-Tabelle zur Hand nimmst, kannst du damit auch 256 Zeichen/Buchstaben codieren.
Um jetzt nicht jedes mal die Bit-Darstellung hinzuschreiben, gibt es zur Vereinfachung den HEX-Code. Denn nun kannst du mit 2 HEX-Zahlen (also 00-FF) alle möglichen Zahlen eines Byte hinschreiben.

Gruß, Jens

P.S.: Das mit Datenblatt nicht posten (dürfen) erschwert die Diskussion ungemein. Ich frage mich jedes Mal, ob du den Befehlscode wirklich richtig weitergibst oder nicht.
Bsp: Du sagst was von Stellwert 0-3000. Wobei du auch mal was von geteilt durch 10 gesagt hast. Das wäre dann 0-300.
Andererseits soll der Stellwert als HEX-Zahl (nun wieder in 2 Byte) übertragen werden. Aber in einem 2-Byte-String bekomme ich max. FF rein, also max. 255.

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
30
Antwort schreiben 


Nachrichten in diesem Thema
HEX-Spielereien: Probleme mit Konvertierungen und Prüfsumme - jg - 23.02.2009 20:37

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Lightbulb Prüfsumme berechnen für String mit Sonderzeichen luna 3 4.504 22.03.2021 18:32
Letzter Beitrag: jg
  Hex-String splitten und Prüfsumme berechnen hl68fx 10 11.832 25.10.2013 11:01
Letzter Beitrag: Y-P
  String Prüfsumme 206racer 13 14.802 20.07.2008 20:11
Letzter Beitrag: 206racer

Gehe zu: