<?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[COM1 auslesen.]]></title><description><![CDATA[<p>Hallo ich bin ein totaller Anfänger, was WinAPI angeht, komme abe nicht drum rum.<br />
Ich möchte gerne die COM1 Schnitstelle auslesen, bzw die Daten die an diese gesendet werden mit printf ausgeben. Hab schon was im Inet drüber gefunden:</p>
<pre><code class="language-cpp">HANDLE handle;
   DCB dcb;
   char buffer[1000] = &quot;abcdefghijklmnopqrstuvwxyz123456789&quot;;
   DWORD dwLen;

   handle = CreateFile(&quot;\\\\.\\COM1&quot;, GENERIC_READ | GENERIC_WRITE,
               0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

   ZeroMemory(&amp;dcb, sizeof(dcb));

   dcb.DCBlength           = sizeof(dcb);
   dcb.BaudRate            = 19200; 
   dcb.fParity             = TRUE;
   dcb.ByteSize            = 8;
   dcb.Parity              = ODDPARITY;
   dcb.StopBits            = ONESTOPBIT;

   while (1)
   {
	printf(&quot;----------------------------------------&quot;);	
         ReadFile(handle, buffer, 100, &amp;dwLen, 0);

   }
   CloseHandle(handle);
</code></pre>
<p>Ich verstehe aber die Zeile ReadFile(handle, buffer, 100, &amp;dwLen, 0);<br />
nicht. Wie soll ich das nun in der Console ausgeben? Außerdem wird bei mir die linie einmal ausgegeben und danach passiert nichts <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="😞"
    /><br />
Kann mir jemand evtl. helfen.<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/95956/com1-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 21:17:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/95956.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Dec 2004 10:52:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to COM1 auslesen. on Sun, 26 Dec 2004 10:52:11 GMT]]></title><description><![CDATA[<p>Hallo ich bin ein totaller Anfänger, was WinAPI angeht, komme abe nicht drum rum.<br />
Ich möchte gerne die COM1 Schnitstelle auslesen, bzw die Daten die an diese gesendet werden mit printf ausgeben. Hab schon was im Inet drüber gefunden:</p>
<pre><code class="language-cpp">HANDLE handle;
   DCB dcb;
   char buffer[1000] = &quot;abcdefghijklmnopqrstuvwxyz123456789&quot;;
   DWORD dwLen;

   handle = CreateFile(&quot;\\\\.\\COM1&quot;, GENERIC_READ | GENERIC_WRITE,
               0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

   ZeroMemory(&amp;dcb, sizeof(dcb));

   dcb.DCBlength           = sizeof(dcb);
   dcb.BaudRate            = 19200; 
   dcb.fParity             = TRUE;
   dcb.ByteSize            = 8;
   dcb.Parity              = ODDPARITY;
   dcb.StopBits            = ONESTOPBIT;

   while (1)
   {
	printf(&quot;----------------------------------------&quot;);	
         ReadFile(handle, buffer, 100, &amp;dwLen, 0);

   }
   CloseHandle(handle);
</code></pre>
<p>Ich verstehe aber die Zeile ReadFile(handle, buffer, 100, &amp;dwLen, 0);<br />
nicht. Wie soll ich das nun in der Console ausgeben? Außerdem wird bei mir die linie einmal ausgegeben und danach passiert nichts <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="😞"
    /><br />
Kann mir jemand evtl. helfen.<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/680905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/680905</guid><dc:creator><![CDATA[sadi]]></dc:creator><pubDate>Sun, 26 Dec 2004 10:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to COM1 auslesen. on Sun, 26 Dec 2004 12:54:41 GMT]]></title><description><![CDATA[<p>ReadFile schreibt die empfangenen Bytes nach buffer. Dabei liest es maximal 100 Bytes (der 3. Parameter) und schreibt die Anzahl der tatsächlich empfangenen Bytes nach dwLen.</p>
<p>Wenn du also die Daten auf der Konsole sehen willst, musst du buffer nullterminieren (falls die Daten es nicht schon sind) und z.B. mit printf(buffer) ausgeben.</p>
<p>Wieso initialisierst du die Struktur dcb, benutzt sie aber nie? Fehlt da vielleicht ein SetCommState?<br />
Außerdem muss dcb.fBinary TRUE sein (verlangt Windows so).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/680995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/680995</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Sun, 26 Dec 2004 12:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to COM1 auslesen. on Sun, 26 Dec 2004 15:10:50 GMT]]></title><description><![CDATA[<p>Also habs jetzt soweit. ERrhalt aber immernoch keine Ausgabe. Es ist noch kein Gerät an COm1 angeschlossen, kanns daran liegen?</p>
<pre><code class="language-cpp">static HANDLE handle;
   DCB dcb;
   char buffer[1000] = &quot;abcdefghijklmnopqrstuvwxyz123456789&quot;;
   DWORD dwLen;

   handle = CreateFile(&quot;\\\\.\\COM1&quot;, GENERIC_READ | GENERIC_WRITE,
               0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

   if (handle == INVALID_HANDLE_VALUE)
   {
      printf(&quot;CreateFile() Fehlgeschlagen\n&quot;);
      return 1;
   }
   ZeroMemory(&amp;dcb, sizeof(dcb));

   dcb.DCBlength        = sizeof(dcb);
   dcb.BaudRate         = 19200; 
   dcb.fParity          = TRUE;
   dcb.ByteSize         = 8;
   dcb.Parity           = NOPARITY;
   dcb.StopBits         = ONESTOPBIT;
   dcb.fBinary			= TRUE;
   dcb.wReserved         = 0;

  if (!SetCommState(handle, &amp;dcb))
   {
      printf(&quot;SetCommState() Fehlgeschlagen\n&quot;);
      return 1;
   }

   while (1)
   {		

		ReadFile(handle, buffer, 100, &amp;dwLen, 0);
		printf(&quot;Ausgabe: %s \n&quot;, &amp;buffer);
   }

   CloseHandle(handle);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/681135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681135</guid><dc:creator><![CDATA[sadi]]></dc:creator><pubDate>Sun, 26 Dec 2004 15:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to COM1 auslesen. on Sun, 26 Dec 2004 15:26:43 GMT]]></title><description><![CDATA[<p>sadi schrieb:</p>
<blockquote>
<p>Also habs jetzt soweit. ERrhalt aber immernoch keine Ausgabe. Es ist noch kein Gerät an COm1 angeschlossen, kanns daran liegen?</p>
</blockquote>
<p>Ja. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Was für eine Ausgabe erwartest du denn, wenn kein Gerät angeschlossen ist, das irgendwas sendet?</p>
<p>edit: while(1) ist arg suboptimal, weil du nie CloseHandle aufrufst.<br />
edit2: Ich meine, printf erwartet bei %s einen char* und keinen char**. Lass das &amp; vor buffer weg. Außerdem habe ich oben geschrieben, dass der Puffer für printf nullterminiert sein muss. Wenn du nicht garantieren kannst, dass die Daten es sind, musst du das manuell machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681138</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Sun, 26 Dec 2004 15:26:43 GMT</pubDate></item></channel></rss>