RS232, WinXP, Stopbit fehlt

Hallo,

Nachdem ich mich über merkwürdige Übertragungsstörungen bei einer RS232 Übertragung gewundert habe bin ich auf Fehlersuche gegangen. Erste Feststellung: Wenn ich die Kommandos auf einem uralten DOS Rechner in ein Terminal-Programm eintippe, dann kommt alles korrekt am anderen Ende an. Wenn ich die gleichen Kommandos in Hyperterminal unter WinXP eintippe, dann klappt es nicht. Es handelt sich um eine echte COM1 Schnittstelle die auf dem Mainboard drauf ist, also kein USB Adapter. 9600 Baud, 8N1, keine Flussteuerung. Also habe ich ein Oszi an die TXD Leitung angeschlossen und mir die Signale mal angeschaut. Ich tippe den Buchstaben "g" ein ( 67hex = 01100111bin ), die korrekte Bitsequenz sollte sein:

0111001100 (ein Startbit, LSB...MSB, ein Stopbit).

Ich messe folgende Pegel: HLLLHHLLHLLLLL... HLLLHHLLLLLLLL... Genau bei jedem zweiten Versuch fehlt das letzte Datenbit, und das Stopbit fehlt immer! Was ist da los?

Gruss Michael

Reply to
Michael Koch
Loading thread data ...

Michael Koch schrieb:

Das Stopbit ist '1'!

Passe.

Gruß Dieter

Reply to
Dieter Wiedmann

Hallo Dieter,

Das kann nach meiner Messung aber nicht sein. "0" entspricht High-Pegel, "1" entspricht Low-Pegel.

Auf meinem Oszi geht es immer mit einer steigenden Flanke los, also mit "0". Pretrigger steht auf 25%, davor ist konstant Low-Pegel.

Gruss Michael

Reply to
Michael Koch

Stopbit ist logisch 1 und nicht 0. Also ist das Bitmuster 0111001101.

Da die Spannungspegel gegenüber der Logik invertiert sind, ist das das völlig korrekte Bitmuster.

0xE5? Das ist allerdings komisch. Dafür finde ich auf die Schnelle keine Erklärung.
Reply to
Heiko Nocon

Michael Koch schrieb:

Ist aber so. Wie sollte denn sonst zwischen Start- und Stopbit unterschieden werden.

Richtig, auf +/-12V Ebene gilt negative Logik.

Passt doch.

Gruß Dieter

Reply to
Dieter Wiedmann

Heiko Nocon schrieb:

E7!

Daran ändert sich allerdings nichts.

Gruß Dieter

Reply to
Dieter Wiedmann

Hi,

stimmt.

Das Problem heisst also nicht "Stopbit fehlt" sondern "letztes Datenbit fehlt bei jedem zweiten Zeichen"

Wenn ich die Flusssteuerung umschalte auf "Xon Xoff" dann geht es. Wenn ich dann wieder zurück schalte auf "keine" dann geht es immer noch. Wenn ich dann Hyperterminal neu starte dann geht es wieder nicht.

Was gibt es für Alternativen zu Hyperterminal?

Gruss Michael

Reply to
Michael Koch

Michael Koch schrieb:

Eine ganze Menge, ich hab das hier im Einsatz, ist Freeware:

formatting link

Gruß Dieter

Reply to
Dieter Wiedmann

Hallo Dieter,

danke für den guten Hinweis. Damit hat es sofort funktioniert. Ab in die Mülltonne mit dem Hyperterminal.

Gruss Michael

Reply to
Michael Koch

Es gibt ganz viele, nur imho nichts schlimmeres ;-)). Ich weis, das ist keine wirkliche Hilfe, trotzdem Grüße Uwe

Reply to
uwe wiards

Auch wenn das Hyperterminal ein ziemliches Scheißprogramm ist, ich glaube nicht, daß es schuld ist. Ein solcher Bug wäre mir (und vielen Tausend anderen Leuten) ganz sicher schon aufgefallen. Allein ich habe im Laufe meines Lebens bestimmt schon einige Dutzend Megabyte in den unterschiedlichsten Formaten per Hyperterminal versandt und den Hauptteil davon ganz sicher mit 8N1 und ohne Xon/Xoff.

Also nö. Viel wahrscheinlich ist defekte Hardware auf der sendenden Maschine. Das muß nichtmal notwendigerweise die Schnittstelle selber sein, auch z.B. ein RAM-Defekt kann sowas bewirken.

Reply to
Heiko Nocon

Hallo Michael,

Koennte hier etwas auf 7-bit ASCII eingestellt sein, was auf "binary" umgestellt werden sollte?

Meine Favoriten sind die alten DOS Terminals.

--
Gruesse, Joerg

http://www.analogconsultants.com
Reply to
Joerg

Hi,

Na ja, aber wenn ich auf "Xon/Xoff" umschalte, dann geht es, und wenn ich dann wieder zurück schalte auf "kein" Handshake, dann geht es immer noch. Ich tippe auf ein Treiberproblem.

Wenn ich Pin 2 und 3 verbinde, dann sehe ich ein korrektes Echo und das Problem fällt gar nicht auf, denn Hyperterminal scheint empfangsseitig das höchstwertige Bit zu ignorieren.

Gruss Michael

Reply to
Michael Koch

Hi Joerg,

Ich wüsste nicht wo. Was stellt man normalerweise bei "Terminalemulation" ein? Ich habe "automatische Erkennung" und "VT100" ausprobiert, in beiden Fällen zeigte sich der Fehler.

Klar, meine auch. Aber erklär das mal einem Kunden.

Gruss Michael

Reply to
Michael Koch

Hallo Michael,

Sieh mal unter "Connect to" -> "Configure" -> "Connection" nach. Kann sein, dass sie bei der XP Version etwas anders heissen oder bei Euch in Deutsch sind. Wenn bei "Data Bits" 7 anstatt 8 steht, umstellen. Nur so als Idee, den Aerger hatte ich auch schon einmal. 7bit ASCII wird oft mit zwei Stop Bits uebertragen. Dann sieht das alles wie eine normale RS232 Kommunikation aus, doch das letzte Bit bleibt statisch.

An sich sollte Hyperterminal per Default 8bit machen. Doch wenn man einen alten *.ht File als Muster genommen hatte, koennte darin ein Kommando fuer 7bit sitzen.

Der Kunde ist Koenig :-)

Bei Benutzung durch viele oder durch grosse Kunden sollte man es mit Hyperterminal versuchen, ans Laufen zu bekommen. Die Installation eines alternativen Terminal Programms wie TeraTerm wird zumindest bei manchen Firmen von den IT Leuten nicht gestattet.

--
Gruesse, Joerg

http://www.analogconsultants.com
Reply to
Joerg

Hallo Michael,

Sieh noch mal in the Settings by Hyperterminal. Wenn Du an Kunden ausliefern musst, ist eine Freeware-Loesung bei grossen Firmen eventuell nicht so der Hit. Die wollen oft, dass es mit Standard Software laeuft.

--
Gruesse, Joerg

http://www.analogconsultants.com
Reply to
Joerg

Hallo Joerg,

ja da steht natürlich schon 8 data bits. Danach wird man ja automatisch gefragt wenn man die Verbindung einrichtet.

Ich werde wohl die Software in dem Gerät am Ende der Leitung ändern. Alle empfangenen Daten werden knallhart mit 7Fhex und-verknüpft. Dann interessiert mich nicht mehr was Hyperterminal beim achten Bit sendet.

Gruss Michael

Reply to
Michael Koch

Hallo Michael,

Letzteres ist ebenfalls selektierbar. Es kann das tun, muss aber nicht.

--
Gruesse, Joerg

http://www.analogconsultants.com
Reply to
Joerg

Hallo Michael,

Hmm, eigentlich sendet es das, was man reintippt. Damit hatte ich noch nie dauerhafte Probleme. Groesseren Aerger gab es lediglich bei virtuellen COM Ports ueber USB, doch damit kamen auch viele alternative Terminal Programme nicht zurande.

--
Gruesse, Joerg

http://www.analogconsultants.com
Reply to
Joerg

Hi Joerg,

So hätte ich das auch erwartet. Aber es ist reproduzierbar nicht so. Die Hardware ist trivial: Oszi an Pin 3, Masse an Pin 5. Keine Brücken für Handshake. Alle anderen Pin's sind offen. Die Schnittstelle ist COM1 auf dem Mainboard, Betriebssystem ist WinXP, mit automatischen Updates, sollte also aktuell sein. Hyperterminal starten, Verbindung einrichten 9600 8N1, no handshake. Dann auf irgendeine Taste drücken und man sieht dass das letzte Datenbit jedes zweite Mal fehlt.

Gruss Michael

Reply to
Michael Koch

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.