<?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[WaitCommEvent wartet nicht]]></title><description><![CDATA[<p>Es geht um ein Stück Software, mit dem wir unter Windows (2000 und NT) über Rs232 (Serial Port) kommuniziert haben. Das funktionierte bisher einwandfrei.<br />
Der grobe Ablauf ist:</p>
<pre><code class="language-cpp">HANDLE h = CreateFile( &quot;COM2&quot;, .. // ohne Overlapped IO
// diverse Konfiguration
SetCommMask( h, EV_RXCHAR | EV_RLSD );
for(;;)
{
    DWORD event;
    WaitCommEvent( h, &amp;event, 0 );
    switch( event )
    {
    case EV_RXCHAR:
        ReadFile( h, ..
        // Auswertung des Inputs
        break;
    ..
}
</code></pre>
<p>bisher blieb das Programm auch brav bei WaitCommEvents hängen, bis die Bytes reinkamen. Jetzt läuft das identische Programm - mit der identischen Konfiguration - unter Windows XP und das Programm läuft sofort in den case EV_RXCHAR rein und liest 0 Byte .. !?</p>
<p>Weiß jemand, ob WaitCommEvents unter XP ein anderes Verhalten hat als unter NT bzw. 2000?</p>
<p>Für Infos, Links zum Thema oder Tipps, wie man es unter XP anders machen sollte wäre ich dankbar.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155760/waitcommevent-wartet-nicht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 16:45:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155760.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Aug 2006 11:11:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WaitCommEvent wartet nicht on Wed, 09 Aug 2006 11:15:02 GMT]]></title><description><![CDATA[<p>Es geht um ein Stück Software, mit dem wir unter Windows (2000 und NT) über Rs232 (Serial Port) kommuniziert haben. Das funktionierte bisher einwandfrei.<br />
Der grobe Ablauf ist:</p>
<pre><code class="language-cpp">HANDLE h = CreateFile( &quot;COM2&quot;, .. // ohne Overlapped IO
// diverse Konfiguration
SetCommMask( h, EV_RXCHAR | EV_RLSD );
for(;;)
{
    DWORD event;
    WaitCommEvent( h, &amp;event, 0 );
    switch( event )
    {
    case EV_RXCHAR:
        ReadFile( h, ..
        // Auswertung des Inputs
        break;
    ..
}
</code></pre>
<p>bisher blieb das Programm auch brav bei WaitCommEvents hängen, bis die Bytes reinkamen. Jetzt läuft das identische Programm - mit der identischen Konfiguration - unter Windows XP und das Programm läuft sofort in den case EV_RXCHAR rein und liest 0 Byte .. !?</p>
<p>Weiß jemand, ob WaitCommEvents unter XP ein anderes Verhalten hat als unter NT bzw. 2000?</p>
<p>Für Infos, Links zum Thema oder Tipps, wie man es unter XP anders machen sollte wäre ich dankbar.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113646</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 09 Aug 2006 11:15:02 GMT</pubDate></item><item><title><![CDATA[Reply to WaitCommEvent wartet nicht on Wed, 09 Aug 2006 15:54:52 GMT]]></title><description><![CDATA[<p>muss es nicht</p>
<pre><code class="language-cpp">if(event &amp; EV_RXCHAR)
{
}
</code></pre>
<p>heißen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113910</guid><dc:creator><![CDATA[sera]]></dc:creator><pubDate>Wed, 09 Aug 2006 15:54:52 GMT</pubDate></item><item><title><![CDATA[Reply to WaitCommEvent wartet nicht on Wed, 09 Aug 2006 16:28:44 GMT]]></title><description><![CDATA[<p>Hast Du den DCB <strong>komplett</strong> initialisiert? Und <strong>nicht</strong> GetCommState verwendet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113936</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 09 Aug 2006 16:28:44 GMT</pubDate></item><item><title><![CDATA[Reply to WaitCommEvent wartet nicht on Wed, 09 Aug 2006 17:06:01 GMT]]></title><description><![CDATA[<p>sera schrieb:</p>
<blockquote>
<p>muss es nicht</p>
<pre><code class="language-cpp">if(event &amp; EV_RXCHAR)
{
}
</code></pre>
<p>heißen?</p>
</blockquote>
<p>Danke für den Hinweis. Stimmt, aber ändert nichts an dem eigentlichen Problem.</p>
<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Hast Du den DCB <strong>komplett</strong> initialisiert? Und <strong>nicht</strong> GetCommState verwendet?</p>
</blockquote>
<p>Ja, komplett. GetCommState habe ich nicht verwendet. Der Code zur Initialisierung des DCB stammt aus dem Code von <a href="http://www.codeproject.com/system/serial.asp" rel="nofollow">http://www.codeproject.com/system/serial.asp</a> und - wie gesagt - funktionierte bisher auch einwandfrei.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113970</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 09 Aug 2006 17:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to WaitCommEvent wartet nicht on Thu, 10 Aug 2006 07:01:04 GMT]]></title><description><![CDATA[<p>so geht es auch unter XP (mit overlapped event):</p>
<pre><code class="language-cpp">OVERLAPPED    o;
o.hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); // einen Event setzten

...
    WaitCommEvent (h, &amp;event, &amp;o); // Event mit Empfangssignalen verknüpfen
    if (WAIT_OBJECT_0 == WaitForSingleObject (o.hEvent, INFINITE)) // warten bis Event
    {
        if (event &amp; EV_RXCHAR) // Zeichen an RxD empfangen:
        {
...
</code></pre>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114250</guid><dc:creator><![CDATA[*Blackbird*]]></dc:creator><pubDate>Thu, 10 Aug 2006 07:01:04 GMT</pubDate></item></channel></rss>