"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

serielle Schnittstelle unter C++ - WaitCommEvents

Vinci 03.03.2011 - 15:32 1785 0
Posts

Vinci

hatin' on summer
Registered: Jan 2003
Location: Wien
Posts: 5821
Hallo allerseits

Mein 1.Post im include nach 8 Jahren in diesem Forum... :D

Ok, folgendes. Ich plag mich grad mit der Programmierung einer seriellen Schnittstelle unter C++ herum und brauch ein WaitCommEvent um auf die Antwort eines µC zu warten.

Mein Code ist prinzipiell 1:1 von MSDN kopiert:

Code: PHP
while (hComm != INVALID_HANDLE_VALUE) 
{WaitCommEvent (hComm, &dwCommModemStatus, NULL);

  SetCommMask (hComm, EV_RXCHAR);

  Sleep(500);

  if (dwCommModemStatus & EV_RXCHAR) 
  {do 
    {ReadFile (hComm, InBuffer, 1, &BytesRead, NULL);
    } while (BytesRead==1);

SetCommMask für eingehende Daten in den "Buffer"
WaitCommEvent aufgerufen
und die stetige Abfrage, ob was da is...

-> Wieso geht das nicht?

Das Problem is, dass die Schleife endlos läuft und sich mein Programm trotz des "Sleep" komplett aufhängt. Das dürfte aber eigentlich nicht der Fall sein, weil nebenbei ein Timer läuft, der gänzlich andere Dinge tut... (auslesen von Daten, Berechnungen, etc.)

Wieso bleib ich in dieser Schleife hängen?

Der Laptop, auf dem das Programm aktuell läuft hat übrigens "keinen echten" COM-Port. Der Port, den ich hier öffne und bearbeite, ist in Wirklichkeit irgendein integriertes Modem... Aber ich glaub nicht, dass da der Fehler liegt?

Irgendwelche Ideen?

tia
Vinci
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz