www.mikrocontroller.net

Forum: PC-Programmierung rs232 win xp mit interrupt


Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe nun endliches geschaft die serielle schnittstelle
unter win xp zu programmieren... writefile readfile .......

Das WriteFile funktioniert super.
ReadFile auch aber leider kann man dann immer nur ein Zeichen
lesen und vor allem wird auch noch unnötig gewartet.

Wie macht man das denn das ein Interrupt (wie bei einm µC) ausgelöst
wird und mein C++ Programm in ein ISR springt und dann das zeichen
empfängt. Geht das überhaupt auf einem PC?
Oder muss man das irgendwie anderes machen?

Am liebsten wäre es mir ja wenn es geht wie bei einem Atmel z.B.
Wenn ein Zeichen empfangen wurde das dann ein int ausgelöst wird und
mein Programm in eine ISR springt.

Kennt jemand ein Lösung?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf dem PC wird unter Windows die serielle Schnittstelle bereits mit
einem Interrupthandler angesteuert - der steckt im Devicetreiber, wo er
unter einem Betriebssystem auch hingehört.

Für Dein Problem bieten sich verschiedene Lösungsansätze an; Du
könntest die Behandlung der seriellen Schnittstelle in einen eigenen
Thread packen, Du könntest auf ein "communications event" warten und
erst dann ReadFile aufrufen ...

Das Thema "Programmierung der seriellen Schnittstelle unter Windows"
wurde hier ja schon ad nauseam behandelt, da sollte sich auch der eine
oder andere Beispielcode finden.

Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus

Ok das waren jetzt schon mal gute infos.
Ich bin blutiger anfänger was Windows Programmierung angeht.

Ist "communications event" die ofizielle bezeichnung dafür.
Dann werde ich mal danach googlen

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SetCommMask ist eine der für "communication events" zuständigen
Funktionen. Damit kann nicht nur der Empfang bzw. das Versenden von
Zeichen ein Ereignis auslösen (EV_RXCHAR, EV_TXEMPTY), sondern auch das
Wackeln an Handshakeleitungen (EV_CTS, EV_RLSD - steht für DCD, EV_RING
etc.).

Mit WaitCommEvent kann auf eines dieser Ereignisse gewartet werden, und
das kann wiederum auch mit "overlapped I/O" erfolgen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.