Hallo,
Grundsätzlich ist das kein Problem, wenn man es kann.
Bei 8 Datenbits, kann man 256 unterschiedliche Symbole übertragen. Für den Computer sind das erst mal nur Binärwerte.
Nun begab es sich, dass man verschieden Geräte, z.B. einen Computer und ein Terminal mit einander verbinden wollte.
Das geht aber nur, wenn beide Geräte die selbe Sprache sprechen, sonst hat man nur Datensalat.
Irgendwer hat dann mal den ASCII-Code definiert, weil die Amis waren, dachte da keiner an Umlaute und 7 Bit genügten.
http://de.wikipedia.org/wiki/ASCII
IBM ging einen anderen Weg:
http://de.wikipedia.org/wiki/EBCDIC
Du kannst ja mal durchspielen, was sich so tut, wenn du zwei Geräte verbindest, welche diese beiden unterschiedliche Codierungen verwenden.
Bevor man Bildschirmterminals hatte, waren TTYs das Standartgerät, kennt man auch als Telex oder Fernschreiber.
Da brauchte man in der Norm auch Steuerzeichen. bei ASCII sind die ersten 32 Zeichen als Steuerzeichen reserviert.
CR komm von Carriage Return (Wagenrücklauf) und LF ist Line Feed (Zeilenvorschub) dinge die man bei einem TTY halt noch hat.
Zu dieser Zeit hatte man noch Lochstreifen als Speichermedium.
Um den Lochstreifen in den Leser einlegen zu können, braucht man am Anfang schon Löcher, dazu wurde das Zeichen NUL benötigt. Allgemein hat man am Anfang des Lochstreifens eine ganze Reihe NUL gestanzt.
Da man damals ganze Dateien auf Lochstreifen gespeichert hat, gibt es noch Steuerzeichen für diese, wie z.B. EOF (End Of File).
Dann brauchte man noch ein paar Steuerzeichen für die Regelung des Datenverkehrs.
Das Ganze hat dann dazu geführt, dass Standard-Treiber entwickelt wurden, welche den Datenverkehr regeln, ohne dass jeder Programmierer dies in seinem Programm extra programmieren muss.
Allerdings kann man normalerweise bei jedem Betriebssystem diese Treiber auf Transparent, bzw. Binär, umschalten, dann werden die ganzen Steuerzeichen nicht ausgewertet.
Wenn man jetzt Binäre Daten übertragen will, hat man ein kleines Problem, man benötigt immer noch Steuerzeichen, aber es sind schon alle möglichen 256 Kombinationen belegt.
Wie schon erwähnt wurde kann man alles in ASCII-Hex wandeln, das verdoppelt aber die Datenmenge.
Eine andere Methode ist MIME
http://de.wikipedia.org/wiki/MIME
Bei MIME-64 wird der Datenstrom zuerst in 6-Bit Grüppchen aufgeteilt. Zu den 6-Bit Werten addiert man dann noch 32 (für die reservierten Steuerzeichen) und sendet das so über die Leitung. Das Datenvolumen wird dann nur um den Faktor 1.5 aufgebläht.
Um jetzt bei einem reinen binären Datenstrom noch zusätzlich Steuerzeichen zu gewinnen, arbeitet man mit einem Escape-Zeichen.
Gerne wird dafür der Wert 0x1B (ESC) verwendet.
Will man ein Steuerzeichen einfügen sendet man zuerst ein ESC und dann das Steuerzeichen.
Da der Wert 0x1B aber auch in den Daten vorkommen kann, sendet man in diesem Falle zwei mal ESC.
Fazit:
Du kannst die Daten senden wie dir Lustig ist. Musst dann aber die Software für Sender und Empfänger selber schreiben!
Was du aber auch nicht vergessen darfst, ist, dass immer damit zu rechnen ist, dass Zeichen verloren gehen oder gestört ankommen.
Da muss dein Protokoll dann wieder synchronisieren können, andernfalls hängt sich das einfach auf.
Bei der crlf-Methode geschieht die Synchronisierung immer an dieser Stelle.
Stell dir vor du sendest lauter Zahlen, der Empfänger weiss, dass jede Zahl 5 Stellen hat.
Wenn du kein crlf verwendest und ein Zeichen verloren geht, gibt es keine Möglichkeit herauszufinden wo jetzt welche Zahl aufhört und wo die nächste beginnt.
MfG Peter(TOO)
Lesezeichen