11-Bit Frame mit RS-232 übertragen

Gast #384960
Lesenswert?

Hallo,

ich möchte mit der RS-232 Schnittstelle des PC ein 11-Bit Frame
erzeugen (1xStart, 8xData, 1x Parity, 1xStop). Hat jemand eine Idee,
wie man das umsetzen könnte? Das Problem ist nämlich, dass die RS-232
Schnittstelle eines PCs soetwas nicht unterstützt (kein Startbit oder
9Bit Daten).
Gast #384961
Lesenswert?

Laut Datenblatt ist das möglich, und ich habe das auch selber schon
gemacht.

Fully Programmable Serial Interface
Characteristics:
– 5-, 6 -, 7-, or 8-Bit Characters
– Even-, Odd-, or No-Parity Bit Generation
and Detection
– 1-, 1 1/2-, or 2-Stop Bit Generation
Gast #384963
Lesenswert?

Hi,

danke für die schnellen Antworten. Ich möchte mit C# und .NET Framework
2.0 ein Programm erstellen, dass mit dem oben genannten Frame arbeitet.
bei den Einstellungen der rs-232 finde ich leider keine Einstellungen,
wo das Startbit aktiviert werden kann.
Gast #384968
Lesenswert?

Was passiert eigentlich wenn das Parity-Bit nicht richtig ist? Wenn ich
das richtig verstehe, wird der empfangene Wert mit einem
voreingestellten ersetzt (C# .NET 2.0). Meine Frage ist, kann man das
umgehen? Man könnte dann bei geeigneter Wahl der zu übetragenden
Zeichen eventuell ein Bit korrigieren. Oder z.B. das Parity-Bit als 9.
Bit übertragen.
Persönliche Seite #384969
Lesenswert?

Ich kann mich nicht auf .net beziehen, aber bei der normalen WinAPI kann
man beim Initialisieren einstellen (im DCB), ob ein fehlerhaftes Zeichen
ersetzt wird oder bloss ein Error-Flag gesetzt wird (kann dann per
ClearCommError ausgelesen werden). Irgendwo gibt es ganz sicher auch
bei .net diese Option. Das Parity als 9. Bit ist prinzipiell machbar
aber sehr sehr langsam, da man dann jedes mal den Parity-Modus auf den
gewünschten umstellen muss (Mark/Space). Dadurch kann man immer nur
einzelne Bytes (oder Gruppen mit gleichem 9. Bit) senden und nicht mehr
grössere Blöcke auf einmal.
Gast #384970
Lesenswert?

Hi,

ich habe mal weiter gesucht und Folgendes gefunden:

http://www.tldp.org/HOWTO/Serial-HOWTO-21.html#ss21.3

Falls man ein 9-Bit langes Zeichen senden möchte muss man mit dem
Parity-bit arbeiten. In der serialPort-Klasse gibt es das Member
Parity. Dieses kann auf mark oder space eingestellt werden, dann ist es
immer gesetzt oder gelöscht (hat Tobi schon oben angemerkt). Es ist zwar
nicht die schnellste Möglichkeit, jedoch funktioniert es (senden geht
jedenfalls).

Für den Empfang hab ich die Einstellung jedoch noch nicht gefunden. Ich
werd nochmal suchen.

Gruß, Slowflyer

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren