Forum: PC-Programmierung Windows CE, Serielle Schnitstelle, TIMEOUTs


von Johannes P. (hdcdst)


Lesenswert?

Zuerst einmal hallo an die Foreums Gemeinde, weil dies mein erster 
Beitrag ist.

Ich programmiere auf einem ARM Pannel PC unter Windows CE 5.0. Mein 
Programm muss über die serielle Schnittstelle mit einer Hardware 
kommunizieren, welche alle 25 milli sekunden ein Paket von 11 Bytes mit 
einer übertragungsrate von 9600 baud versendet.
Es geht darum, mich mit dem externen Hardwaremodul zu synchronisieren, 
und auch übertraguns fehler festzustellen.

Die Lösung, welche ich zunächst gefunden habe besteht den Timeout 
feature des windows ce Com-Api's zu verwenden.

Also ich setzte ReadTotalTimeoutConstant auf 30, ReadIntervalTimeout auf 
5 und ReadTotalTimeoutMultiplier auf 0.

Zunächst funktionier mit diesen Werten alles recht einwandfrei, aber 
wenn ich zB. ReadTotalTimeoutConstant auf 70 setze bekomme ich immer 
wieder Timeout-fehler (ReadFile gibt weniger als 11 Bytes als empfangen 
zurück).

Ich habe mich etwas mit den Werten gespielt, und zB. 
ReadTotalTimeoutConstant auf 75 und ReadIntervalTimeout auf 25 gesetzt 
funktionier zum Beispiel wieder.

Zunächst könnte ich mich mit der Tatsache, dass die 30/5 kombination 
welche ich als erstes angegeben habe einwandfrei zu funktionieren 
scheint, zufrieden geben, es kann aber dennoch sein, dass in Zukunft das 
Protokoll geändert wird, und die 30/5 kombination nichtmehr angebracht 
ist, und mir kommt es einfach seltsam vor, dass es bei größeren 
Timeoutwerten nicht funktioniert.

Ich habe jetzt schon längere Zeit im Internet gesucht, aber ich habe 
noch keinerlei angaben gefunden, dass jemand das gleiche, oder ein 
ähnliches Problem gehabt hätte.
Ist vieleicht hier igendjemandem bekannt, ob gewisse kombinationen von 
Timeoutwerten und übertragungsraten und zu lesenden Byte angaben 
problematisch ist.

vielen Dank im Voraus für etwaige Antworten.

mfg.
HdcDst.

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.