<?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[Auf COM-Port schreiben geht nicht (mehr)]]></title><description><![CDATA[<p>Hi,</p>
<p>Lustiger Effekt: Ich schreibe mittels</p>
<pre><code>char res=WriteFile(m_hCommPort,msg+slen,len-slen,&amp;bytesWritten,NULL);
{
   long l=GetLastError();
   l=0; // only for debugging purposes
}
</code></pre>
<p>auf einen zuvor korrekt und fehlerfrei geöffneten COM-Port, aber WriteFile will nix senden. &quot;res&quot; ist 1, der aufruf also nicht fehlgeschlagen, m_hCommPort ist gültig, msg+slen zeigt auf die korrekte Speicherstelle, len-slen hat auch die passende Größe aber bytesWritten liefert immer 0 zurück. Auch GetLastError() liefert keinen Fehler, es ist also alles OK, mal abgesehen davon, dass die Daten nicht rausgehen.</p>
<p>Der COM-Port ist in einem Modus geöffnet, in dem ich asynchron Daten senden kann (also nicht darauf warten muss, dass diese vollstädnig rausgegangen sind).</p>
<p>Hat jemand eine Idee, woran das liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242956/auf-com-port-schreiben-geht-nicht-mehr</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 12:27:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242956.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Jun 2009 10:07:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auf COM-Port schreiben geht nicht (mehr) on Wed, 10 Jun 2009 10:07:15 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Lustiger Effekt: Ich schreibe mittels</p>
<pre><code>char res=WriteFile(m_hCommPort,msg+slen,len-slen,&amp;bytesWritten,NULL);
{
   long l=GetLastError();
   l=0; // only for debugging purposes
}
</code></pre>
<p>auf einen zuvor korrekt und fehlerfrei geöffneten COM-Port, aber WriteFile will nix senden. &quot;res&quot; ist 1, der aufruf also nicht fehlgeschlagen, m_hCommPort ist gültig, msg+slen zeigt auf die korrekte Speicherstelle, len-slen hat auch die passende Größe aber bytesWritten liefert immer 0 zurück. Auch GetLastError() liefert keinen Fehler, es ist also alles OK, mal abgesehen davon, dass die Daten nicht rausgehen.</p>
<p>Der COM-Port ist in einem Modus geöffnet, in dem ich asynchron Daten senden kann (also nicht darauf warten muss, dass diese vollstädnig rausgegangen sind).</p>
<p>Hat jemand eine Idee, woran das liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724379</guid><dc:creator><![CDATA[TomoT]]></dc:creator><pubDate>Wed, 10 Jun 2009 10:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Auf COM-Port schreiben geht nicht (mehr) on Wed, 10 Jun 2009 11:46:03 GMT]]></title><description><![CDATA[<p>Dieser Teil sieht richtig aus.<br />
Poste mal wie du den Com Port initialisierst!<br />
Sonst kann man dir ohne Glaskugel nicht helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1724441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724441</guid><dc:creator><![CDATA[MisterX]]></dc:creator><pubDate>Wed, 10 Jun 2009 11:46:03 GMT</pubDate></item><item><title><![CDATA[Reply to Auf COM-Port schreiben geht nicht (mehr) on Wed, 10 Jun 2009 12:09:16 GMT]]></title><description><![CDATA[<p>Der Teil ist aber wesentlich länger:</p>
<pre><code>COMMTIMEOUTS timeouts;
   DCB          ComSettings;

   memset(&amp;ComSettings,0,sizeof(ComSettings));
   ComSettings.DCBlength=sizeof(DCB);

   m_hCommPort=CreateFile(config.port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
   if (!m_hCommPort)
   {
      m_hCommPort=NULL;
      return OAPC_ERROR_DEVICE;
   }
   if (!GetCommState(m_hCommPort,&amp;ComSettings))
   {
      CloseHandle(m_hCommPort);
      m_hCommPort=NULL;
      return OAPC_ERROR_DEVICE;
   }
   ComSettings.BaudRate=9600;
   ComSettings.ByteSize=8;
   ComSettings.Parity=NOPARITY;
   ComSettings.fParity=0;
   ComSettings.StopBits=ONESTOPBIT;
   ComSettings.fOutX=FALSE;
   ComSettings.fInX=FALSE;
   ComSettings.fBinary=TRUE;
   ComSettings.fDtrControl=DTR_CONTROL_DISABLE;
   ComSettings.fRtsControl=RTS_CONTROL_DISABLE;
   ComSettings.fAbortOnError=FALSE;

   if (!SetCommState(m_hCommPort,&amp;ComSettings))
   {
      CloseHandle(m_hCommPort);
      m_hCommPort=NULL;
      return OAPC_ERROR_DEVICE;
   }

   timeouts.ReadIntervalTimeout        =MAXDWORD;
   timeouts.ReadTotalTimeoutMultiplier =0;
   timeouts.ReadTotalTimeoutConstant   =0;
   timeouts.WriteTotalTimeoutMultiplier=0;
   timeouts.WriteTotalTimeoutConstant  =250;

   if (!SetCommTimeouts(m_hCommPort, &amp;timeouts))
   {
      CloseHandle(m_hCommPort);
      m_hCommPort=NULL;
      return OAPC_ERROR_DEVICE;
   }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1724451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1724451</guid><dc:creator><![CDATA[TomoT]]></dc:creator><pubDate>Wed, 10 Jun 2009 12:09:16 GMT</pubDate></item></channel></rss>