<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[COM Port (overlapped)]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich versuche momentan eine asynchrone kommunikation über den COM port zu programmieren. Ich hab mich da mal in der MSDN schlau gemacht und folgendes ist dabei rausgekommen:<br />
(Anmerkung: ich weiß das ist absolut schlechter stil usw. aber es war auch wirklich nur ein &gt;TEST&lt;)</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;process.h&gt;
#include &lt;conio.h&gt;

HANDLE com;

void SendBuf(void *dummy){

	char buf[]=&quot;at\r&quot;;
	DWORD dwWritten;
	OVERLAPPED ov={0};

	while(true){
		printf(&quot;\n*sending data&quot;);
		printf(&quot;--&gt; %i&quot;,WriteFile(com,buf,strlen(buf),&amp;dwWritten,&amp;ov));
		Sleep(1000);

	}

}

int main(void){

	printf(&quot;\nOpening COM8...&quot;);
	com=CreateFile(&quot;COM8&quot;,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
	if(com== INVALID_HANDLE_VALUE){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);

	////////////////////

	DCB dcb={0};
	dcb.DCBlength=sizeof(DCB);

	printf(&quot;\nRetrieving Com settings...&quot;);
	if(!GetCommState(com,&amp;dcb)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);

	////////////////////////

	dcb.BaudRate=CBR_256000;
	dcb.fDtrControl=DTR_CONTROL_ENABLE;
	dcb.fRtsControl=RTS_CONTROL_HANDSHAKE;
	dcb.StopBits=ONESTOPBIT;
	dcb.ByteSize=8;
	dcb.Parity=ODDPARITY;

	printf(&quot;\nTrying to set new settings...&quot;);
	if(!SetCommState(com,&amp;dcb)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);
	//////////////////////

	COMMTIMEOUTS to;

	to.ReadIntervalTimeout=MAXDWORD;
	to.ReadTotalTimeoutMultiplier=0;
	to.ReadTotalTimeoutConstant=0;
	to.WriteTotalTimeoutConstant=0;
	to.WriteTotalTimeoutMultiplier=0;

	printf(&quot;\ntrying to set timeouts...&quot;);
	if(!SetCommTimeouts(com,&amp;to)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);	
	/////////////////////

	// events setzen
	printf(&quot;\ntrying to set EV_TXEMPTY|EV_RXCHAR event...&quot;);
	if(!SetCommMask(com,EV_TXEMPTY|EV_RXCHAR)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);

	_beginthread(SendBuf,0,NULL);

	/////////////////////

	//auf events warten

	while(true){

		//////////////////

		OVERLAPPED ov;
		memset(&amp;ov,0,sizeof(ov));
		ov.hEvent=CreateEvent(NULL,true,false,NULL);
		DWORD dwWait;
		DWORD event;
		GetCommMask(com,&amp;event);

		// event loop
		while(true){

			printf(&quot;\nWaitCommEvent()&quot;);
			// warte auf event
			BOOL ret=WaitCommEvent(com,&amp;event,&amp;ov);
			if(ret==false){

				if(GetLastError()==ERROR_IO_PENDING)
					printf(&quot;\nIO is pending...&quot;);
				else{
					printf(&quot;\nERROR: GetLastError()&quot;);
					_getch();
				}

			}
			// alles ok!
			printf(&quot;\nWaitForSingleObject()&quot;);
			// warte und prüfe auf event
			dwWait=WaitForSingleObject(ov.hEvent,INFINITE);
			switch(dwWait){

			case WAIT_OBJECT_0:

				if (event &amp; EV_TXEMPTY)
					printf(&quot;\n*Data sent&quot;);

				if(event &amp; EV_RXCHAR){
					printf(&quot;\n*Data received&quot;);
					char buf[250]=&quot;&quot;;
					ReadFile(com,buf,250,NULL,&amp;ov);
					printf(&quot;--&gt; %s&quot;,buf);
				}

				ResetEvent (ov.hEvent);
				break;

			}//switch

		}//while 2

	}//while 1

        ////////////////

	_getch();

	CloseHandle(com);	

	return 0;

}
</code></pre>
<p>es scheint auch zu funktionieren. ich werd schön brav informeirt sobald was gesendet und angekommen ist. aber ich wollte nur mal was fragen:<br />
1. Is das generell so in ordnung mit WaitCommEvent und WaitForSingleObject usw?<br />
2. Muss ich mit dem Overlapped struct von ReadFile und WriteFile wirklich weiter nichts machen? einfach nur angeben reicht?<br />
3. Irgendwie gibt WaitCommEvent immer false zurück. und GetLastError() sagt immer IO_PENDING. ist das normal bei einem overlapped port? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Danke für Tips unf fürs durchlesen von dem schei* code. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Mister C</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/109915/com-port-overlapped</link><generator>RSS for Node</generator><lastBuildDate>Fri, 19 Jun 2026 02:10:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/109915.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 May 2005 13:50:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to COM Port (overlapped) on Sun, 15 May 2005 13:50:27 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich versuche momentan eine asynchrone kommunikation über den COM port zu programmieren. Ich hab mich da mal in der MSDN schlau gemacht und folgendes ist dabei rausgekommen:<br />
(Anmerkung: ich weiß das ist absolut schlechter stil usw. aber es war auch wirklich nur ein &gt;TEST&lt;)</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;process.h&gt;
#include &lt;conio.h&gt;

HANDLE com;

void SendBuf(void *dummy){

	char buf[]=&quot;at\r&quot;;
	DWORD dwWritten;
	OVERLAPPED ov={0};

	while(true){
		printf(&quot;\n*sending data&quot;);
		printf(&quot;--&gt; %i&quot;,WriteFile(com,buf,strlen(buf),&amp;dwWritten,&amp;ov));
		Sleep(1000);

	}

}

int main(void){

	printf(&quot;\nOpening COM8...&quot;);
	com=CreateFile(&quot;COM8&quot;,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
	if(com== INVALID_HANDLE_VALUE){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);

	////////////////////

	DCB dcb={0};
	dcb.DCBlength=sizeof(DCB);

	printf(&quot;\nRetrieving Com settings...&quot;);
	if(!GetCommState(com,&amp;dcb)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);

	////////////////////////

	dcb.BaudRate=CBR_256000;
	dcb.fDtrControl=DTR_CONTROL_ENABLE;
	dcb.fRtsControl=RTS_CONTROL_HANDSHAKE;
	dcb.StopBits=ONESTOPBIT;
	dcb.ByteSize=8;
	dcb.Parity=ODDPARITY;

	printf(&quot;\nTrying to set new settings...&quot;);
	if(!SetCommState(com,&amp;dcb)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);
	//////////////////////

	COMMTIMEOUTS to;

	to.ReadIntervalTimeout=MAXDWORD;
	to.ReadTotalTimeoutMultiplier=0;
	to.ReadTotalTimeoutConstant=0;
	to.WriteTotalTimeoutConstant=0;
	to.WriteTotalTimeoutMultiplier=0;

	printf(&quot;\ntrying to set timeouts...&quot;);
	if(!SetCommTimeouts(com,&amp;to)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);	
	/////////////////////

	// events setzen
	printf(&quot;\ntrying to set EV_TXEMPTY|EV_RXCHAR event...&quot;);
	if(!SetCommMask(com,EV_TXEMPTY|EV_RXCHAR)){
		printf(&quot;failed!&quot;);
		_getch();
	}
	printf(&quot;OK!&quot;);

	_beginthread(SendBuf,0,NULL);

	/////////////////////

	//auf events warten

	while(true){

		//////////////////

		OVERLAPPED ov;
		memset(&amp;ov,0,sizeof(ov));
		ov.hEvent=CreateEvent(NULL,true,false,NULL);
		DWORD dwWait;
		DWORD event;
		GetCommMask(com,&amp;event);

		// event loop
		while(true){

			printf(&quot;\nWaitCommEvent()&quot;);
			// warte auf event
			BOOL ret=WaitCommEvent(com,&amp;event,&amp;ov);
			if(ret==false){

				if(GetLastError()==ERROR_IO_PENDING)
					printf(&quot;\nIO is pending...&quot;);
				else{
					printf(&quot;\nERROR: GetLastError()&quot;);
					_getch();
				}

			}
			// alles ok!
			printf(&quot;\nWaitForSingleObject()&quot;);
			// warte und prüfe auf event
			dwWait=WaitForSingleObject(ov.hEvent,INFINITE);
			switch(dwWait){

			case WAIT_OBJECT_0:

				if (event &amp; EV_TXEMPTY)
					printf(&quot;\n*Data sent&quot;);

				if(event &amp; EV_RXCHAR){
					printf(&quot;\n*Data received&quot;);
					char buf[250]=&quot;&quot;;
					ReadFile(com,buf,250,NULL,&amp;ov);
					printf(&quot;--&gt; %s&quot;,buf);
				}

				ResetEvent (ov.hEvent);
				break;

			}//switch

		}//while 2

	}//while 1

        ////////////////

	_getch();

	CloseHandle(com);	

	return 0;

}
</code></pre>
<p>es scheint auch zu funktionieren. ich werd schön brav informeirt sobald was gesendet und angekommen ist. aber ich wollte nur mal was fragen:<br />
1. Is das generell so in ordnung mit WaitCommEvent und WaitForSingleObject usw?<br />
2. Muss ich mit dem Overlapped struct von ReadFile und WriteFile wirklich weiter nichts machen? einfach nur angeben reicht?<br />
3. Irgendwie gibt WaitCommEvent immer false zurück. und GetLastError() sagt immer IO_PENDING. ist das normal bei einem overlapped port? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Danke für Tips unf fürs durchlesen von dem schei* code. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Mister C</p>
]]></description><link>https://www.c-plusplus.net/forum/post/789028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/789028</guid><dc:creator><![CDATA[Mister C]]></dc:creator><pubDate>Sun, 15 May 2005 13:50:27 GMT</pubDate></item><item><title><![CDATA[Reply to COM Port (overlapped) on Tue, 17 May 2005 15:01:10 GMT]]></title><description><![CDATA[<p>Kennt sich damit denn niemand bisschen aus? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/790218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/790218</guid><dc:creator><![CDATA[Mister C]]></dc:creator><pubDate>Tue, 17 May 2005 15:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to COM Port (overlapped) on Tue, 17 May 2005 21:39:49 GMT]]></title><description><![CDATA[<p>Hmm, scheinbar ist wohl momentan keiner da, der was mit dem COM-Port gefuckelt hat oder fuckelt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";D"
      alt="😉"
    /></p>
<p>Falls Du den noch nich kennst könnte aber evtl. der Artikel von Microsoft zum Thema nützlich sein:<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/790269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/790269</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Tue, 17 May 2005 21:39:49 GMT</pubDate></item><item><title><![CDATA[Reply to COM Port (overlapped) on Wed, 18 May 2005 06:20:33 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Versuche auch gerade eine serielle Kommunikation hinzukriegen, siehe</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-109690.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-109690.html</a></p>
<p>Ich möchte in einem Thread auf ein Signal eines seriellen Gerätes warten. Zusätzlich brauche ich noch eine Möglichkeit den Thread zu steuern (suspend, resume und terminate). D.h. ich verwende WaitForMultipleObjects statt WaitForSingleObject.<br />
Habe zwar auch noch nicht viel Erfahrung damit, hab es aber mit flenders Tips beinahe hinbekommen. Das einzige Problem, das ich jetzt noch habe ist, dass WaitCommEvent immer false (mit Errorcode ERROR_INVALID_PARAMETER) liefert, sobald der Thread einmal unterbrochen und dann wieder aufgeweckt wird. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Nun Deinen Fragen (wie gesagt, ich bin kein Profi auf dem Gebiet, habe mich aber in letzter Zeit etwas damit beschäftigt):</p>
<p>(1) Ja, ich denke so sollte man das machen.<br />
(2) Ja, das sollte reichen.<br />
(3) Bei asynchroner Kommunikation kehrt WaitCommEvent sofort wieder zurück. Wenn also beim Aufruf nicht sofort eines Deiner Events (z.b. EV_RXCHAR) eintrifft, dann kehrt WaitCommEvent zwar auch zurück, wartet aber weiterhin auf ein Ereignis des seriellen Ports. In diesem Fall kriegst Du false mit dem Errorcode IO_PENDING zurück. Das ist also eigentlich der Normalfall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/790334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/790334</guid><dc:creator><![CDATA[_Gast_]]></dc:creator><pubDate>Wed, 18 May 2005 06:20:33 GMT</pubDate></item><item><title><![CDATA[Reply to COM Port (overlapped) on Wed, 18 May 2005 09:32:59 GMT]]></title><description><![CDATA[<p>OK danke! Ihr habt mir geholfen. Wenn noch jemand anmerkungen oder tips hat soll er se rhig schreiben. Bin für alles dankbar. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15778">@gast</a>: wieso unterbrichst du denn den thread? Du kannst ihn doch dei ganze zeit laufen lassen und eben mit WaitForSingleObject warten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/790486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/790486</guid><dc:creator><![CDATA[Miser C]]></dc:creator><pubDate>Wed, 18 May 2005 09:32:59 GMT</pubDate></item><item><title><![CDATA[Reply to COM Port (overlapped) on Wed, 18 May 2005 09:37:01 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15778">@gast</a>: wegen dem ERROR_INVALID_PARAMETER: du musst ja auch erstmal Mit mit SetCommMask die events setzen, von denen du benachrichtigt werden willst. Und mit GetCOmmMask dass dann in ein DWORD reinpacken udn den pointer an WaitCommEvent geben... so wie bei mir oben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/790494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/790494</guid><dc:creator><![CDATA[Mister C]]></dc:creator><pubDate>Wed, 18 May 2005 09:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to COM Port (overlapped) on Wed, 18 May 2005 11:35:21 GMT]]></title><description><![CDATA[<p>Hallo Mister C,</p>
<p>ich habe SetCommMask verwendet, um das Event zu setzen (sieht man aber nicht in meinem Thread, da ich die Initialisierung weggelassen habe :D).<br />
Du brauchst in Deinem Code das GetCommMask übrigens auch nicht, weil der Event-Parameter in WaitCommEvent ein &quot;out&quot;-Parameter ist. D.h. WaitCommEvent liefert Dir in diesem Parameter den Typ des Ereignisses das aufgetreten ist, damit Du, falls Du mit SetCommMask mehrere Ereignisse gesetzt hast, hinterher feststellen kannst, welches dieser Ereignisse aufgetreten ist.</p>
<p>Den Thread möchte ich unterbrechen, weil ich im wesentlichen 2 Arten der Kommunikation mit der Schnittstelle habe. Erstens das Warten auf einen bestimmten Befehl im Hintergrund und zweitens einige Write/Read - Kommandos (die sozusagen zusammengehören) und ausgeführt werden, sobald der Befehl empfangen wurde. Für die Dauer dieser Write/Read Blöcke möchte ich den im Hintergrund lauschenden Thread gerne &quot;schlafen legen&quot;, damit er mir nicht in die Quere kommt.</p>
<p>Mein Code sieht jetzt übrigens so aus:</p>
<p>Initialisierung im Hauptprogramm:</p>
<pre><code>hComm = CreateFile(&quot;COM1&quot;, GENERIC_READ |GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

if (hComm == INVALID_HANDLE_VALUE) return false;

DCB dcb;

if (!GetCommState(hComm, &amp;dcb))return false;

dcb.BaudRate = CBR_4800;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;

if (!SetCommState(hComm, &amp;dcb)) return false;
</code></pre>
<p>Der Handle hComm wird danach an den Konstruktor des Threads übergeben. Dort wird dann auch die OVERLAPPED-Struktur initialisiert und die Events kreiert, die ich zum Unterbrechen und Terminieren des Threads brauche:</p>
<pre><code>this-&gt;hComm = hComm;

if ( !SetCommMask(hComm, EV_RXCHAR) )
{
        ShowMessage(&quot;Thread: SetCommMask failed!\nTerminating...&quot;);
        Terminate();
}

memset(&amp;ov, 0, sizeof(ov));
ov.hEvent = CreateEvent(NULL, true, false, NULL);
eventHandles[0] = ov.hEvent;                            // Serial com event
eventHandles[1] = CreateEvent(NULL, true, false, NULL); // Terminate event
eventHandles[2] = CreateEvent(NULL, true, false, NULL); // Suspend event
</code></pre>
<p>Die Execute-Methode des Threads sieht jetzt so aus:</p>
<pre><code>void __fastcall SerialReader::Execute()
{
    DWORD event;
    bool wceRet;
    DWORD wfmoRet;

    while (!Terminated)
    {
        wceRet = WaitCommEvent(hComm, &amp;event, &amp;ov);
        if ( wceRet || (!wceRet &amp;&amp; GetLastError() == ERROR_IO_PENDING) )
        {

            wfmoRet = WaitForMultipleObjects(3, eventHandles, false, INFINITE);

            switch (wfmoRet)
            {
                case WAIT_OBJECT_0:
                    msg = &quot;Received some data&quot;;
                    Synchronize(DisplayMessage);
                    ResetEvent(ov.hEvent);
                    Sleep(1000);
                    break;
                case WAIT_OBJECT_0 + 1:
                    ResetEvent(eventHandles[1]);
                    Terminate();
                    break;
                case WAIT_OBJECT_0 + 2:
                    msg = &quot;Suspend SerialReader&quot;;
                    Synchronize(DisplayMessage);
                    ResetEvent(eventHandles[2]);
                    Suspend();
                    PurgeComm(hComm, PURGE_RXABORT);
                    PurgeComm(hComm, PURGE_RXCLEAR);
                    break;
                default:
                    msg = &quot;WaitForMultipleResults Error &quot; + GetLastError();
                    Synchronize(DisplayMessage);
                    Sleep(1000);
                    break;
            }
        }
        else
        {
            msg = &quot;WaitCommEventError: &quot; + AnsiString(GetLastError());
            Synchronize(DisplayMessage);
            Sleep(1000);
        }
    }
}
</code></pre>
<p>Um den Thread von aussen zu unterbrechen bzw. zu terminieren, hat das Thread-Objekt noch zwei public Methoden, die die entsprechenden Events setzen:</p>
<pre><code>void SerialReader::TerminateSerialReader()
{
    SetEvent(eventHandles[1]);
}

void SerialReader::SuspendSerialReader()
{
    SetEvent(eventHandles[2]);
}
</code></pre>
<p>P.S.:<br />
Bin für alle Kommentare dankbar, die helfen könnten, meine Probleme mit dem Suspendieren des Threads zu lösen ;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/790608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/790608</guid><dc:creator><![CDATA[_Gast_]]></dc:creator><pubDate>Wed, 18 May 2005 11:35:21 GMT</pubDate></item><item><title><![CDATA[Reply to COM Port (overlapped) on Wed, 18 May 2005 15:16:09 GMT]]></title><description><![CDATA[<p>hm... setz vllt lieber ne globale bool variable auf true oder so und des prüfst du dann auch noch vorher. und solange die eben true is macht der thread nix mitden sachen die ankommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/790878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/790878</guid><dc:creator><![CDATA[Mister C]]></dc:creator><pubDate>Wed, 18 May 2005 15:16:09 GMT</pubDate></item></channel></rss>