<?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[Problem beim lesen von COM1]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe an meinen COM1 ein Multimeter von CONRAD angeschlossen. Jetzt möchte ich gern die Meßwerte mit einem Tool auslesen. So öffne ich den Port:</p>
<pre><code>AnsiString Comport = InputBox(&quot;COM-Port angeben:&quot;, &quot;Bitte geben Sie den zu öffnenden COM-Port an:&quot;, &quot;COM1&quot;);

handle = CreateFile(Comport.c_str(),
      GENERIC_READ | GENERIC_WRITE,
      0,    /* comm devices must be opened w/exclusive-access */
      NULL, /* no security attrs */
      OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
      0,    /* not overlapped I/O */
      NULL  /* hTemplate must be NULL for comm devices */
      );
</code></pre>
<p>...und dann setzte ich die Puffergröße:</p>
<pre><code>DWORD dwInputGroesse = 0;	// size of input buffer
    DWORD dwOutputGroesse = 0;	// size of output buffer

dwInputGroesse = 2048;
dwOutputGroesse = 1024;

SetupComm(handle,dwInputGroesse,dwOutputGroesse);
</code></pre>
<p>... dann setze ich den DCB:</p>
<pre><code>AnsiString c=NULL;

dcb.DCBlength = sizeof(TDCB);
GetCommState(handle, &amp;dcb);
c = &quot;baud=1200 parity=N data=7 stop=2&quot;;
BuildCommDCB(c.c_str(),&amp;dcb);
</code></pre>
<p>... und zum gutesch Schluß lese ich den Port aus:</p>
<pre><code>unsigned char inPuffer[2048];
unsigned long  gelesen = NULL;
int zu_lesen=NULL;

ReadFile(handle,&amp;inPuffer,zu_lesen,&amp;gelesen,NULL);
</code></pre>
<p>Ich bekomme in &amp;gelesen immer eine 0!!! Das bedeutet doch, das 0 Zeichen gelesen wurden !?<br />
Was mache ich falsch???</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/104374/problem-beim-lesen-von-com1</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 05:24:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/104374.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Mar 2005 21:18:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Fri, 18 Mar 2005 21:18:17 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe an meinen COM1 ein Multimeter von CONRAD angeschlossen. Jetzt möchte ich gern die Meßwerte mit einem Tool auslesen. So öffne ich den Port:</p>
<pre><code>AnsiString Comport = InputBox(&quot;COM-Port angeben:&quot;, &quot;Bitte geben Sie den zu öffnenden COM-Port an:&quot;, &quot;COM1&quot;);

handle = CreateFile(Comport.c_str(),
      GENERIC_READ | GENERIC_WRITE,
      0,    /* comm devices must be opened w/exclusive-access */
      NULL, /* no security attrs */
      OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
      0,    /* not overlapped I/O */
      NULL  /* hTemplate must be NULL for comm devices */
      );
</code></pre>
<p>...und dann setzte ich die Puffergröße:</p>
<pre><code>DWORD dwInputGroesse = 0;	// size of input buffer
    DWORD dwOutputGroesse = 0;	// size of output buffer

dwInputGroesse = 2048;
dwOutputGroesse = 1024;

SetupComm(handle,dwInputGroesse,dwOutputGroesse);
</code></pre>
<p>... dann setze ich den DCB:</p>
<pre><code>AnsiString c=NULL;

dcb.DCBlength = sizeof(TDCB);
GetCommState(handle, &amp;dcb);
c = &quot;baud=1200 parity=N data=7 stop=2&quot;;
BuildCommDCB(c.c_str(),&amp;dcb);
</code></pre>
<p>... und zum gutesch Schluß lese ich den Port aus:</p>
<pre><code>unsigned char inPuffer[2048];
unsigned long  gelesen = NULL;
int zu_lesen=NULL;

ReadFile(handle,&amp;inPuffer,zu_lesen,&amp;gelesen,NULL);
</code></pre>
<p>Ich bekomme in &amp;gelesen immer eine 0!!! Das bedeutet doch, das 0 Zeichen gelesen wurden !?<br />
Was mache ich falsch???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/747926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/747926</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Fri, 18 Mar 2005 21:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 10:08:19 GMT]]></title><description><![CDATA[<p>Genau... denn du sagst ihm ja auch er müsse 0 bytes lesen?</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748087</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Sat, 19 Mar 2005 10:08:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 15:17:20 GMT]]></title><description><![CDATA[<p>Wo ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/748275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748275</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Sat, 19 Mar 2005 15:17:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 15:43:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>junix bezieht sich sicher darauf</p>
<pre><code class="language-cpp">int zu_lesen=NULL;
</code></pre>
<p>in der Annahme, das der Wert die zu lesenden Zeichen angeben soll.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748292</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 19 Mar 2005 15:43:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 19:19:06 GMT]]></title><description><![CDATA[<p>sorry,<br />
ich Dumpfbacke! Wer lesen kann ist klar in Vorteil <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Das Habe ich dann auf 14 geändert, weil das Meßgerät einen String von 14 Byte sendet. Jetzt tritt aber folgendes neues Problem auf: Bei der Ausführung von</p>
<pre><code>ReadFile(handle,&amp;inPuffer,zu_lesen,&amp;gelesen,NULL);
</code></pre>
<p>springt er aus der Funktion nicht mehr heraus und das Programm hängt sich auf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748453</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Sat, 19 Mar 2005 19:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 19:21:13 GMT]]></title><description><![CDATA[<p>Korrekt.</p>
<p><strong>Programmiererregel 3.1427</strong>:<br />
Kenne deine Parameter und deren Bedeutung.</p>
<p>Eigentlich gehört jeder der einfach mal &quot;NULL&quot; übergibt weil er nicht weiss was mit dem Parameter anzustellen ist niedergeschossen....</p>
<p>....tschuldigung hab grad meine destruktive Phase...</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748456</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Sat, 19 Mar 2005 19:21:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 19:22:01 GMT]]></title><description><![CDATA[<p>torsten_156 schrieb:</p>
<blockquote>
<p>springt er aus der Funktion nicht mehr heraus und das Programm hängt sich auf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Warum?</p>
</blockquote>
<p>Was steht über Readfile genau in der Dokumentation?</p>
<p>Tip: Es hat was mit der Anzahl Bytes zu tun die empfangen werden sollen....</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748457</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Sat, 19 Mar 2005 19:22:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 19:43:21 GMT]]></title><description><![CDATA[<p>ich habe mir die Hilfe vom CBuilder über ReadFile() durchgelesen! Die große Erleuchtung kam mir leider nicht. Aber könnte es etwas mit dem zweiten Parameter (lpBuffer) zutun haben? Muß er evt. genau so groß sein wie der zu erwartende Datenstrom? Ich glaube eher nicht, oder?<br />
Sonst habe ich leider noch keine weitere Idee...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748464</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Sat, 19 Mar 2005 19:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 20:38:36 GMT]]></title><description><![CDATA[<p>Was genau macht die Funktion nach dem Aufruf?</p>
<p>Der Kern der Sache liegt in folgender Zeile: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readfile.asp" rel="nofollow">The ReadFile function returns when one of the following conditions is met:</a> (click und nachlesen *g*)</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748516</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Sat, 19 Mar 2005 20:38:36 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sat, 19 Mar 2005 21:15:17 GMT]]></title><description><![CDATA[<p>Da steht ja folgendes: Die Function wird beendet, wenn folgende Fälle eintreten:</p>
<p>1. Wenn das schreiben von der Gegenstelle (Meßgerät) beendet ist!<br />
-&gt; nach dem Aufruf von ReadFile warte ich ca.2 min, es passiert nix und dann schalte ich das Meßgerät aus! Bleibt trotzdem hängen</p>
<p>2. die Anzahl von verlangten Bytes ist gelesen worden!<br />
-&gt; ich weis, das das Meßgerät ein Datenpaket von 14Bytes / sec. schicken kann. Wie stelle ich fest, wann und wieviele Bytes schon geschickt wurden wenn ich keine andere Function dafür aufrufen kann?</p>
<p>3. ein Fehler kommt vor<br />
-&gt; recht unwarscheinlich, da die Function ja nicht beendet wird</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/748549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748549</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Sat, 19 Mar 2005 21:15:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sun, 20 Mar 2005 15:57:29 GMT]]></title><description><![CDATA[<p>Was hindert dich daran REadfile Byteweise zu benutzen?</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/748931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/748931</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Sun, 20 Mar 2005 15:57:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sun, 20 Mar 2005 18:27:42 GMT]]></title><description><![CDATA[<p>soll das bedeuten, das ich die 14Byte, die das Meßgerät sendet, alle einzeln abholen muß? Wenn ja, warum?</p>
<p>torsten_156</p>
]]></description><link>https://www.c-plusplus.net/forum/post/749017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/749017</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Sun, 20 Mar 2005 18:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sun, 20 Mar 2005 21:38:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>wenn keine 14 Bytes ankommen kannst du lange warten<br />
(ist das eine Erklaerung)</p>
<p>MfG<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/749138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/749138</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Sun, 20 Mar 2005 21:38:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Sun, 20 Mar 2005 22:21:42 GMT]]></title><description><![CDATA[<p>so langsam verzweifele ich <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 />
zu dem Meßgerät habe ich auch ein wenig Doku. In dieser steht (Zitat): Schalten Sie nun das Meßgerät ein. Drücken... Die Meßdaten werden in folgendem Datenformat(Länge: 14Byte) an den PC gesendet:<br />
BYTE 123456789ABCDE<br />
Bsp.1 DC-1.9999 V CR</p>
<p>Byte1,2 und A bis D enthalten die Maßeinheit des jeweiligen Meßbereiches, Byte 3 die Polarität, Byte 4 bis 9 den Meßwert und Byte E &lt;CR&gt; (Zitat ende).</p>
<p>Damit steht doch fest, das das Meßgerät 14 Bytes sendet. Da ich auch etwas getestet und probiert habe, hier nochmals der neue Code für das setzen des DCB:</p>
<pre><code>AnsiString c=NULL;

dcb.DCBlength = sizeof(DCB);
GetCommState(handle, &amp;dcb);
BuildCommDCB(&quot;1200,N,7,1&quot;,&amp;dcb);
SetCommState(handle, &amp;dcb);
</code></pre>
<p>und hier der Code zum lesen:</p>
<pre><code>unsigned char inPuffer[14];
DWORD  gelesen = NULL;
int zu_lesen=14;

for(int x=0; x&lt;zu_lesen; x++)
   {
   inPuffer[x] = NULL;
   }

for(int y=0; y&lt;=zu_lesen; y++)
   {
   inPuffer[y] = ReadFile(handle,&amp;inPuffer,zu_lesen,&amp;gelesen,0);
   }
</code></pre>
<p>Ich bekomme beim lesen immer nur ein x01 ???</p>
<p>Was mache ich denn Falsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/749172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/749172</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Sun, 20 Mar 2005 22:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Mon, 21 Mar 2005 02:54:07 GMT]]></title><description><![CDATA[<p>JAAAAAAAA <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Ich habe nach langem Versuchen die Lösung gefunden! Ich habe mir nochmals den DCB zur Brust genommen. Ich habe da noch ein paar Parameter mehr setzen müssen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Aber VIELEN DANK für die hilfe...</p>
<p>Schönen Gruß torsten_156</p>
]]></description><link>https://www.c-plusplus.net/forum/post/749229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/749229</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Mon, 21 Mar 2005 02:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Mon, 21 Mar 2005 06:36:55 GMT]]></title><description><![CDATA[<p>torsten_156 schrieb:</p>
<blockquote>
<p>so langsam verzweifele ich <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 />
zu dem Meßgerät habe ich auch ein wenig Doku. In dieser steht (Zitat): Schalten Sie nun das Meßgerät ein. Drücken... Die Meßdaten werden in folgendem Datenformat(Länge: 14Byte) an den PC gesendet:<br />
BYTE 123456789ABCDE<br />
Bsp.1 DC-1.9999 V CR</p>
<p>Byte1,2 und A bis D enthalten die Maßeinheit des jeweiligen Meßbereiches, Byte 3 die Polarität, Byte 4 bis 9 den Meßwert und Byte E &lt;CR&gt; (Zitat ende).</p>
<p>Damit steht doch fest, das das Meßgerät 14 Bytes sendet. Da ich auch etwas getestet und probiert habe, hier nochmals der neue Code für das setzen des DCB:</p>
<pre><code>AnsiString c=NULL;

dcb.DCBlength = sizeof(DCB);
GetCommState(handle, &amp;dcb);
BuildCommDCB(&quot;1200,N,7,1&quot;,&amp;dcb);
SetCommState(handle, &amp;dcb);
</code></pre>
<p>und hier der Code zum lesen:[code]unsigned char inPuffer[14];<br />
DWORD gelesen = NULL;<br />
int zu_lesen=14;<br />
[...]<br />
for(int y=0; y&lt;=zu_lesen; y++)<br />
{<br />
inPuffer[y] = ReadFile(handle,&amp;inPuffer,zu_lesen,&amp;gelesen,0);<br />
}[/cpp]</p>
</blockquote>
<p>Da steckt noch ein Denkfehler drin!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/749240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/749240</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Mon, 21 Mar 2005 06:36:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Wed, 23 Mar 2005 22:20:49 GMT]]></title><description><![CDATA[<p>Versuch doch mal folgendes.</p>
<pre><code class="language-cpp">HANDLE handle;		//Handle Instanz erzeugen
DCB dcb;                //DCB Instanz erzeugen
COMMTIMEOUTS comtimeout;   //COMTIMEOUT Instanz erzeugen
unsigned long gelesene_bytes;
unsigned char* buffer = new unsigned char[20];  //Empfangesbuffer
unsigned char data;
unsigned char index;

handle = CreateFile(&quot;com1&quot;,GENERIC_WRITE | GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
if (handle != INVALID_HANDLE_VALUE)
{
	GetCommState(handle,&amp;dcb);			//DCB füllen
        GetCommTimeouts(handle,&amp;comtimeout);		//COMTIMEOUTS füllen

        dcb.fBinary = true;
        dcb.Parity = false; // kein parity 
        dcb.fOutxCtsFlow = false;
        dcb.fOutxDsrFlow = false;
        dcb.fDtrControl = DTR_CONTROL_DISABLE;
        dcb.fDsrSensitivity = false;
        dcb.fTXContinueOnXoff = false;
    	dcb.BaudRate = 19200; // Baudrate 19200 muss eventuell geändert werden
        dcb.ByteSize = 8; 
        dcb.fOutX = false;
        dcb.fInX = false;
        dcb.fErrorChar = false;
        dcb.fNull = false;
        dcb.fRtsControl = RTS_CONTROL_DISABLE;
        dcb.fAbortOnError = false;
        dcb.StopBits = ONESTOPBIT;  //Anzahl Stoppbits      

        SetCommState(handle, &amp;dcb);		      //Comstate (DCB) initialisieren	  	
        timeout.ReadTotalTimeoutMultiplier = 3000;    //Wartet 3sec auf den Empfang eines Bytes         
        SetCommTimeouts(handle,&amp;comtimeout);          //Timeouts initialisieren
</code></pre>
<p>Hier die ReadFile Geschichte.<br />
ReadFile liest solange Bytes in den Buffer bis<br />
ein Timeout (nach 3sec) siehe &quot;timeout.ReadTotalTimeoutMultiplier = 3000(milisecunden) weiter Oben&quot; erfolgt, dann wird ReadFile ohne emfpangenes Byte verlassen (hängt nun nicht mehr).<br />
In gelesene_bytes steht nun 0 und die While Schleife wird beendet, in Buffer stehen nun die empfangenen Bytes in index<br />
steht die genaue Anzahl der Empfangenen Bytes -1.</p>
<pre><code class="language-cpp">index = 0;
	do
	{
		ReadFile(handle,&amp;data,1,&amp;gelesene_bytes,NULL); //Handle,zeiger auf Empfangsbuffer,bytes zu lesen(1),zeiger auf Variable gelesene bytes,
    		//Zeiger auf Overlapped Structur-&gt;NULL kein Overlapped(das mit dem Overlapped verstehe ich noch nicht so ganz, kann das mal Jemand genauer erklären) 		
		buffer[index] = data;
		index++;
	}while(gelesene_bytes != 0);        
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/750798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/750798</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Wed, 23 Mar 2005 22:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Wed, 23 Mar 2005 07:55:20 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5237">@hermes</a>:<br />
Overlapped ermöglicht dir im wesentlichen ein Multitasking. Der Trick dabei ist, dass man weitere Operationen ausführen kann und &quot;ReadFile&quot; dabei im Hintergrund läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/750859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/750859</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 23 Mar 2005 07:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Wed, 23 Mar 2005 21:57:14 GMT]]></title><description><![CDATA[<p>Das ist mir klar, nur je mehr ich mich auf der MS Homepage damit beschäftige<br />
desto verwirrender wird das ganze.<br />
Hatt nicht mal einer ein einfaches Beispiel.<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751304</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Wed, 23 Mar 2005 21:57:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Thu, 24 Mar 2005 06:53:56 GMT]]></title><description><![CDATA[<p>hermes schrieb:</p>
<blockquote>
<p>Hatt nicht mal einer ein einfaches Beispiel.<br />
Danke</p>
</blockquote>
<pre><code class="language-cpp">//liest Daten von der RS232 Schnittstelle und schreibt díese in buffer
//bis keine Zeichen mehr empfangen werden.
void ComRead (int ComPort, char* buffer)
{
  int   x,
        timeout;
  DWORD dwBytesRead;
  char  InChar;

  x = 0;
  timeout = 0;
  do
    {
    ReadFile(hComm[ComPort], &amp;InChar, 1, &amp;dwBytesRead, NULL); //nur ein Byte lesen
    Sleep(10);
    timeout++;
    if (dwBytesRead)
      {
      buffer[x] = InChar;
      x++;
      timeout = 0;
      }
    }
  while (timeout&lt;5 &amp;&amp; x&lt;BUFFSIZE-1);
  buffer[x] = '\0';

}
</code></pre>
<p>Ergebnis steht in buffer[], ich lese damit einen &quot;String&quot;, deshalb die Nullterminierung.</p>
<p>Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751400</guid><dc:creator><![CDATA[JoKo]]></dc:creator><pubDate>Thu, 24 Mar 2005 06:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim lesen von COM1 on Thu, 24 Mar 2005 08:02:32 GMT]]></title><description><![CDATA[<p>Ich glaube er meinte ein einfaches Beispiel für die Verwendung der Overlapped-Funktionen (o;</p>
<p>[edit]Wenn ich das nächste Mal ein Bischen Zeit über habe, dann poste ich hier mal ein kleines Beispiel.</p>
<p>So richtig lustig ist der Overlapped-Betrieb eigentlich nur wenn man eh einen externen Thread dafür betreibt.[edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751428</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 24 Mar 2005 08:02:32 GMT</pubDate></item></channel></rss>