2010-12-01 5 views
1

Ich möchte Nachrichten über die serielle Schnittstelle mit PySerial senden. Einer der Parameter für den seriellen Konstruktor ist 'Bytesize'. Ich habe versucht serielle.SEVENBITS und serial.EIGHTBITS und habe keinen Unterschied bemerkt. Die Dokumentation ist ein bisschen vage und ich bin neu sowohl in Python als auch in der seriellen Kommunikation. Legt dies nur den Maximalwert fest, den ein Byte halten kann, oder hat es etwas mit vorzeichenbehafteten Bytes zu tun? Kann jemand aufklären, warum ich 7 Bits über 8 verwende? Ich habe gesucht, aber keine Antwort gefunden.'Bytesize' in PySerial-Modul

Danke

Antwort

1

Dies bezieht sich auf die Anzahl der Datenbits in jedem übertragenen Zeichen. Von wikipedia:

Datenbits

Die Anzahl der Datenbits in jedem Zeichen sein kann 5 (für Baudot-Code), 6 (selten verwendet), 7 (für echte ASCII), 8 (für jede Art von Daten, wie dies die Größe eines Bytes entspricht) oder 9 (selten verwendet). 8 Datenbits sind fast universell in neueren Anwendungen verwendet. 5 oder 7 Bits im Allgemeinen nur sinnvoll mit älteren Geräten wie Fernschreibern.

Die meisten seriellen Kommunikationsdesigns senden die Datenbits innerhalb jedes Bytes LSB (Least Significant Bit) zuerst. Dieser Standard wird auch als "Little Endian" bezeichnet. Auch möglich, aber selten verwendet, ist "Big Endian" oder MSB (Most Significant Bit) erste serielle Kommunikation. (Siehe Endianness für mehr über Bit-Reihenfolge.) Die Reihenfolge der Bits ist in der Regel nicht konfigurierbar, aber Daten können Byte-ausgetauscht werden nur vor senden.

+0

Re „Die meisten seriellen Kommunikations Designs die Datenbits innerhalb jedes Byte LSB senden“ Die meisten seriellen Hardware-Schnittstellen das Plakat mit pyserial abstrakten Bitreihenfolge begegnen entfernt wahrscheinlich ist, nur ein Byte Bereitstellen Schnittstelle. Auf der anderen Seite, LSB-Standards [UART (enthält RS-232)] aber MSB-Standards [SPI, I2C] – SingleNegationElimination

+0

Danke Jungs. Also ich denke, es ist am besten, mit 8 Bits zu gehen, dann ... – Jack

+0

@Jack, sollten Sie gehen mit was auch immer die Sache, die Sie mit Schnittstellen benötigen erfordert (in der Regel 8, wie angegeben).Wenn Sie die Kontrolle über beide Enden haben, hätten Sie wiederum wenig Grund, 7 Bits zu verwenden, es sei denn, Sie hatten eine (unwahrscheinliche) Kombination von Anforderungen, die nur ASCII-Daten betreffen, und Leistungsanforderungen, die den Overhead des redundanten 8. Bits überspringen wäre kritisch für dich. –

3

Historisch gesehen, ist es üblich war, nur ASCII-Text über eine serielle Verbindung zu senden, die in sieben Bits passen, und ein achtes Bit würde als ein Paritäts Marker verwendet werden, die zu sein wurde, wenn die Daten zeigen, könnte korrekt übertragen

Da die Paritätsprüfung keine Fehler bei einer geraden Anzahl von Bits erfasst und die Daten überhaupt nicht korrigieren kann, ist es nicht so wertvoll, und die moderne Praxis besteht darin, 8-Bit-Daten zu verwenden und Fehlererkennung und Korrektur auf einer höheren Protokollschicht.

Kurze Antwort ist wahrscheinlich 8-Bit wollen, aber es hängt davon ab, was das andere Ende der seriellen Verbindung erwartet.

Update: Von Ihrer anderen Frage klingt es, als ob Sie beide Enden der Verbindung programmieren und Ihre Nachrichten überprüfen, so dass es am einfachsten ist, 8-Bit zu verwenden.

+0

Dank Russell, sehr geschätzt :) – Jack