serielle Schnittstelle, prinzipielle Vorgehensweise



  • Hallo.

    Zur Zeit muss ich mich mit der Programmierung der seriellen Schnittstelle befassen. Das diese unter VC wie eine Datei behandelt werden kann ist mir soweit klar. Ebenso das es im Netz bereits Klassen für das einfache Handling gibt.
    Meine Frage richtet sich nach der prinzipiellen Vorgehensweise. Gibt es Nachrichten vom System, die signalisieren, dass gerade Daten am Port anliegen oder muss ich in regelmäßigen Abständen das Anliegen von Daten abfragen (Polling)?

    Vielen Dank vorab...



  • Polling ist prinzipiell ganz schlecht, somit macht man dies auch nicht.
    Wenn Du Dir mal die fertigen Klassen angeschaut hättest, dann wäre diese Frage auch gar nicht aufgekommen...
    http://www.codeproject.com/system/serial.asp



  • Jochen Kalmbach schrieb:

    Polling ist prinzipiell ganz schlecht, somit macht man dies auch nicht.
    Wenn Du Dir mal die fertigen Klassen angeschaut hättest, dann wäre diese Frage auch gar nicht aufgekommen...
    http://www.codeproject.com/system/serial.asp

    Hallo Jochen,

    genau dieses Beispiel kenne ich. Wenn ich mir das aber richtig anschaue, so sieht das verdammt nach WinAPI aus. Meine Frage zielte eher dahin gehend ab: Gibt es eine Windowsnachricht WM_irgendwas, die beim Anliegen von Daten abgschickt wird und die ich gesondert abarbeiten kann?
    Die zweite Sache ist das Polling. Ich kenn mich leider noch nicht so mit der seriellen Schnittstelle aus (sonst würde ich ja nicht fragen). Aus meiner Erfahrung mit Mikrocontrollern ist mir noch in Erinnerung, dass ich mich beim Polling um die Synchronisation selbst kümmern muss. Die Sache mit der Windowsnachricht (wäre ja hier quasi als interuptgesteuert zu sehen) schien mir da wesentlich einfacher. Ich hab da auch schon mal irgendwas drüber gelesen (möglicherweise sogar in der MSDN) aber ich finde das nicht mehr.



  • Du brauchst nun mal die WinAPI um mit der seriellen Schnittstelle zu kommunizieren...
    In dem Link ist ein Beispiel drin, wie eine Message geschjickt wird, wenn ein ereignis eintraf: Schau Dir mal SerialWnd.cpp/h an (bzw. das ganze dann mit MFC: SerialMFC.cpp/h).


Anmelden zum Antworten