RS 232 Baudrate

Gast #661685
Guten Morgen

hab hier ein problem mit den Baudraten. Ich will mit einer Baudrate von 
230400Baud senden da das gerät diese unterstützt leider gibt es keinen 
passenden Gerätetreiber und in windows kann ich nur bis maximal 115200 
baud einstellen.
wie könnte ich es trotzdem schaffen die einstellungen so zu 
konfigurieren um die Baudrate zu erreichen? bzw. gibt es patches oder 
Programm in C/C++ ?

mfg jens
Gast
Die Frage ist ja, ob Dein Mainboard das auch unterstützt?
230400 Baud kommt mir auch etwas 'krumm' vor.

Da Du von einem Programm in C/C++ sprichst, nehme ich mal an, Du willst 
da selbst was programmieren? In dem Fall musst Du den COM-Port eh' 
initialisieren und dazu eine DCB-Struktur zur Übergabe mit Daten füllen.
Laut MSDN ist der max. Wert für die Membervariable 'BaudRate' in DCB 
256000 Baud.
Gast
Also laut dcb sind 128000 und dann 256000 Baud möglich. aber ich kann 
nur mit 230400Baud mit der Hardware kommunizieren. selbst in der windows 
einstelllung kann ich max. nur 128000 einstellen.

wie finde ich raus ob mein pc 230400 unterstützt und wenn ja wie bekomme 
ich windows dazu diese Baudrate zu unterstützen.
zum Prog benutze ich Ruby da gibt es auch eine serialport.c die 
unterstützt auch 230400baud (steht zumindest in der datei) aber wenn ich 
die Baudrate einstelle kommt nur "unknown modem parameters"
Persönliche Seite
Die Standardschnittstelle des PCs unterstützt maximal 115200 Baud. Mehr 
lässt auch der Standarddevicetreiber von Windows nicht zu. Die Werte, 
die in irgendwelchen Headerdateien stehen, sind hierfür vollkommen 
irrelevant.

Die in den "Super-I/O-Chips" heutiger Motherboards eingebauten UARTs 
können auch mit höheren Baudraten betrieben werden, das aber ist weder 
standardisiert noch brauchbar dokumentiert.
Es gibt einen speziellen Devicetreiberhack, der mit einigen dieser 
"Super-I/O-Chips" zusammenarbeitet (nochmal dank an Benedikt für den 
Hinweis):

http://www.devdrv.com/shsmod/index.htm

Das würde ich aber nicht in einem Produktivsystem einsetzen, da sich der 
Treiber und seine "Installationsroutine" nicht an saubere 
Windows-Gepflogenheiten hält - der Standardtreiber "serial.sys" wird 
durch den gehackten ersetzt. Spätestens mit dem nächsten Servicepack 
wird die Angelegenheit also drollig.

Eine zuverlässige Möglichkeit, mit höheren Baudraten zu arbeiten, ist 
nur mit Verwendung von anderen seriellen Schnittstellen gegeben - 
entweder mit USB-RS232-Bridges (deren Hardware unterstützt je nach 
Hersteller Baudraten im MBit-Bereich) oder mit einer PCI-Karte, auf der 
geeignete UARTs verbaut sind.
In letzterem Falle sind die UARTs von Oxford Semiconductor oder von Exar 
zu empfehlen.
Gast
Aha danke für den Link

also unterstützt win XP nur bis max. 115200 Baud obwohl man auch mehr 
rausholen könnte. hab jetzt ma noch ein wenig gegoogelt und bin noch auf 
"HiSerial.sys" (is ne .exe datei) gestossen und weiss net so recht ob 
ich installieren soll da die Änderungen ja schon ziemlich weit ins 
system gehen. Hat da schon jemand ne Erfahrung damit gemacht?

2.)

Warum kann man 256000 beim dcb.baudrate einstellen wenns eh nicht geht? 
irgendwie unlogisch für mich

mfg jens
Persönliche Seite
> also unterstützt win XP nur bis max. 115200 Baud

NEIN. Das hast Du falsch verstanden. Die standardisierte PC-Hardware 
tuts nicht, vollkommen unabhängig vom Betriebssystem.

Mit anderer Schnittstellenhardware kann man unter XP (und anderen 
Betriebssystemen) auch ganz andere Baudraten nutzen.

Es gibt schlecht dokumentierte und nicht standardisierte Erweiterungen, 
die mit speziellen Treibern (wie dem von mir verlinkten) angesprochen 
werden können, das aber ist eine ziemliche Frickellösung.

> Warum kann man 256000 beim dcb.baudrate einstellen wenns eh nicht geht?

Weil es auch andere seriellen Schnittstellen als die beiden auf dem 
Motherboard gibt. Und die können, da sie sich nicht an uralte 
IBM-Standards halten müssen, sich natürlich auch ganz anders verhalten.
Wenn du mit 230.400 Baud kommunizieren willst, brauchst du am besten 
einen USB-Seriell-Wandler. Da kannst du dann wie schon gesagt, alles 
einstellen.
Allerdings nicht im Hyperterminal, sondern in deiner C/C++ Applikation. 
Da kannst du der DCB dann alles übergeben, was du gerne hättest.

Ich hab auch einen FT232R Wandler am PC und betreibe ihn mit 460.800 
Baud. Klappt bestens.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.