Echtzeitberechnung



  • Hallo,
    habe eine Berechnung, welche im 1Hz Takt gemacht werden soll! Nun benötigt diese Berechnung Daten von COM1/COM2 und soll erst dann die Berechnung durchführen, wenn alle Daten da sind! Wollte dies eigentlich mit einem FLAG machen und damit die 'do while' Schleife steuern, nur frisst das ziemlich viel Performance, wenn der andauernd prüft, ob das FLAG schon gesetzt ist!

    Wie kann man das besser machen?

    Besten Dank!

    Gruß
    daMike



  • Wenn Deine Daten immer gleich lang sind, kannst du z.B die ReadTotalTimeoutConstant auf INFINITE setzten und ReadFile in einem eigenem Thread aufrufen, nach Beendigung von ReadFile nur noch eine Nachricht an den HauptThread schicken.



  • Datengröße 100 < x < 200 Byte ... kann ich mit einem eingenen Thread das Auslesen soweit priorisieren, dass immer zuerst die ankommenden Daten verarbeitet werden und dann erst die eigentliche Berechnung angestoßen wird?

    Was passiert, wenn die Berechnung am Laufen ist und Daten ankommen? Wird diese zuerst fertig berechnet oder angehalten?



  • Eigentlich ist Windows ja ein Multi-Threading OS und somit musst Du Dich um solche Sachen keine grossen Gedanken machen.
    Der serielle Treiber hat auch intern einen Puffer, wo er die Daten ablegt... dieser sollte für Deine Anwendung vollkommen ausreichen (ist AFAIK bei 2KB).

    Somit verstehe ich Deine Frage nicht ganz...
    PS: Verwende eine fertige Klassen für die serielle Kommunikation:
    http://www.codeproject.com/system/serial.asp



  • Verwende ich bereits, nur funktioniert bei mir die Flusskontrolle nicht .. Buffergröße habe ich schon vergrößert .. ohne merkliche Änderung! Die Parameter werden alle korrekt gesetzt für RTS/CTS! Sobald ich meine Berechnung starte und neue Daten kommen ist bei einer Updaterate von >0.5 Hz Schluss, d.h. System ist zu 100% ausgelastet und die Identifizierung der Message schlägt fehl! Die OEM Board Software läuft mit RTS/CTS prima .. somit kann man Kabelprobleme wohl ausschließen!

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-143761-and-highlight-is-damike.htmlhttp://www.c-plusplus.net/forum/viewtopic-var-t-is-143761-and-highlight-is-damike.html


Anmelden zum Antworten