Auf Ereignis reagieren



  • Hallo,

    Ich bin grade erst bei C++ neu eingestiegen, und programmiere sonst nur in PHP.

    Ich hab mir nun im C++ Builder eine neue VCL-Anwendung erstellt und möchte dort nun Daten per USB empfangen. Empfangen kann ich mit der Funktion "FT_Read()". Als Consolen-Anwendung war das soweit kein Problem, einfach innerhalb einer while() Schleife immer checken ob etwas zurück gegeben wird und dann entsprechend verarbeiten. Mein Problem nun, wie realisiert man so etwas in einer VCL-Anwendung? Es soll also kontinuierlich überprüft werden ob FT_Read() etwas zurück gibt, und wenn das der Fall ist soll eine entsprechende Funktion aufgerufen werden die die Daten dann weiter verarbeitet. Das ganze natürlich ohne die weitere Anwendung zu blockieren.

    Ich hoffe mein Problem ist halbwegs deutlich geworden und ihr könnt mir weiterhelfen.

    Danke schon mal im voraus!



  • Wenn du es wirklich kontinuierlich haben willst, brauchst du einen Extra Thread. Wenn es dir allerdings alle 100ms oder so reicht, kannst du einfach einen Timer nehmen. Such mal nach der TTimer Komponente. Da kannst du eine Zeit einstellen (in ms, allerdings bezweifle ich das Zeiten im Bereich von 10ms noch richtig funktionieren) und immer wenn diese "abgelaufen" ist, wird der Timer aufgerufen. Da kannst du dann dein FT_read() reinpacken.



  • Ich würde mal im Win-API-Forum nachfragen, ob dieses FT_Read() mit einem WaitForSingleObject() verwendbar ist. Dann könntest Du in einem Thread auf das Ereignis warten. Das hätte noch den Vorteil, dass keine unnöige CPU-Zeit verbraten wird, wie es beim Pollen der Fall ist.


Log in to reply