Kann man NUL über eine serielle Leitung senden?

438
user233009

Der Wert des ASCII-Zeichens "NUL" ist 0. Ist es möglich, dieses Zeichen über eine serielle Leitung zu senden, ohne es als nicht gesendete Daten interpretieren zu lassen?

1

2 Antworten auf die Frage

4
Jamie Hanrahan

Ja bitte. Die Umrahmung der Zeichen ist von ihrem Inhalt getrennt. Es gibt keinen Grund dafür, dass acht Bits von Null inhärent als "keine Daten werden gesendet" interpretiert werden - jeder mehr als ein Plattensektor mit Nullen wäre.

Um es näher zu erläutern: In einer typischen asynchronen Serie haben Sie ein Startbit, dann acht Datenbits und dann ein Stoppbit. Sie hätten immer noch die acht Datenbits - sie wären einfach nur Nullen. Das Start- und Stoppbit sagen dem Empfänger "Hier ist ein Zeichen". Was die Teile des Charakters sind, sind irrelevant.

Wenn ein empfangendes Programm die NUL als "keine Daten" interpretiert, ist dies seine Aufgabe, aber das ist ein Problem auf der Anwendungsschicht.

Wenn das empfangende Programm beispielsweise ein Terminalemulator ist, wird es wahrscheinlich nichts tun, wenn es eine NUL empfängt (weil dies bei den meisten echten Terminals der Fall ist). Die serielle Port-API hat immer noch den Empfang des NUL-Zeichens registriert und dem Programm übergeben. Es ist der Terminal-Emulator, der entschieden hat: "Oh, das werde ich einfach ignorieren."

Es gibt eine ganze Reihe von Anwendungen zum Senden von "binären" Daten über asynchrone serielle Leitungen, die ohne NULs fehlgeschlagen wären oder überhaupt nicht empfangen worden wären.

Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/Asynchronous_serial_communication

Wie würde also 0 über eine serielle Leitung aussehen? user233009 vor 7 Jahren 0
Eine Bitzeit der "Abstand" -Bedingung, die das Startbit sein würde. Acht weitere Bitzeiten für "Abstand" - die Datenbits, in diesem Fall alle Nullen. Und dann mindestens ein Bit Zeit zum "Markieren" - das Stoppbit. Danach signalisiert der Übergang zum Abstand, dass der nächste Zeichenrahmen gestartet wurde. Dies kann jederzeit geschehen, nachdem ein Stoppbit (oder was auch immer die Anforderung ist; einige alte Geräte benötigten zwei oder sogar 1,5 Stoppbits) abgeschlossen wurden. Eine Leerlauflinie wird solange im "Markierungs" -Zustand gehalten, bis der nächste Zeichenrahmen beginnt. Jamie Hanrahan vor 7 Jahren 2
0
davidgo

Das serielle Protokoll verfügt über Start- und Stopp-Bits, und die Daten werden innerhalb dieser Bereiche gesperrt - N81 (keine Parität, 8 Bits, 1 Stopp-Bit können Sie beliebige ASCII-Zeichen senden, und ist eine übliche Kodierung), indem Sie ein Startbit oder senden Wenn Sie kein Startbit senden, können Sie zwischen nichts und Null unterscheiden.

* "Durch Senden eines Stoppbits oder Nichtsenden eines Stoppbits kann zwischen Null und Null unterschieden werden" * - Nicht wahr. Ein Stoppbit für sich ist im Vergleich zum Ruhezustand (Mark) nicht sichtbar. Es ist tatsächlich das Startbit, das anzeigt, dass sich etwas (dh ein Frame) auf der Leitung befindet, und das Stoppbit bzw. die Stoppbit (s) bestätigen das Ende dieses Frames. Ein fehlendes / ungültiges Stoppbit generiert einen Framing-Fehler. Ansonsten gibt es ein empfangenes Zeichen mit einer ausstehenden / optionalen Paritätsprüfung. sawdust vor 7 Jahren 0