Dekodieren einer Seriellen Rückgabe

Hallo Leute,

ich bekomme von einem seriellen Gerät Daten. Diese sind aber so unlesbar (kann sie nicht mal kopieren um sie hier einzufügen).
Ich weiß das jede Datensendung mit dreimal xFFxFFxFF endet - an andere Stelle habe ich das als ein kleines y mit zwei Punkten darauf gesehen - hier auch.
Wie decodiere ich solche Zeichenketten wieder in lesbaren Text?

Joachim

Von Hex nach Dec (das ist dann das ASCII-Zeichen). [emoji1303]

Hallo Joachim,
drei mal 0xFF, dann meinst Du das HMI Display. Das Display verschickt nur von Dir programmierte Texte und wenn Du entsprechende Häkchen setzt: Hex-Zeichen als Rückgabewerte und bei Syntaxfehler auch Hexwerte laut

Format of Device Return Data
aus dieser Info-Seite
Aber Die kennst Du sicher

Ich hatte, um meine Texte wieder zu finden ein Semikolon in den Text bzw am Ende des Textes gesetzt und einen entsprechenden Cutter programmiert.

Diese komischen Y sind Asci-Zeichen von Hex-Zeichen, wenn Du auf Hex schaltest siehst Du, dass es 0xFF ist
Gruß Helmut

…Helmut hat richtig geraten! :slight_smile:

Aber: Ich habe jetzt diese Funktion genutzt:

function hex2str($hex) {
    $str = '';
    for($i=0;$i<strlen($hex);$i+=2) $str .= chr(hexdec(substr($hex,$i,2)));
    return $str;
}

…bekomme aber trotzdem nur unleserliches Kauderwelsch…:confused:

Joachim

Das Display gibt keine Hex-Zeichen, die man in ASCII Zeichen wandeln kann zurück.
Nicht dass ich wüßte…wenn man das möchte: selbst ist der Mann, ist ja programmierbar

…will nichts Neues, Helmut, nur den Rückgabewert lesen können…

Joachim

Wenn Du lesen willst, was das Display bei den verschiedenen Button und Schiebereglern Dir übergibt ist der Editor im Debug Fenster eine Hilfe, aber ich denke den wirst Du kennen.

In dem Parse-Fenster stehen die dann kommenden Hexwerte und darunter die Erklärung, auswertbar mit IP-Symcon über Cutter und Script

Nur kommt es in HEX, wenn Du Texte kommen lassen willst, geht ja auch, dann setzt Du keine Haken, sondern schreibst Print Zeilen in die jeweilige Button-Zustände.

Die kannst Du dann als Texte über/im Cutter auch auswerten, das hatte ich bei meinem Grundriss-Display gemacht.
In Hamburg hatte ich diese Auswerterei auf dem Beamer gezeigt :wink:

Ist sicher besser überschaubar, wenn man(n) im Debugfenster von IP-Symcon die ankommende Textmitteilung schön zuordnen kann und dann die Entscheidungsschleifen programmiert zB:

 //                 2. Variable auswerten
if ($Text == "Wz Licht")
   {
$Zustand=GetValueBoolean(18140 /*[HMI Display\HMI Status Display\EG HMI Display\Wz Licht]*/);
SetValueBoolean(18140 /*[HMI Display\HMI Status Display\EG HMI Display\Wz Licht]*/,!$Zustand);
    } 

Dort hatte ich das Semikolon im Text um es im Cutter zu finden

Aber es würde auch nur mit HEX-Zeichen funktionieren

Gruß Helmut

Kannst du mal einen Screenshot im Debugfenster der seriellen Instanz machen (Hexmode). Was sendest du vom Display? Schon mal mit CHR($string) versucht damit erhältst du den ASCII wert der einzelnen Zeichen?!
Gruss Tommy

Mit ord($char) erhält man den Wert und chr($byte) das Zeichen.
Michael

Ich weiß nicht wozu… was hat Das für einen geistigen Nährwert, wozu die festgelegten Hexwerte, dessen Code, ID oder Stellenwert festgelegt sind, wozu in ASCII wandeln?
Man kann die Hexwerte aufteilen und in Schleifen schön auswerten, wenn man sie mit den entsprechenden Werten vergleicht, klär mich auf :wink:
Gruß Helmut

…will das mal kurz aufklären:

Fehler lag bei mir, Helmuts Tipp brachte den Durchbruch…

…morgen mehr zur Aufklärung!

Joachim

…wie das immer so ist, mit dem Wald und den Bäumen…:frowning:

Ich hatte fest den Text erwartet, der im Nextion-Editor bei den Elementen steht. Diverse Dinge ausprobiert, dazu die Herausforderung des JSON-Daten-Transport, die Wärme und die familiären Aufgaben - verrannt, einfach verrannt…:rolleyes:

Aber: Wieder einmal hat diese Community meinen Blick freigeräumt, dafür herzlichen Dank!:slight_smile:

Jetzt, wo die Kommunikation in meinem IPS2GPIO-Modul zum Nextion-Display steht, geht es an die Fleißaufgaben…

Joachim