Hexadezimal -Schreibweise

  • Hallo, eine hexadezimal-Schreibweise sieht ja bekanntlich so aus 0xA1 oder 0x11 u.s.w.


    Aber was ist das "\xA0\x01\x00\..." für eine Schreibweise?

    Es geht dabei um Befehle zum USB/Seriell Adapter.

  • Hallo, eine hexadezimal-Schreibweise sieht ja bekanntlich so aus 0xA1 oder 0x11 u.s.w.

    In den meisten Sprachen ist das die Schreibweise für ein hexadecimal literal.

    So kann man z.B. in Python einen Integer erstellen:

    Code
    value = 0xFF # 255


    Quote

    Aber was ist das "\xA0\x01\x00\..." für eine Schreibweise?

    Es geht dabei um Befehle zum USB/Seriell Adapter.

    Du hast das b vor dem bytes literal vergessen. Wenn du mit Python 3 einen seriellen Port öffnest, ist dieser im Binärmodus geöffnet. D.h. anstatt str bekommst du bytes. Bei Python 2 gab es diese strikte Unterscheidung nicht (ist eh EOL).


    Ein \xyy stellt ein Zeichen als hexadezimale Schreibweise dar. yy geht von 00 bis FF.

    Dabei spielt es erst mal keine Rolle, ob es bytes oder ein str ist.

    Es wird generell diese Schreibweise für nicht druckbare Zeichen verwendet.

    Alle druckbaren ASCII Zeichen werden normal dargestellt.

    Steuerzeichen haben teilweise auch ihre spezielle Repräsentation.

    Nicht alle Steuerzeichen werden in deren kurzen Repräsentation angezeigt.

    Hingegen wird \x0A als \n repräsentiert.


    Wenn du mit irgendeinem Protokoll arbeiten willst, musst du erst mal wissen, ob es ASCII oder binär ist.

    Wenn dein Beispiel dem entspricht, was dir der usb2tty adapter liefert, ist es ein binäres Protokoll.


    "\xA0" ist außerhalb des ASCII Bereichs.


    Bei Python bietet sich z.B. das struct Modul an, um die binären Daten z.B. short, int, float, bool in Python Objekte umzuwandeln (int, float, bool). Aber wie du das machst, ist stark abhängig von dem, wie der Slave zu handhaben ist. Protokoll usw.. ggf. findet auch ein Framing statt: Start, Typ, Länge, Payload, Checksum

  • das ist ein Zeichen, siehe Tabelle.

    aber jede Tabelle tickt anders und solange diese nicht genannt wird welche gnutzt wird kann man nichts über das Zeichen hinter dem Code wissen. Hex ist aber auch falsch es wird nur so genutzt, genau ist es das Sedezimalsystem vom ital. lateinischen sedezimal sedeci 16

    http://www.rechnerlexikon.de/artikel/Sedezimalsystem

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Wie gesagt, ich muss im Terminal

    Code
    echo -e "\xA0\x01\x00\xA1" > /dev/ttyUSB0

    bzw.

    Code
    echo -e "\xA0\x01\x01\xA2" > /dev/ttyUSB0

    zum USB Relay senden, da kam mir die Frage auf, was dahinter steckt.

  • Ich bin dieser Notation in diesem Zusammenhang noch nicht begegnet, aber der Backslash innerhalb eines Strings ist ein sog. Escape-Zeichen, das festlegt, dass die folgenden Zeichen nicht als reiner Text zu interpretieren sind, sondern eine andere Bedeutung haben - in diesem Fall eben die Darstellung einer Hex-Zahl. So würde ich das verstehen.

  • Vereinfacht gesagt bewirkt das -e dass Sequenzen ausgewertet werden und mehr oder weniger je nach Notation (hier \x == HEX) in binär umgerechnet werden, "normale" Buchstaben werden lt. ASCII-Tabelle "umgerechnet"

  • zum USB Relay senden, da kam mir die Frage auf, was dahinter steckt.

    Woher sollen wir das wissen?

    Hast du irgendwo erwähnt was für ein Relais verwendet wird?

    Das erste könnte der Start oder ein Funktionscode oder beides sein.

    Die zwei darauffolgenden 2 bytes könnten die einzelnen Relais sein.

    Das letzte byte könnte ein Stop-Marker sein.


    Die meisten beschreiben ihr binäres Protokoll.

  • Woher sollen wir das wissen?

    Hast du irgendwo erwähnt was für ein Relais verwendet wird?

    ne hat er nicht, er hat überhaupt wenig beschrieben, vielleicht sollte er das mal lesen?

    - Der Weg zur Erkenntnis: Wie frage ich nach Hilfe?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ich weiß das ich damit an/aus schalten kann.

    Mir ging es darum wie die Ziffern zustande kommen, nur aus Interesse halber.

    Denn eine Hex sieht ja so eigentlich z.B. so aus 0xFF. Deswegen die allgemeine Frage dazu.

  • Mir ging es darum wie die Ziffern zustande kommen

    weil das IRGENDWO festgelegt wurde!

    Deswegen die allgemeine Frage dazu

    das war meine allgemeine Antwort, aber 0x00 - 0xFF sind nur Zahlen die manchmal Buchstaben, manchmal Zeichen aber auch mal nur Codes sind!

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • matze1 Hex sieht eigentlich so aus: $FF. So habe ich das bei 6510-Assemblern kennengelernt und Pascal sieht das auch so aus. Alle anderen machen das komisch falsch. Mathematiker schreiben beispielsweise oft die Basis in klein unten dran (FF₁₆), bei Assemblern auf dem PC gibt's FFh, einige BASIC-Dialekte verwenden &HFF, Postscript und Bash haben ähnlich der Mathematik eine allgemeine Form für verschiedene Basen: 16#FF, in URLs sieht es so aus: %FF, in „quoted printable“ in E-Mails =FF, in HTML ÿ, in Smalltalk 16rFF, in Common Lisp #16rFF, und so weiter. Wenn Du bisher nur 0xFF gesehen hast und denkst so *muss* das aussehen, dann hast Du bis jetzt noch nicht viel gesehen. 😉

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Naja ich habe irgendwo gelesen, dass die Hex-Schreibweise 0xFF

    das ist ja auch richtig!

    Ich habe irgendwo gelesen das ein PKW Kraftstoff braucht und tatsächlich fast überall gibt es Stationen die Kraftstoff verkaufen, nicht JEDEN aber immerhin den Meisten!

    Wenn ich nun ein PKW baue welcher meinen eigenen Saft braucht bekomme ich den sicher nicht an üblichen Tankstellen!


    Siehe Druckerpatronen, Tinte gibts überall, aber die Druckerpatronen passen nicht überall rein so kann man eben nicht mit jeder Tinte fahren und manchmal bekommt man die richtige oder falsche Tinte auch nicht in die Patronen. Siehe Benzin im DieselPKW kann zu schweren Verlusten führen.


    Ein Code ist ein Code und was sich dahinter wie verbirgt ist weniger klar als Kraftstoffunterschiede und Tintenunterschiede.


    Zu Code es gibt ausser 8 Bit auch 7 Bit und weniger, zu erst mal muss man ja die selbe Sprache sprechen und erst dann gehts an die Worte ob man die kennt, bist du also sicher das du 8-bit Code richtig bekommen hast?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Das mit der Schreibweise hat historische Gründe und soll angeblich mit dem PDP-11 zusammenhängen.


    Windows benutzt z.B. noch den Carriage return (Wagenrücklauf), was ursprünglich für Schreibmaschinen verwendet worden ist.

    Linefeed ist der Vorschub durch die Walze und der Wagenrücklauf hat den Kopf wieder am Anfang positioniert.


    Vieles in der IT hat historische Hintergründe, aus einer Zeit bevor es überhaupt Computer gab.

  • Windows benutzt z.B. noch den Carriage return (Wagenrücklauf),

    und das erscheint logischer als Unix, Linux oder apple


    denn es könnte immer NL new line (neue Zeile) ohne CR carriage return (Wagenrücklauf) geben


    Nur ein NL new line mit eingebauten integriertem CR carriage return ist zwar denkbar aber nicht immer erwünscht oder

    nur ein CR carriage return mit eingebauten integriertem NL new line ist zwar denkbar aber nicht immer erwünscht!

    Für mich bleibt diese Linux Besonderheit ein Ärgernis auch wenn es Zeichen spart!


    Jeder kennt das! und für jeden Mist auf den notepad++

    :wallbash::wallbash::wallbash: zu wechseln ist mit Kanonen auf Spatzen schiessen :@


    CR hat mit NL nichts zu tun und umgekehrt.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)