<?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]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin neu im Forum und hoffe, hier einige Antworten zu finden bzw. zu bekommen... Desshalb gleich im voraus: Ich bin Anfänger, also bitte entschuldigt, wenn ich ab un zu auch mal nach &quot;absolutem Basiswissen&quot; frage! <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>Also, zur zeit Quält mich folgendes Problem:</p>
<p>Ich will erstmal ein Programm &quot;basteln&quot;, das Daten vom COM-Port abfängt und ausgieb, das wärs.</p>
<p>Später - wenn ich mal kappiert habe wie 's funktioniert - soll darau ein DLL werden, mit dem ich mehrere Ports gleichzeitig öffnen kann, Daten senden, Daten laufend empfangen sowie die Settings für die einzelnen Ports manipulieren... kingt lustig, ist aber so...</p>
<p>Ich hab' auch schon ein Bisschen ausprobiert, aber nur das senden klappt... teilweise... Das sieht dan ungefähr aus wie folgt:</p>
<pre><code class="language-cpp">// Hab ich wegen des Platzverbrauche entfernt....
</code></pre>
<p>Der gröste Teil ist übrigens schon aus dem Forum &quot;geklaut&quot;.</p>
<p>Nun die Frage noch mal konkret:</p>
<p>Wie sieht eine Funktion aus, die dauernd Daten vom COM-Port abfängt, und zwar so, das ich gegebenebfalls die daten in einem Fenster oÄ. ausgeben kann, und gleichzeitig über den selben Port daten schicken?</p>
<p>Besten Dank schon im Voraus<br />
Dan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/105036/com-port</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 05:41:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/105036.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 25 Mar 2005 10:51:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to COM-Port on Sat, 26 Mar 2005 12:40:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin neu im Forum und hoffe, hier einige Antworten zu finden bzw. zu bekommen... Desshalb gleich im voraus: Ich bin Anfänger, also bitte entschuldigt, wenn ich ab un zu auch mal nach &quot;absolutem Basiswissen&quot; frage! <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>Also, zur zeit Quält mich folgendes Problem:</p>
<p>Ich will erstmal ein Programm &quot;basteln&quot;, das Daten vom COM-Port abfängt und ausgieb, das wärs.</p>
<p>Später - wenn ich mal kappiert habe wie 's funktioniert - soll darau ein DLL werden, mit dem ich mehrere Ports gleichzeitig öffnen kann, Daten senden, Daten laufend empfangen sowie die Settings für die einzelnen Ports manipulieren... kingt lustig, ist aber so...</p>
<p>Ich hab' auch schon ein Bisschen ausprobiert, aber nur das senden klappt... teilweise... Das sieht dan ungefähr aus wie folgt:</p>
<pre><code class="language-cpp">// Hab ich wegen des Platzverbrauche entfernt....
</code></pre>
<p>Der gröste Teil ist übrigens schon aus dem Forum &quot;geklaut&quot;.</p>
<p>Nun die Frage noch mal konkret:</p>
<p>Wie sieht eine Funktion aus, die dauernd Daten vom COM-Port abfängt, und zwar so, das ich gegebenebfalls die daten in einem Fenster oÄ. ausgeben kann, und gleichzeitig über den selben Port daten schicken?</p>
<p>Besten Dank schon im Voraus<br />
Dan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/752417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/752417</guid><dc:creator><![CDATA[dan_m]]></dc:creator><pubDate>Sat, 26 Mar 2005 12:40:08 GMT</pubDate></item><item><title><![CDATA[Reply to COM-Port on Sat, 26 Mar 2005 12:39:02 GMT]]></title><description><![CDATA[<p>Besten Dank für die zahlreichen Antworten <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>
<p>OK, war ne Fragenstellung à la &quot;schreib mir mal jemand ein Programm, welchen...&quot;</p>
<p>Neuer Versuch: Ich hab selbst noch etwas recherchiert und hab es so einigermassen zun laufen gebracht, allerdings schmiert mir, wenn ich was auf den Komport sende, während das Gerät am Komport bereits sendet, dieses &quot;Gerät&quot; immer ab ( Testaufbau: DEV-PC &lt;--&gt; Null-Modem-Kabel &lt;--&gt; PC mit AccesPort)...</p>
<p>--&gt; AccesPort ist zu finden unter <a href="http://www.sudt.com/en/" rel="nofollow">http://www.sudt.com/en/</a></p>
<p>Währe FILE_FLAG_OVERLAPPED eine/die Lösung? Was bewirkt dieser Parameter überhaut (hab' z.Z. kein MSDN zur verfügung)?</p>
<p>Hier noch mal der aktuelle Test-Code (entschuldit die &quot;Zukleisterei&quot; bitte, aber die letzte Version war ein etwas arter Schlag meinerseits):</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;windows.h&gt;
#include &lt;string.h&gt;
#include &lt;stdio.h&gt;

#define MAX_SEND_BYTES 50

BOOL  fDebugMode = TRUE;

BOOL setCOMSettings(HANDLE hPort)
{
  DCB dcb;
  COMMTIMEOUTS cto;

  // set general settings
  if(GetCommState(hPort,&amp;dcb))
  {
    dcb.BaudRate = CBR_9600;
    dcb.StopBits = ONESTOPBIT;
    dcb.Parity = NOPARITY;
    dcb.fParity = TRUE;
    dcb.ByteSize = 8;
    dcb.fBinary = TRUE;
    dcb.wReserved = 0;
    if(!SetCommState(hPort,&amp;dcb))
      return FALSE;
  }

  // set timeouts
  if(GetCommTimeouts(hPort,&amp;cto))
  {
    printf(&quot;&gt;&gt; %f\n&quot;,cto.ReadIntervalTimeout);
    printf(&quot;&gt;&gt; %f\n&quot;,cto.ReadTotalTimeoutConstant);
    printf(&quot;&gt;&gt; %f\n&quot;,cto.ReadTotalTimeoutMultiplier);
    /*cto.ReadIntervalTimeout = 2000;
    cto.ReadTotalTimeoutConstant = 2000;
    cto.ReadTotalTimeoutMultiplier = 2000;
    if(!SetCommTimeouts(hPort,&amp;cto))
      return FALSE;*/
  }
  return TRUE;
}

BOOL sendDataOverCOM(char cToSend[MAX_SEND_BYTES], HANDLE hPort)
{  
  unsigned long length = 0;
  char cByteToSend[1];
  for(int i = 0; i &lt; MAX_SEND_BYTES; i++)
  {
    if(cToSend[i]!=NULL)
    {
      cByteToSend[0] = cToSend[i];
      if(WriteFile(hPort, cByteToSend, 1, &amp;length, NULL) == 0)
      {
        return FALSE;
      }
    }
    else
    {
      break;
    }
  }
  return TRUE;
}

BOOL getDataOverCOM(HANDLE hPort, int iLoops)
{
  char cBuffer[1000];
  DWORD dwLen;
  int i = 0;

  while(i&lt;iLoops)
  {       
    if(!ReadFile(hPort, cBuffer, 100, &amp;dwLen, 0))
      return FALSE;
    else
    {
      printf(&quot;%s&quot;, &amp;cBuffer);
      i++;
    }
  }
  printf(&quot;\n&quot;);
  return TRUE;
}

int main(int argc, char *argv[])
{
  // open port
  HANDLE hCom;
  hCom = CreateFile(
      &quot;COM1&quot;, 
      GENERIC_READ | GENERIC_WRITE, 
      0, 
      NULL, 
      OPEN_EXISTING,
      // 0, 
      FILE_ATTRIBUTE_NORMAL, 
      // FILE_FLAG_OVERLAPPED,
      NULL);
  if(hCom == INVALID_HANDLE_VALUE)
    printf(&quot;Could not open port!\n&quot;);
  else
    printf(&quot;COM-Port is open...\n&quot;);

  // create overlapped structure
  OVERLAPPED overlapped;
  memset(&amp;overlapped, 0, sizeof(overlapped));
  overlapped.hEvent = CreateEvent(
      NULL,
      TRUE,
      FALSE,
      NULL);

  // apply some settings
  if(!setCOMSettings(hCom))
    printf(&quot;Could not apply settings!\n&quot;);
  else
    printf(&quot;Settings are done...\n&quot;);

  // send a string 
  if(!sendDataOverCOM(&quot;test&quot;, hCom))
    printf(&quot;Could not send string!\n&quot;);
  else
    printf(&quot;String sent...\n&quot;);

  // recieve some char signs
  if(!getDataOverCOM(hCom, 20))
    printf(&quot;Could not recieve data!\n&quot;);
  else
    printf(&quot;Data recieved...\n&quot;);

  // close port
  CloseHandle(hCom);

  // wait for keyboard
  getchar();

  return EXIT_SUCCESS;
}
</code></pre>
<p>Danke<br />
Dan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/753007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/753007</guid><dc:creator><![CDATA[dan_m]]></dc:creator><pubDate>Sat, 26 Mar 2005 12:39:02 GMT</pubDate></item></channel></rss>