Polling mit C++?



  • Hallo,
    bin Einsteiger in C++, normalerweise schreibe ich nur in C für Mikrocontroller. Nun möchte ich ein C++ Programm auf dem PC schreiben, das mit einem Controller über die serielle Schnittstelle kommuniziert. Dazu verwende ich eine Port.dll, die von einem Elektor Mitarbeiter mal geschrieben wurde. Das Senden funktioniert auch soweit.
    Dieses Programm soll aber auch auf Daten, die auf der Schnittstelle eintreffen, warten.
    Wo müsste ich in einem Programm eine Pollingabfrage einbauen, die auf ein ankommendes Zeichen reagiert?
    Hier gibt es ja keine main() Funktion die immer durchlaufen wird.

    Zum Empfang habe ich eine readbyte() Funktion, die bei Überschreiten eines Timeout -1 zurückgibt. (Also, wenn kein Zeichen angekommen ist)

    Ich hoffe ich konnte mein Problem einigermaßen erklären 😉

    MfG
    Thomas



  • hm, ich würde sagen, pack das 'Polling' in einen Thread. Muss permanent auf ankommende Daten geprüft werden, oder nur wenn Du eine Aktion ausgelöst hast?



  • Es muss quasi immer auf ankommende Daten gewartet werden, da der Controller der an der seriellen Schnittstelle hängt die Übertragung startet.

    Wie sähe denn so ein Thread ungefähr aus? (Wenns kurz zu beschreiben ist)

    Thomas



  • Zum Thema Threads sollte sich hier in den FAQs, oder über die Suchfunktion etwas finden lassen. Falls Du dann noch spezifische Fragen hast...



  • Thomas,

    Thomas_v2.1 schrieb:

    Wo müsste ich in einem Programm eine Pollingabfrage einbauen, die auf ein ankommendes Zeichen reagiert?
    Hier gibt es ja keine main() Funktion die immer durchlaufen wird.

    in der "MyProjectName.cpp" findest Du die Funktion "WinMain", die Du für Deine Zwecke verwenden kannst. Threads brauchst Du nur, wenn Du wirklich mit nebenläufigen Prozessen zu hantieren hast. Wenn Dein Progrmm im Grunde also nur aus einem Poller besteht, kommst Du vermutlich auch ohne Threads zum Ziel.



  • dschensky schrieb:

    Wenn Dein Progrmm im Grunde also nur aus einem Poller besteht, kommst Du vermutlich auch ohne Threads zum Ziel.

    Nein! Das würde bedeuten, dass das Polling das ganze UI blockiert!

    -junix



  • junix schrieb:

    dschensky schrieb:

    Wenn Dein Progrmm im Grunde also nur aus einem Poller besteht, kommst Du vermutlich auch ohne Threads zum Ziel.

    Nein! Das würde bedeuten, dass das Polling das ganze UI blockiert!

    Na deswegen ja auch das "nur" ...


Log in to reply