Forum: PC Hard- und Software RS 232 Baudrate


von Jens (Gast)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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.

von Jens (Gast)


Lesenswert?

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"

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Externe USB-zu-Seriell Kabel können unter WinXP bis zu 1 MBaud

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Jens (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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.

von Christian R. (supachris)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.