COM Port auslesen und in Echtzeit anzeigen



  • Hallo!

    Bin ziemlich neu in der Windows Programmierung. Stehe jetzt seit Tagen vor ein Problem und weiß nicht mehr weiter. Hoffe hier im Forum kann mir weiter geholfen werden.

    Die Aufgabenstellung:

    Von einem COM Port soll 1000 x pro Sekunde 4 x 8Bit Werte ausgelesen werden. Jedes 10te Mal sollen die gerade ausgelesenen 8Bit Werte auf dem Bildschirm dargestellt werden, so das Stück für Stück eine Kurve entsteht. Dieses soll in Echtzeit passieren.

    Habe unter anderem versucht das Problem mit WM_TIMER zu lösen und Kurve dann jedes Mal mit MoveToEx()+LineTo auf dem Bildschirm aus zu geben. Leider ist das viel zu langsam.

    Hat jemand für mich mal einen Gedankenanstoß zur Lösung dieses Problems?



  • Wo hapert's denn jetzt konkret? Daran, dass es langsam ist? Im Prinzip ist alles programmiert? Arbeitest du mit Backbuffern? Lässt du beides synchron laufen? Denn du könntest ja einen Thread machen, der die Daten vom COM-Port sammelt und in einen Puffer schiebt, der Anzeigethread liest die Daten aus und zeigt sie an - so kann er jedenfalls nicht das Lesen blockieren.



  • Eigentlich ist nur die Darstellung zu langsam. Habe versucht den Timer auf 1 msec zu stellen und jedes Mal eine Linie zu zeichnen. Leider braucht die Kurve dann ca. 12 sec um am anderen Bildschirmrand an zu kommen. Was bei einer Bildschirmauflösung von 1024 Pixel ja bedeuten würde das ca. 85 msec für das zeichnen von einer Line benötigt wird.



  • Du kannst dir mit CreateCompatibleDC und CreateCompatibleBitmap einen "Offline"-DC anlegen, in den du die Linien reinzeichnest. Wenn das Bild auf den Bildschirm soll, blittest (BitBlt) du es dahin. Das sollte um einiges schneller sein.



  • Dann würde ich die Kurve doch aber nicht mehr in Echtzeit angezeit bekommen?!?
    Habe am COM Port eine Drucksensor und möchte natürlich im Moment der Druckänderung die Kurve gezeit bekommen.



  • deepdiver99 schrieb:

    Dann würde ich die Kurve doch aber nicht mehr in Echtzeit angezeit bekommen?!?

    Doch, doch. Google mal nach "Backbuffer DC" oder so.



  • Ich schaue mal nach und würde mich dann wieder melden bei Fragen. Vielen Dank schon mal.


Anmelden zum Antworten