mahlzeit, ich habe mal eine frage zum versenden von daten über die RS232 unter der WINAPI, speziel TIMEOUTS comTimeOut.WriteTotalTimeoutMultiplier = 0; comTimeOut.WriteTotalTimeoutConstant = 0; Vorwort: ich versende über die RS232 3 Daten in Paketform outputData[0] = 0x02; outputData[1] = 0x01; outputData[2] = 0x05; das versenden klappt ohne weitere probs. doch der uC der mit den daten arbeiten soll ist anscheined zulangsam. (empfängt daten nur teileweise und auch falsch). wenn ich die daten einzeln hintereinander sende, klapps 1a. ich habe nun versucht über die Timeouts das senden zu handeln. aber egal wie ich die Timeouts setze, es passiert nichts. Wunsch: versetztes senden der daten -- IM PAKETFORM (mehrfaches senden ist nicht erwünscht) 1. Was sagen die Timeouts? die msdn doku macht mich nicht schlauer? 2.grundsätzlich sage ich mir, das ich die "Sendegeschwindigkeit" mit der baudrate festsetze. also wenn überhaupt, muss ich dies auf seite des uC abfangen, richtig? Hat denn einer eine idee? Danke!
Wenn du die Daten schneller schickst, als dein µC diese verarbeiten kann, helfen dir Timeouts nicht weiter. Du musst die Sendegeschwindigkeit drosseln! Entweder hardcodiert mit Wartezeiten zwischen den Bytes, oder als Handshake (z.B. RTS/CTS), damit der µC "STOP" schreien kann, wenn seine Buffer am überlaufen sind.
hey Ernst, danke für die Antwort. Der Handshake wäre dann eine Möglichlkeit, wohl war. Aber mich interressiert nun noch, was die Timeouts machen würden? Denn irgentwie zeigen diese keine Funktion. comTimeOut.WriteTotalTimeoutMultiplier = 0; comTimeOut.WriteTotalTimeoutConstant = 0; Gruss
Sorry, ich programmiere nicht für Windows, solange ich das irgendwie vermeiden kann. Der Rest ist also geraten. Üblicherweise bestimmt man mit Timeouts, wie lange eine Operation versucht werden soll, bevor mit einem Fehler abgebrochen wird. In deinem Fall: wie lange Windows auf ein Clear-To-Send auf der RS232 wartet. Wenn du garkein Flow-Control verwendest, wartet er nie auf CTS, und der Timeout beeinflusst folglich auch nichts.
Hallo Ernst, manchmal steht man doch echt auf dem Schlauch. Die CTS - Leitung (bzw. Flow_Control) habe ich total vergessen. Nutze ich nämlich nicht (Kommunikation zwischen PC und uC). Und ja die Vorteile anderer Betriebssysteme kenne ich auch. ;-) Gruss aus Berlin (alias Jack)
Christian Koop wrote:
> Und ja die Vorteile anderer Betriebssysteme kenne ich auch. ;-)
Das hat nichts mit anderen Betriebssystemen zu tun.
Dort wärs genau das gleiche. Ein Timeout auf einer Sendeeinrichtung ist
dann wirkungslos, wenn die Einrichtung von der Gegenstelle nicht
angehalten werden kann.
Kein Handshake -> prinzipiell kein Timeout möglich.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.