Probleme mit COM Port
-
Hallo,
ich plage mich momentan ziemlich mit der seriellen Schnittstelle herum, hier mein Problem:Ich habe ein Messgerät, welches über die parallele Schnittstelle mit meinem Computer kommuniziert. Ein Programm liest nun so erhaltene Messwerte aus und zeigt mir ein Messresultat am Computerbildschirm an. Dieses Messergebnis benötige ich allerdings für eigene Berechnungen. Genau für diesen Zweck kann dieses Programm das Messresultat über den COM Port ausgeben. Dabei schreibt es bei jedem Messcycle zehn Bytes.
Leider ist das Programm ziemlich alt und verwendet nicht die winapi zum Schreiben auf den COM Port, sondern schreibt einfach alles direkt wahrscheinlich über Assembler in den COM-Port.
Auf jeden Fall weiß ich, dass das Programm auf den COM Port zugreift, weil ich einen Fehler gemeldet bekomme, wenn ich gleichzeitig mit einem Hyperterminal auf den Port schreiben will. Ich schaffe es aber nicht die Daten auszulesen, wenn ich den COM Port mit einem seriellen Kabel mit einem anderen Com-Port verbinde und letzteren Auslesen will - Mit einem Hyperterminal klappt das problemlos. Die Baud-Rate und sonstige Einstellungen für die COM-Ports sollten stimmen.Habt Ihr eine Idee an was es liegen könnte? Ich erhalte leider immer nur Timeouts, wenn ich den zweiten COM-Port auslesen will...
-
Erklär nochmal genau.
Du hast eine Anwendung die Daten auf den COM Port schreibt.
Du weisst dass der COM Port definitiv von dem Programm benutzt wird, da du ihn nicht selber aufmachen kannst wenn das Programm läuft.
Wenn du dich mit Hyperterminal von diesem Rechner mit dem COM Port verbindest, dann funktioniert alles einwandfrei. Wenn du aber den COM Port mit einem anderen Rechner verbindest, bekommst du keine Daten.
Ist das soweit korrekt?
Wir hängen in solchen Fällen einen Spion zwischen die beiden COM Ports. zB elektronisch der einfach alle Daten aufzeichnet oder aber Analog mit eingelöteten LEDs die den Stromfluss zeigen.
Ich nehme mal an, dass du das Kabel auch schon als Fehlerquelle ausgeschlossen hast. Was wir aber letzten bei einem Kunden hatten war, dass der eine COM Port mit einer gewissen Baudrate nicht klar kam. Haben dann einfach COM Port gewechselt und es lief einwandfrei (ohne was ander Konfiguration zu ändern). Obwohl beide COM Ports auf der selben PCI Karte waren...
Was bei uns manchmal auch ein Problem ist, ist der Hardware Buffer. Wenn der zu Hoch steht dauert es ewig bis die ersten Daten gesendet werden - gerade wenn du sagst dass ein Zyklus nur 10 Byte sind.
-
Hallo !
Danke für die schnelle Antwort, mein Problem hast du richtig verstanden. An der Baudrate liegt es leider nicht, wie könnte ich aber das mit dem Hardware Buffer ändern (muss winxp benützen)?
Könnte ich mit einem oszi messen ob Daten gesendet werden, Oder kann ich so etwas kaputt machen?
Im Manual des messprogramms steht außerdem, dass das stoppbit ein LF ist (013h ASCII Code, wenn ich's richtig im Kopf habe) könnte hier eventuell ein Problem liegen?
Oder weißt du vielleicht sonst noch irgendwelche Fehlerquellen? Vielleicht etwas das ein Programm das "direkt" auf den COM Port schreibt anderst machen als Programme die winapi benützen?