Jump to content

Hex in Binär umwandeln


dwidmayer

Recommended Posts

Hallo zusammen,

gibt es eine einfache Möglichkeit eine Hexzahl in Binärcode umzuwandeln?

Hintergrund ist eine Messbox mit 32 digitalen Eingängen.

Die Zustände der Eingänge werden über das iCom Modul angefordert und sind im HEX Format..

Wenn alle 32 DI's auf High sind kommt (8xF)FFFFFFFF über die Schnittsltelle.

In DASYLab sollen nun alle 32 DI's mit Statusanzeigen visualisiert werden.

Als Anhang ist noch eine PDF mit Screenshot's angefügt.

iCom.pdf

Link to comment
Share on other sites

Hallo!

Im Prinzip könnten Sie mit dem Formatstring ahl die ganze Zahl von DASYLab interpretieren lassen (hexadezimale Schreibweise als ASCII-Text übertragen). Siehe Bild "simu_senden_ascii_0xFFFFFFFF.jpg".
Das Problem hierbei ist, dass diese große Zahl nicht ohne Verlust von Präzision an folgende Module zwecks Weiterverarbeitung (z.B. Mathematik >>> Bitmaske) weitergegeben werden kann; DASYLabs Leitungen unterstützen bisher nur den Datentyp float (6-7 Stellen Genauigkeit).

Können Sie das Gerät evtl die Hex-Daten ohne "ASCII-Verpackung" senden lassen? Siehe Bild simu_senden_hex_0xFFFFFFFF.jpg. Formatstring ist in allen Kanälen nur ein b für Byte (die 13h entspricht dem Carriage return-Symbol).

Dann könnte man nämlich die übertragene Zahl byteweise lesen und dann die vier einzelnen Kanäle mit dem Bitmaske-Modul behandeln, sodass man daraus die einzelnen (nicht) gesetzten Bits identifizieren kann.

Eine weitere Möglichkeit wäre, sofern Sie DASYLab 13 haben: Sie geben die empfangenen Daten nicht über einen Ausgang des RS232-Moduls aus, sondern schreiben diese per Formatstring $1 in einen von DASYLabs globalen String ($1 => glob. String 1, $47 => glob. String 47, usw).

Mit dem Script-Modul könnte man dann eine Umwandlung programmieren, die dann aus dem empfangenen Ascii-Text ">0000FFFF" beispielsweise zwei globale Variablen mit einem dezimalen Wert belegt. "0000" => glob. Var 1 = 0 (dezimal), "FFFF" => glob. Var 2 = 65535. Diese Variablen könnte man dann wieder auslesen und mit dem Bitmaske-Modul in die einzelnen Bits "aufsplitten".

post-865-0-60635600-1435129185_thumb.jpg

post-865-0-38421200-1435129192_thumb.jpg

Link to comment
Share on other sites

  • 2 weeks later...

Ok, mit vier Kanälen geht's (siehe Bild).

Formatstrings:

Kanal 0: 1x 2ah <-- 1x um die spitze Klammer loszuwerden

Kanal 1: 2ah

Kanal 2: 2ah

Kanal 3: 2ah\r <-- \r für das abschließende CR, das in meinem Schaltbild als Nachrichtenabschluss dient.

Die vier Kanäle können Sie nun jeweils mit dem Bitmaske-Modul "auseinandernehmen" und die einzelnen Bits extrahieren.

post-865-0-48820300-1436256098_thumb.jpg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...