<?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[Geräte an COM Port ausgeschaltet, Probleme mit Exception handling]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem mit Exception Handling.<br />
Ich spreche mit meinem Programm an den COM Ports angeschlossene Geräte an. Bei eingeschalteten Geräten gibt es keine Probleme, jedoch &quot;hängt&quot; sich das Programm auf, wenn die Geräte ausgeschaltet sind.<br />
Geschrieben wurde/wird das Programm übrigends mit dem Borland C++ Builder 6.</p>
<p>so öffne ich den Port:</p>
<pre><code class="language-cpp">int open_com()
{
   DCB dcb;
   hCom = CreateFile (&quot;COM1&quot;, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
   dcb.DCBlength = sizeof(DCB);  		
   GetCommState (hCom, &amp;dcb);    	
   dcb.BaudRate  = 9600;         
   dcb.ByteSize  = 8;            	
   dcb.Parity    = NOPARITY;     	
   dcb.StopBits  = ONESTOPBIT;   		
   SetCommState (hCom, &amp;dcb);    	
   return 0;
}
</code></pre>
<p>so sende ich Daten:</p>
<pre><code class="language-cpp">int send(char input)
{
   DWORD iBWritten;
   unsigned char ucMsg;   
   ucMsg = input;
   WriteFile (hCom, &amp;ucMsg, 1, &amp;iBWritten, NULL);
   return (0);
}
</code></pre>
<p>so werden sie aufgerufen:</p>
<pre><code class="language-cpp">open_com();  // Port öffnen
  sv_befehl = &quot; \n exit\n&quot;;   
  befehl_laenge = strlen(sv_befehl);
  for (int i=0; i &lt; befehl_laenge; i++) {
        send(sv_befehl[i]);
  }
</code></pre>
<p>Wie kann ich verhindern, dass sich das Programm aufhängt?<br />
Mein Gedanke war, das hängen mit einer Exception abzufangen.<br />
Wo wäre es klug die zu integrierten?</p>
<p>beim öffnen des Ports dachte ich an</p>
<pre><code class="language-cpp">try
{
   SetCommState (hCom, &amp;dcb); 
}
catch (Exception &amp;E)
{
}
</code></pre>
<p>und beim senden:</p>
<pre><code class="language-cpp">int send(char input)
{
   DWORD iBWritten;
   unsigned char ucMsg;   
   ucMsg = input;
   try
   {
      WriteFile (hCom, &amp;ucMsg, 1, &amp;iBWritten, NULL); 
   }
   catch (Exception &amp;E)
   {
   }
   return 0;
</code></pre>
<p>Jedoch funktioniert das leider nicht. Kann mir jemand einen Tipp geben, wo es hängt (...leider noch Anfänger).</p>
<p>Danke.</p>
<p>gruß,<br />
M.F.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/106215/geräte-an-com-port-ausgeschaltet-probleme-mit-exception-handling</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 23:14:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/106215.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Apr 2005 08:50:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Geräte an COM Port ausgeschaltet, Probleme mit Exception handling on Thu, 07 Apr 2005 08:50:19 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem mit Exception Handling.<br />
Ich spreche mit meinem Programm an den COM Ports angeschlossene Geräte an. Bei eingeschalteten Geräten gibt es keine Probleme, jedoch &quot;hängt&quot; sich das Programm auf, wenn die Geräte ausgeschaltet sind.<br />
Geschrieben wurde/wird das Programm übrigends mit dem Borland C++ Builder 6.</p>
<p>so öffne ich den Port:</p>
<pre><code class="language-cpp">int open_com()
{
   DCB dcb;
   hCom = CreateFile (&quot;COM1&quot;, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
   dcb.DCBlength = sizeof(DCB);  		
   GetCommState (hCom, &amp;dcb);    	
   dcb.BaudRate  = 9600;         
   dcb.ByteSize  = 8;            	
   dcb.Parity    = NOPARITY;     	
   dcb.StopBits  = ONESTOPBIT;   		
   SetCommState (hCom, &amp;dcb);    	
   return 0;
}
</code></pre>
<p>so sende ich Daten:</p>
<pre><code class="language-cpp">int send(char input)
{
   DWORD iBWritten;
   unsigned char ucMsg;   
   ucMsg = input;
   WriteFile (hCom, &amp;ucMsg, 1, &amp;iBWritten, NULL);
   return (0);
}
</code></pre>
<p>so werden sie aufgerufen:</p>
<pre><code class="language-cpp">open_com();  // Port öffnen
  sv_befehl = &quot; \n exit\n&quot;;   
  befehl_laenge = strlen(sv_befehl);
  for (int i=0; i &lt; befehl_laenge; i++) {
        send(sv_befehl[i]);
  }
</code></pre>
<p>Wie kann ich verhindern, dass sich das Programm aufhängt?<br />
Mein Gedanke war, das hängen mit einer Exception abzufangen.<br />
Wo wäre es klug die zu integrierten?</p>
<p>beim öffnen des Ports dachte ich an</p>
<pre><code class="language-cpp">try
{
   SetCommState (hCom, &amp;dcb); 
}
catch (Exception &amp;E)
{
}
</code></pre>
<p>und beim senden:</p>
<pre><code class="language-cpp">int send(char input)
{
   DWORD iBWritten;
   unsigned char ucMsg;   
   ucMsg = input;
   try
   {
      WriteFile (hCom, &amp;ucMsg, 1, &amp;iBWritten, NULL); 
   }
   catch (Exception &amp;E)
   {
   }
   return 0;
</code></pre>
<p>Jedoch funktioniert das leider nicht. Kann mir jemand einen Tipp geben, wo es hängt (...leider noch Anfänger).</p>
<p>Danke.</p>
<p>gruß,<br />
M.F.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/761719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/761719</guid><dc:creator><![CDATA[M.Frank]]></dc:creator><pubDate>Thu, 07 Apr 2005 08:50:19 GMT</pubDate></item><item><title><![CDATA[Reply to Geräte an COM Port ausgeschaltet, Probleme mit Exception handling on Thu, 07 Apr 2005 08:58:56 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das Auffangen von Exeptions bringt nur etwas, wenn Exceptions geworfen werden (siehe <em>throw</em>).<br />
Was bei GetCommState/SetCommState nicht der Fall ist.<br />
Dort must du den Rückgabewert überprüfen (was man bei allen WinAPI-Funktionen machen sollte) :</p>
<blockquote>
<p>If the function fails, the return value is zero. To get extended error information, call GetLastError.</p>
</blockquote>
<p>Darauf hin kannst du deine Fehlerbearbeitung aufbauen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/761726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/761726</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 07 Apr 2005 08:58:56 GMT</pubDate></item><item><title><![CDATA[Reply to Geräte an COM Port ausgeschaltet, Probleme mit Exception handling on Thu, 07 Apr 2005 09:27:55 GMT]]></title><description><![CDATA[<p>M.Frank schrieb:</p>
<blockquote>
<p>Wie kann ich verhindern, dass sich das Programm aufhängt?</p>
</blockquote>
<p>da gibt's gleich mehrere möglichkeiten...<br />
1. SetCommTimeouts() --&gt; <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/setcommtimeouts.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/setcommtimeouts.asp</a><br />
2. asynchrones i/o --&gt; <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/synchronization_and_overlapped_input_and_output.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/synchronization_and_overlapped_input_and_output.asp</a><br />
3. read/write in separaten threads<br />
such dir was aus <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=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/761749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/761749</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Thu, 07 Apr 2005 09:27:55 GMT</pubDate></item><item><title><![CDATA[Reply to Geräte an COM Port ausgeschaltet, Probleme mit Exception handling on Thu, 07 Apr 2005 21:25:26 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>: axo, das throw habe ich vergessen. Morgen mal schaun, wie das richtig gehört.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3162">@net</a>: Super Tipps, werde die morgen auch gleich mal versuchen zu implementieren.</p>
<p>Danke.</p>
<p>gruß,<br />
M.F.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/762310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/762310</guid><dc:creator><![CDATA[M.Frank]]></dc:creator><pubDate>Thu, 07 Apr 2005 21:25:26 GMT</pubDate></item></channel></rss>