<?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[Schleifenproblem bzw. Message-Queue ausgebootet]]></title><description><![CDATA[<p>Ich habe ein Schleifenproblem !<br />
Und zwar will ich kontinuierlich Daten von einem an den PC angeschlossenen Bus-System abfragen und ausgeben. Mein Plan ist, dass ich die Abfrage über einen Button starte und dann solange laufen lass, bis ein Abbrechen-Button gedrückt wird - also ungefähr so:</p>
<pre><code class="language-cpp">bool stop = false;

...

case WM_COMMAND:                                                              

          if (LOWORD(wParam) == 1)
          {
             while (stop == false)
             {
                // Daten von CAN-BUS abfragen und ausgeben
             }
          }
          if (LOWORD(wParam) == 2) 
          {
             stop = true;
          }
</code></pre>
<p>da das so aber bis jetzt leider nicht funktioniert hat (Absturz!), hab ich hier schonmal bisschen im Forum rumgeschaut und die Aussage gefunden, dass während der Schleifenausführung meine Message-Warteschlange brach liegt und das Programm logischerweise nicht mehr reagiert (zweite if-Anweisung wird nie ausgeführt).</p>
<p>Als Lösung könnte man entweder in regelmäßigen Abständen unterbrechen und die anliegenden Nachrichten abarbeiten - oder man startet einen eigenen Thread!</p>
<p>Das mit dem Multi-Threading erscheint mir recht kompliziert (und zeitaufwändig zu erlernen), deswegen meine Frage:<br />
wie kann ich denn (meine Schleife) in regelmäßigen Abständen unterbrechen ??</p>
<p>oder gehts womöglich doch irgendwie mit meiner Idee ?<br />
Danke für Hilfe !!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149635/schleifenproblem-bzw-message-queue-ausgebootet</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 09:35:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149635.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jun 2006 22:32:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schleifenproblem bzw. Message-Queue ausgebootet on Wed, 07 Jun 2006 22:32:52 GMT]]></title><description><![CDATA[<p>Ich habe ein Schleifenproblem !<br />
Und zwar will ich kontinuierlich Daten von einem an den PC angeschlossenen Bus-System abfragen und ausgeben. Mein Plan ist, dass ich die Abfrage über einen Button starte und dann solange laufen lass, bis ein Abbrechen-Button gedrückt wird - also ungefähr so:</p>
<pre><code class="language-cpp">bool stop = false;

...

case WM_COMMAND:                                                              

          if (LOWORD(wParam) == 1)
          {
             while (stop == false)
             {
                // Daten von CAN-BUS abfragen und ausgeben
             }
          }
          if (LOWORD(wParam) == 2) 
          {
             stop = true;
          }
</code></pre>
<p>da das so aber bis jetzt leider nicht funktioniert hat (Absturz!), hab ich hier schonmal bisschen im Forum rumgeschaut und die Aussage gefunden, dass während der Schleifenausführung meine Message-Warteschlange brach liegt und das Programm logischerweise nicht mehr reagiert (zweite if-Anweisung wird nie ausgeführt).</p>
<p>Als Lösung könnte man entweder in regelmäßigen Abständen unterbrechen und die anliegenden Nachrichten abarbeiten - oder man startet einen eigenen Thread!</p>
<p>Das mit dem Multi-Threading erscheint mir recht kompliziert (und zeitaufwändig zu erlernen), deswegen meine Frage:<br />
wie kann ich denn (meine Schleife) in regelmäßigen Abständen unterbrechen ??</p>
<p>oder gehts womöglich doch irgendwie mit meiner Idee ?<br />
Danke für Hilfe !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073519</guid><dc:creator><![CDATA[Britpoper]]></dc:creator><pubDate>Wed, 07 Jun 2006 22:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenproblem bzw. Message-Queue ausgebootet on Wed, 07 Jun 2006 23:28:55 GMT]]></title><description><![CDATA[<p>Das mit dem Multithreading ist überhaupt nicht kompliziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073528</guid><dc:creator><![CDATA[falsch]]></dc:creator><pubDate>Wed, 07 Jun 2006 23:28:55 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenproblem bzw. Message-Queue ausgebootet on Thu, 08 Jun 2006 03:31:57 GMT]]></title><description><![CDATA[<blockquote>
<p>Das mit dem Multithreading ist überhaupt nicht kompliziert.</p>
</blockquote>
<p>naja es kann kompliziert werden aber in deinem fall tut es das wohl kaum.</p>
<p>du koenntest es zb so anstellen das du einen thread erstellst der den can-bus ausliest, die relevanten nachrichten in eine queue schreibt und dann schaut ob er aufhoeren soll und sonst halt wieder von vorne anfaengt.</p>
<p>in deiner windows nachrichten-bearbeitungs-routine kannst du dann zb per timer dir immer eine nachricht schicken lassen (vielleicht jede sekunde) und dann die queue abarbeitest.</p>
<p>du musst dann aber aufpassen das nicht deine windows schleife und dein thread gleichzeitig auf die queue zugreifen. Das geht indem du eine CriticalSection um die aufrufe der queue packst.</p>
<p>also kA was ein canbus is aber so koennte man es zb anstellen.<br />
es gibt bestimmt noch bessere bin jetz aber zufaul nachzuschauen was ein canbus genau is aber ich denke du verstehst jetz wie man sowas angehen kann mit mltithreading</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073536</guid><dc:creator><![CDATA[richtig]]></dc:creator><pubDate>Thu, 08 Jun 2006 03:31:57 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenproblem bzw. Message-Queue ausgebootet on Thu, 08 Jun 2006 06:26:05 GMT]]></title><description><![CDATA[<p>Wenn die Ein- und Ausgaben nicht hoch frequent sind, dann kanst Du auch einen simplen Timer verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073566</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 08 Jun 2006 06:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenproblem bzw. Message-Queue ausgebootet on Thu, 08 Jun 2006 15:40:29 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Wenn die Ein- und Ausgaben nicht hoch frequent sind, dann kanst Du auch einen simplen Timer verwenden.</p>
</blockquote>
<p>wie? bitte ? was ist den 'hoch frequent' ?<br />
mal so btw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073991</guid><dc:creator><![CDATA[hä?]]></dc:creator><pubDate>Thu, 08 Jun 2006 15:40:29 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenproblem bzw. Message-Queue ausgebootet on Thu, 08 Jun 2006 18:30:39 GMT]]></title><description><![CDATA[<p>hä? schrieb:</p>
<blockquote>
<p>was ist den 'hoch frequent' ?</p>
</blockquote>
<p>100 ms</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074075</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 08 Jun 2006 18:30:39 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenproblem bzw. Message-Queue ausgebootet on Fri, 21 Jul 2006 20:32:45 GMT]]></title><description><![CDATA[<p>Sorry, dass ich mich nicht mehr gemeldet habe - ich muss in meinem Programm mittlerweile keine &quot;Dauer-Abfrage&quot; mehr machen.<br />
Deswegen hat sich das Thema im Prinzip erübrigt ...</p>
<p>Trotzdem Danke für Hilfe .....<br />
Gruß an alle Coder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1102034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1102034</guid><dc:creator><![CDATA[Britpoper]]></dc:creator><pubDate>Fri, 21 Jul 2006 20:32:45 GMT</pubDate></item></channel></rss>