Hallo Michael,
Ich habe ein Frage zu den Parametern für die
COM-Port-Kommunikation.
Die Angabe 19200 / 8 / n / 1 sagt aus, daß die
Datenübertragung mit 19200 Baud stattfindet und der
8-Bit-Zeichensatz übertragen werden kann.
Also die Daten werden folgendermassen übertragen:
Startbit -> Datenbits -> Paritybit -> Stopbit
Mit der Baudrate legst du fest wie lange (zeitlich) eine Bit ist.
Der Ruhepegel ist normalerweis „1“ (der Pegen auf der RS232 ist aber invertiert, also entspricht eine „1“ einen negativen Pegel)
Das Startbit ist eine „0“ somit weiss der Empfängerbaustein, dass jetzt ein Datenframe kommt.
Danach werden die Datenbits (Die Datenbits, werden übrigens mit den Niederwertigen zuerst gesendet, duzu weiter unten noch etwas mehr) und das paritybit übertragen.
Das Ende wird dann mit dem Stopbit, welches immer „1“ ist angezeigt.
Damit das ganze funtioniert, müssen der Sender und der Empfänger gleich eingestellt sein.
Bei den Datenbits, gibt es übrigens die Formate 5, 7 und 8 Bits. 5 bits kommen noch vom alten Fernschreiber.es wird immer nur die konfigurierte Anzahl an Bits übertragen.
Das Parity wird, je nach Einstellung, zusätzlich gesendet, oder auch gar nicht (bei None)
Es gibt übrigens 5 einstellungen für das Parity:
None = das Paritybit wird gar nicht übertragen.
Even = Die „1“ in den Datenbits ergeben zusammen mit dem Parity eine gerade Anzahl.
Odd = ungerade Anzahl.
Mark = Das Paritybit ist immer „1“
Space = Das Paritybit ist immer „0“
Das Stopbit ist immer „1“ und hat mehrere Aufgaben.
Einerseits dient es zur Kontrolle des Datenframes, ist es nicht „1“ stimmt etwas mit der Baudrate nicht, bzw. es wird eine „break“ übermittelt. Ein „Break“ ist ein besonderes Steuersignal, in dem die Datenleitung mindesten etwa 0.2 Sekunden auf „0“ gelegt wird.
Andererseits sorgt es dafür, dass die Leitung auf „1“ liegt und somit das nächste Startbit erkannt werden kann.
Normalerweise entfernt der Empfängerbaustein die Start- Stop- und Parity-Bits und zeigt nur die Auswertung in zusätzlichen Registern an.
Nun noch was zu zu „Mark“ und „Space“ beim Parity:
Wenn der Empfänger auf 8 Bit Daten und kein Parity eingestellt ist, kann man mit 7 Daten- und Parity senden, das Paritybit ist dann im höchstewertigen Bit auf der Empfängerseite sichtbar, deshalb die Möglichkeit der Einstellung von Mark oder Space.
Das ganze kommt noch aus der Zeit der Fernschreiber oder TTYs, da war der Empfänger noch mechanisch realisiert und konnte nicht einfach mal schnell umprogrammiert werden.
Ob du mit 1 oder 2 Stopbits (1.5 Stopbits geht nur mit 5 Datenbits, kommt von den fernschreibern) sendesthängt vor allem vom Empfänger ab. Im Prinzip kannst du immer mit 2 Stopbits senden, auch wenn der Empfänger auf 1 Stopbit eingestellt ist, das umgekehrte funktioniert nur scheinbar manchmal und zwar wenn der Sender die Daten nicht schnell genug „nachschieben“ kann, dann entsteht eine Pause zwischen zwei Frames, aber das ist heute selten der Fall. Manchmal ist es trotzdem besser mit zwei Stopbits zu senden, der Empfänger hat dann etwas mehr Zeit die daten zu verarbeiten.
Also, wenn du z.B. 8 Data, Parity und 2 Stop-bits einstellst werden total
1 Start-, 8 Daten-, ein Parity- und 2 Stopbits übertragen, also total 12 Bits.
MfG Peter(TOO)