mikrocontroller.net

Forum: PC-Programmierung 11-Bit Frame mit RS-232 übertragen


Autor: Slowflyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Startbit unterstützt die serielle Schnittstelle ganz sicher. Un die
von dir genannten 8datenbits sind auch kein Problem. Ich versteh
ehrlich gesagt das Problem nicht.
Das hier geht auf jeden Fall:
(1xStart, 8xData, 1x Parity, 1xStop)

Autor: Slowflyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil das Startbit meiner Meinung nach immer gesendet wird.

Autor: Rupplyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal unter receivedbyte. steht standardmäßig 1 drin und kann nach
belieben verändert werden...

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rs232 ohne Startbyte sollte wegener der nötigen Syncronisierung garnicht
gehen. Das wird benötigt, um die Takte aufeinander einzustellen

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Start- und Stopbit werden in jedem Fall gesendet, sonst würde das ganze
gar nicht funktionieren.
Du musst also lediglich noch auf 8-bit Daten umschalten und das
gewünschte Parity aktivieren.

Autor: Slowflyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Slowflyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Slowflyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt hab ich es gefunden.

MSDN ->
http://msdn2.microsoft.com/en-us/library/system.io...

Dort heisst es, dass wenn der Parityreplace Member auf 0 gesetzt ist,
ist das Replace deaktiviert.

Gruß, Slowflyer

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.