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.
Aber was ist das "\xA0\x01\x00\..." für eine Schreibweise?
Es geht dabei um Befehle zum USB/Seriell Adapter.
Hexadezimal -Schreibweise? Schau mal ob du hier fündig wirst!
Aber was ist das "\xA0\x01\x00\..." für eine Schreibweise?
Ascii Byte A0, Byte 01, Byte 00
siehe u.a. https://stackoverflow.com/questions/8899…kslash-x-prefix
Also heißt A0 ist das 160.zigste Zeichen?
160.zigste Zeichen
Zeichen von was?
Hex A0 == Dez. 160 == Bin 1010 0000
Befehle zum USB/Seriell Adapter
Einfach eine Bitabfolge
Weil es ja Ascii byte ist, da dachte ich das ist ein Zeichen, siehe Tabelle.
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:
ZitatAber 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
Vielen dank für die Ausführliche Doku.
Der code sieht in meinen Fall so aus:
\xA0\x01\x00\xA2
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
Wie gesagt, ich muss im Terminal
bzw.
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?
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!
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. ?
Naja ich habe irgendwo gelesen, dass die Hex-Schreibweise 0xFF oder halt hinten eine tiefgestellte FF16 Zahl ist.
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?
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++
zu wechseln ist mit Kanonen auf Spatzen schiessen
CR hat mit NL nichts zu tun und umgekehrt.
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!