WaitCommEvent-Thread in modalem Dialog

sTEk

Erfahrenes Mitglied
Probleme mit Handle in einem modalen Dialog

edit: Problem eingekreist...

Hallo!

Ich habe dass Problem, dass der Aufruf des WaitCommEvents() in einem modalen Dialog ncht funktioniert.

Das Öffnen der COM-Schnittstelle im modalen Dialog funktioniert noch tadellos, wenn ich allerdings den WaitCommEvent() starte, kommt die Fehlermeldung "Handle ist ungültig. Port: x" (x für den Port, den ich ausgewählt habe)
Das Handle lege ich beim Öffnen des Ports fest, es scheint ja auch soweit richtig zu sein, als dass immerhin der richtige Port übergeben wird.

Hier mal ein paar Codeschnipsel:

Auszüge aus der COM-Klasse
Code:
  //Öffnen der Comschnittstelle, SetMask wird später aufgerufen
  ...
  m_hComm = CreateFile(szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
  ...
  //im CommThread
  ...
  bResult = WaitCommEvent(port->m_hComm, &Event, &port->m_ov);
  ...
  //Aufruf des Message-Threads
  ...
  	if (!(m_Thread = AfxBeginThread(CommThread, this)))
  		return FALSE;
  	TRACE("Thread started\n");
  	return TRUE;
  ...

In der Klasse meines modalen Dialoges habe ich die COM-Klasse mit
Code:
public:
  CSerialPorte m_port;
konstruiert und rufe die Funktionen mit m_port.xxx(); auf.


Die Funktionen in der COM-Klasse klappen jedoch wunderbar, wenn ich sie aus dem Hauptdialog aufrufe...

Kann mir da irgend jemand weiterhelfen?

Ach so, die Klasse zur COM-Kommunikation ist die SerialPort von Remon Spekreijse.

Ach so, die Klasse zur COM-Kommunikation ist die SerialPort von Remon Spekreijse, hab sie mal mit angehangen, da ich nicht mehr weiß, wo ich die mal gefunden hatte. ;)
 

Anhänge

  • SerialPort.zip
    7 KB · Aufrufe: 64
Zuletzt bearbeitet:
Zurück