<?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[ComPort zu langsam!]]></title><description><![CDATA[<p>Hallo Leute!<br />
Ich verwende die ComPort Library von Dejan Crnila. Leider habe ich probleme die Daten, die ich an den ComPort sende schnell genug zu empfangen. Der Empfangspuffer läuft immer voll...!! Habe schon extra auf große Datenverarbeitungsmaßnahmen verzichtet.<br />
Das dlptest Terminal Programm allerdings ist in der Lage die empfangenen Daten in eienm Memo darzustellen, zu speichern und auch alles Richtig zu machen!!! Warum kann das Borland bzw. dieses Com-Modul nicht?? Gibt es eine Alternative zu dem von mir verwendeten ComPort??? Danke, Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131589/comport-zu-langsam</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 15:18:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131589.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jan 2006 16:26:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ComPort zu langsam! on Wed, 04 Jan 2006 16:26:59 GMT]]></title><description><![CDATA[<p>Hallo Leute!<br />
Ich verwende die ComPort Library von Dejan Crnila. Leider habe ich probleme die Daten, die ich an den ComPort sende schnell genug zu empfangen. Der Empfangspuffer läuft immer voll...!! Habe schon extra auf große Datenverarbeitungsmaßnahmen verzichtet.<br />
Das dlptest Terminal Programm allerdings ist in der Lage die empfangenen Daten in eienm Memo darzustellen, zu speichern und auch alles Richtig zu machen!!! Warum kann das Borland bzw. dieses Com-Modul nicht?? Gibt es eine Alternative zu dem von mir verwendeten ComPort??? Danke, Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956848</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Wed, 04 Jan 2006 16:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Wed, 04 Jan 2006 16:46:26 GMT]]></title><description><![CDATA[<p>Kenne die Library nicht... mehr Infos wären wohl hilfreich.</p>
<blockquote>
<p>Warum kann das Borland</p>
</blockquote>
<p>... Borland kann das... was die Library macht, ist allerdings fraglich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956882</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 04 Jan 2006 16:46:26 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Wed, 04 Jan 2006 17:01:00 GMT]]></title><description><![CDATA[<p>Wie ließt du denn vom ComPort??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956904</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Wed, 04 Jan 2006 17:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Wed, 04 Jan 2006 18:19:07 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe mal MSComm32 zum lesen der Com-SS verwendet<br />
Ich vermute mal bei deiner Komponente kann man irgendwo einstellen,<br />
das bei jedem Zeichen, das ankommt eine Methode der Komponente aufgerufen wird<br />
und sofort ist dein Problem weg</p>
<p>Mfg<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956980</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Wed, 04 Jan 2006 18:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Wed, 04 Jan 2006 21:28:19 GMT]]></title><description><![CDATA[<p>Also alles was ich gemacht habe ist eine Methode zu schreiben für das Ereignis OnRxChar - d.h. wenn etwas empfangen wurde:</p>
<pre><code>void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
{
int a;
for(int i=0; i&lt;Count; i++) {
        ComPort1-&gt;Read(&amp;a,1);
        Puffer[z] = StrToInt(a);
        z++;
        if (z==231 &amp;&amp; connect == 1) {
                int l=0;
                do {
                BPuffer[l] = Puffer[l];
                l++;
                } while (l&lt;256);
                Datenverarbeitung();
                z=0;
        }
    }
}
</code></pre>
<p>Count gibt dabei an, wieviele Zeichen im Eingangspuffer liegen. &quot;a&quot; wird eingelesen vom ComPort und unter Puffer abgespeichert. Dann folgt nur noch Verarbeitung...aber selbst wenn ich die weglasse und einen Breakpoint setze, sehe ich dass ich nicht das empfange, was ich sende! ...doch besagtes Terminal Programm empfängt alles! <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="😞"
    /> Ich schaue mir deinen Tipp mal an. Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957182</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Wed, 04 Jan 2006 21:28:19 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 06:18:54 GMT]]></title><description><![CDATA[<p>Sorry, aber wenn du byteweise daran knabberst<br />
ComPort1-&gt;Read(&amp;a,1);<br />
darfst du keine Wunder bei der Geschwindigkeit erwarten.</p>
<p>Des Weiteren</p>
<p>dann erfolgen noch eine Schleife und eine weitere Funktion?</p>
<p>Besser wäre doch, den gesamten &quot;Empfang&quot; in eine Buffer zu lesen und dann zu bearbeiten. U.U. in einen Thread</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957387</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 05 Jan 2006 06:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 08:59:57 GMT]]></title><description><![CDATA[<p>schon auf die idee gekommen die mitgelieferten beispiele anzuschauen und die hilfe zu lesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957434</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Thu, 05 Jan 2006 08:59:57 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 09:05:11 GMT]]></title><description><![CDATA[<p>Hallo Christian und Co.!<br />
Ziel ist es in erster Linie sehr schnell ankommende Daten abzuspeichern. Angenommen ich würde nun den Befehl</p>
<pre><code>ComPort1-&gt;Read(&amp;a,Count);
</code></pre>
<p>verwenden, wie könnte ich denn dann die im Empfangspuffer vorliegenden Daten gezielt in ein Array schreiben? Soll heißen: erstes empfangenes Byte in Puffer[0], zweites in Puffer[1], etc.??? Oder gibt es da andere Möglichkeiten? Danke für Tipps!!!<br />
P.S. Für die Auswertung der dann gespeicherten Daten könnte ich dann ja ein extra Programm schreiben!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957437</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Thu, 05 Jan 2006 09:05:11 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 09:17:21 GMT]]></title><description><![CDATA[<p>Wenn du einen buffer in der Größe von Count reservierst, stehen die Bytes dann schon in einem Array</p>
<p>int *p=new int[Count]</p>
<p>Dann da rein lesen lassen.<br />
Geht natürlich auch mit einem anderen Datentyp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957446</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 05 Jan 2006 09:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 09:31:03 GMT]]></title><description><![CDATA[<p>benutze doch einfache String-Kopier-Funktionen.. zB strcpy() (da gibts bestimmt noch andere, bessere und schnellere)</p>
<p>und den resourcenhalber würde ich den Typ char zum auslesen empfehlen, oder erwartet ComPort1-&gt;Read(); tatsächlich ein zeiger auf int an erster stelle?</p>
<p>mfg<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957458</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 05 Jan 2006 09:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 09:35:08 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>benutze doch einfache String-Kopier-Funktionen.. zB strcpy() (da gibts bestimmt noch andere, bessere und schnellere)</p>
</blockquote>
<p>Auf jedenfall ist strncpy() sicherer.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957465</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 05 Jan 2006 09:35:08 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 12:24:20 GMT]]></title><description><![CDATA[<p>Shit...will nicht so wie ich!<br />
Zuerst erstelle ich eine Datei:</p>
<pre><code>FileCreate(&quot;Messdaten.txt&quot;);
</code></pre>
<p>und öffne den ComPort:</p>
<pre><code>ComPort1-&gt;Open();
</code></pre>
<p>. Dann sende ich eine Startsequenz</p>
<pre><code>a=0xAA;
ComPort1-&gt;Write(&amp;a,1);
</code></pre>
<p>.<br />
Nun sendet die Gegenstelle Daten, die ich in meiner Datei &quot;Messdaten.txt&quot; speichern will. Dazu folgende Ereignisprozedur für OnRxChar:</p>
<pre><code>char a;
ComPort1-&gt;Read(&amp;a, Count);
AnsiString s = &quot;&quot;;
for(int i=0; i&lt;Count; i++) {
        AppendStr(s,a);
        AppendStr(s,&quot;\r\n&quot;);
}
FileSeek(b,0,2);
FileWrite(b, s.c_str(), s.Length());
FileClose();
</code></pre>
<p>Leider ist die Datei hinterher leer und außerdem möchte ich die Werte als dezimal Zahlen abspeichern. Danke für Tipps.<br />
P.S. Verwende jetzt FileCreate etc., weil LoadList-&gt;Add zu lange dauerte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957701</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Thu, 05 Jan 2006 12:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 13:00:27 GMT]]></title><description><![CDATA[<p>erlich gesagt, habe ich das gefühl du machst dich etwas schwer und suchst an der falschen stelle.<br />
Versuch doch mal mein Beispiel (ungetestet, da ich keinen BCB zur hand habe) nach zu vollziehen und zu komentieren.</p>
<p>aber wie gesagt, muss nicht fehlerfrei sein</p>
<pre><code class="language-cpp">char* cpInputBuf = new char[Count]; 

ComPort1-&gt;Read(cpInputBuf, Count);

   /*        
   AnsiString asBuf;
   for(int x = 0; iCounter &lt; Count; x++)
   {
      asBuf = asBuf + IntToStr((int)cpInputBuf[x]);
   } 

   ListBox1-&gt;Items-&gt;Add(asBuf);*/
ListBox1-&gt;Items-&gt;Add(cpInputBuf);

delete[] InputBuf;  

// vor dem Schliessen der Schnittstelle/Applikation
ListBox1-&gt;Items-&gt;SaveToFile(&quot;meine Daten.log&quot;);
</code></pre>
<p>mfg<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957757</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 05 Jan 2006 13:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 13:40:03 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort!<br />
Noch eine kurze Frage: Wie kann ich den Char in einen Int umwandeln, damit ich nicht diese Hyroglyphen &quot;àÿ' ÿ' ÿE’&quot; bekomme sondern schöne Zahlen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957806</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Thu, 05 Jan 2006 13:40:03 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 13:54:13 GMT]]></title><description><![CDATA[<p>siehe mein Beitrag:</p>
<pre><code class="language-cpp">IntToStr((int)cpInputBuf[x]);
</code></pre>
<p>ein char hat die grösse von 1 Byte.<br />
das heisst es kann den wert von 0 - 255 haben.<br />
die entsprechenden werten von Buchstaben und sonderzeichen kannst du einer ASCII-Tabelle entnehmen<br />
zB entspricht der Buchstabe A = dem Wert 65 Dezimal oder 41 hex (0x41)</p>
<pre><code class="language-cpp">char cBuchstabe;
cBuchstabe = 'A';
ShowMessage(cBuchstabe);  // gibt &quot;A&quot; aus(ohne &quot;&quot;);

cBuchstabe = 0x41;
ShowMessage(cBuchstabe);  // gibt &quot;A&quot; aus(ohne &quot;&quot;);

int i = (int)cBuchstabe;   // mit (int) sagst du, dass cBuchstabe als int angeschaut werden soll (casten) (das sollte aber mit vorsicht gemacht werden!)
ShowMessage(IntToStr(i)); // gibt &quot;65&quot; aus(ohne &quot;&quot;);

oder direkt:
ShowMessage(IntToStr((int)cBuchstabe));
</code></pre>
<p>nimm doch mal die &quot;/<em>&quot; und &quot;</em>/&quot; in meinem Beispiel von vorhin raus und du wirst sehen wie es funktioniert</p>
<p>ich hoffe ich habe es einigermassen erklährt</p>
<p>mfg<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957829</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 05 Jan 2006 13:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 15:06:24 GMT]]></title><description><![CDATA[<p>Danke für die kleine Nachhilfestunde! Das Programm läuft...nur leider reicht es nicht für meine Anwendung! <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>ES IST ZU LANGSAM.</p>
<p>Wenn ich einzelne Bytes empfange läuft alles bestens. Er empfängt sie, zeigt sie im List Fenster an und Speichert sie in der Datei. Doch sende ich viele Daten schnell nacheinander, läuft nix mehr. Der Buffer läuft über und die Daten werden nicht schnell genug ausgelesen und gespeichert! <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>Ich sende 231 Byte alle 1,69ms. Das sollte doch eigentlich zu empfangen sein, oder? Gibt es Tipps?? Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957859</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Thu, 05 Jan 2006 15:06:24 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 15:36:14 GMT]]></title><description><![CDATA[<p>TobiasP schrieb:</p>
<blockquote>
<p>Ich sende 231 Byte alle 1,69ms. Das sollte doch eigentlich zu empfangen sein, oder? Gibt es Tipps?? Danke!</p>
</blockquote>
<p>das sollte locker zu empfangen sein. normale geschwindigkeit 9600 baud (baud = bit/s)<br />
wenn das zu langsam ist, sehe ich nur fehlerquellen in 2 orten.<br />
1. entweder werden die daten einfach nicht richtig abgeholt<br />
2. oder die datenverarbeitung ist zu langsam</p>
<p>also mit dem von mir geschriebenem code mit der listbox sehe ich eigentlich keine Geschwindigkeitsprobleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957893</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 05 Jan 2006 15:36:14 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 15:42:54 GMT]]></title><description><![CDATA[<p>Leider läuft das ganze nicht...weder mit meinem noch mit deinem Code.<br />
Kommt es denn darauf an in welchen Packetgrößen ich die Daten sende? Sprich, lohnt ein Versuch mehr Daten auf einmal zu senden und damit zwischen den einzelnen Datenpacketen mehr Zeit zu haben!?<br />
Ich finde die Sache sehr merkwürdig! ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957904</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Thu, 05 Jan 2006 15:42:54 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 15:48:33 GMT]]></title><description><![CDATA[<p>Was mir gerade noch in den sinn kommt<br />
Da du ja das Erreignis OnRxChar benützt, wird das ja eigentlich 231mal pro 1.69 sekunden aufgerufen.</p>
<p>das könnte das problem sein, wenn man es direkt in eine Datei oder in eine Graphische komponente zwischenspeichern will.</p>
<p>versuch mal</p>
<pre><code class="language-cpp">private:
   AnsiString asReadBuf;

OnRxChar(TObject *Sender, int Count) 
{   
   char* cpInputBuf = new char[Count];

   ComPort1-&gt;Read(cpInputBuf, Count);

   asReadBuf = asReadBuf + AnsiString(cpInputBuf);

   delete[] InputBuf;

   if(asReadBuf.Length() &gt;= 231)     
   {
      AnsiString asOut;
      for(int x = 1; x &lt;= asReadBuf.Length(); x++)
      {  
         asOut = asOut + IntToStr((int)asReadBuf[x]);   
      } 
      ListBox1-&gt;Items-&gt;Add(asOut); 
      asReadBuf = &quot;&quot;;
   }    
}
</code></pre>
<p>mfg<br />
BigNeal</p>
<p>[edit] Rechtschreibung..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957912</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Thu, 05 Jan 2006 15:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Thu, 05 Jan 2006 17:17:11 GMT]]></title><description><![CDATA[<p>Super Einfall!!!!<br />
Immerhin blockiert jetzt nicht mehr alles. Jedoch erkenne ich meine gesendeten Zahlen bei den empfangen kaum wieder. Es tauchen nun negative Zahlen auf und alle Nullen scheinen weg zu sein... Was kann da denn schon wieder falsch sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958021</guid><dc:creator><![CDATA[TobiasP]]></dc:creator><pubDate>Thu, 05 Jan 2006 17:17:11 GMT</pubDate></item><item><title><![CDATA[Reply to ComPort zu langsam! on Fri, 06 Jan 2006 12:28:44 GMT]]></title><description><![CDATA[<p>Hier ist die Fortsetzung des Themas <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-131834.html" rel="nofollow">Binäre Daten interpretieren</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/958648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958648</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Fri, 06 Jan 2006 12:28:44 GMT</pubDate></item></channel></rss>