<?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[Zähl &#x2F; Denk fehler?]]></title><description><![CDATA[<p>Moin, moin..</p>
<p>ich bin glaub ich gerade etwas blind was meinen code angeht.</p>
<p>Ich Programmier ein kleines Plugin für TeamSpeak, das die Serielle schnittstelle abhört.</p>
<p>Über einen Arduino uno lasse ich 2 Potentiometer und 1 Button abfragen, und sie in folgender Form über die Serielle schnittstelle ausgeben.</p>
<p>&quot;P500,P500,B0\r\n&quot; wobei der Buchstabe für Potentiometer oder Button steht, und die zahl dahinter für den momentanen wert. am abschluss schicke ich noch CRLF hinterher, damit es auch mit z.b. Putty lesbar bleibt, und ich das Zeilenende erkenne.</p>
<p>Jetz hab ich allerdings das Problem, das die Schleife die ich Programmiert hab irgendwie alle paar mal ein Drittes Potentiometer und / oder einen Zweiten Button findet. Ich werd wahnsinnig dabei das problem zu finden, da ich meiner meinung nach jedesmal wenn ein CRLF gefunden wird die momentane zeile prüfe, und anschließend lösche. Somit dürften nie mehr als die Zwei Potentiometer und ein Button in der Zeile stehen.</p>
<p>hier mal der Code.</p>
<pre><code class="language-cpp">while (1) {
		if (serial.Open(6, 9600))
		{
			while (serial.ReadDataWaiting()) {
				char* lpBuffer = new char[500];
				int nBytesRead = serial.ReadData(lpBuffer, 500);
				for (int i=0; i&lt; nBytesRead; i++) {
					if (lpBuffer[i] == '\r' &amp;&amp; lpBuffer[i+1] == '\n') {
							char * pch;
							pch = strtok(line,&quot;,&quot;);
							while (pch != NULL)
							{
								if (pch[0] == 'P')
								{
									potCount++;
									char test[500];
									//val = atoi(++pch);
									//if (val &gt;= max) {
										sprintf(test,&quot;Potentiometer %i: &quot;,potCount);
										ts3Functions.printMessageToCurrentTab(test);
									//}
								} else if (pch[0] == 'B') {
									char test[500];
									buttonCount++;
									//val = atoi(++pch);
									sprintf(test,&quot;Button %i: &quot;,buttonCount);
									ts3Functions.printMessageToCurrentTab(test);
								}
								pch = strtok(NULL,&quot;,&quot;);

							}
							potCount = 0;
							buttonCount = 0;
							line[0] = NULL;
					} else if (lpBuffer[i] == '\r' || lpBuffer[i] == '\n') {} else {
					sprintf(line + strlen(line),&quot;%c&quot;,lpBuffer[i]);
					}
				}

				delete []lpBuffer;

			}

		}
		else
		{
			ts3Functions.printMessageToCurrentTab(&quot;Fhler beim Öffnen des COM Ports&quot;);
			break;
		}
	}
</code></pre>
<p>Ich hoffe jemand kann mir weiter helfen..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293339/zähl-denk-fehler</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 09:59:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293339.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Sep 2011 20:11:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zähl &#x2F; Denk fehler? on Fri, 30 Sep 2011 20:11:38 GMT]]></title><description><![CDATA[<p>Moin, moin..</p>
<p>ich bin glaub ich gerade etwas blind was meinen code angeht.</p>
<p>Ich Programmier ein kleines Plugin für TeamSpeak, das die Serielle schnittstelle abhört.</p>
<p>Über einen Arduino uno lasse ich 2 Potentiometer und 1 Button abfragen, und sie in folgender Form über die Serielle schnittstelle ausgeben.</p>
<p>&quot;P500,P500,B0\r\n&quot; wobei der Buchstabe für Potentiometer oder Button steht, und die zahl dahinter für den momentanen wert. am abschluss schicke ich noch CRLF hinterher, damit es auch mit z.b. Putty lesbar bleibt, und ich das Zeilenende erkenne.</p>
<p>Jetz hab ich allerdings das Problem, das die Schleife die ich Programmiert hab irgendwie alle paar mal ein Drittes Potentiometer und / oder einen Zweiten Button findet. Ich werd wahnsinnig dabei das problem zu finden, da ich meiner meinung nach jedesmal wenn ein CRLF gefunden wird die momentane zeile prüfe, und anschließend lösche. Somit dürften nie mehr als die Zwei Potentiometer und ein Button in der Zeile stehen.</p>
<p>hier mal der Code.</p>
<pre><code class="language-cpp">while (1) {
		if (serial.Open(6, 9600))
		{
			while (serial.ReadDataWaiting()) {
				char* lpBuffer = new char[500];
				int nBytesRead = serial.ReadData(lpBuffer, 500);
				for (int i=0; i&lt; nBytesRead; i++) {
					if (lpBuffer[i] == '\r' &amp;&amp; lpBuffer[i+1] == '\n') {
							char * pch;
							pch = strtok(line,&quot;,&quot;);
							while (pch != NULL)
							{
								if (pch[0] == 'P')
								{
									potCount++;
									char test[500];
									//val = atoi(++pch);
									//if (val &gt;= max) {
										sprintf(test,&quot;Potentiometer %i: &quot;,potCount);
										ts3Functions.printMessageToCurrentTab(test);
									//}
								} else if (pch[0] == 'B') {
									char test[500];
									buttonCount++;
									//val = atoi(++pch);
									sprintf(test,&quot;Button %i: &quot;,buttonCount);
									ts3Functions.printMessageToCurrentTab(test);
								}
								pch = strtok(NULL,&quot;,&quot;);

							}
							potCount = 0;
							buttonCount = 0;
							line[0] = NULL;
					} else if (lpBuffer[i] == '\r' || lpBuffer[i] == '\n') {} else {
					sprintf(line + strlen(line),&quot;%c&quot;,lpBuffer[i]);
					}
				}

				delete []lpBuffer;

			}

		}
		else
		{
			ts3Functions.printMessageToCurrentTab(&quot;Fhler beim Öffnen des COM Ports&quot;);
			break;
		}
	}
</code></pre>
<p>Ich hoffe jemand kann mir weiter helfen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125663</guid><dc:creator><![CDATA[kubax]]></dc:creator><pubDate>Fri, 30 Sep 2011 20:11:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zähl &#x2F; Denk fehler? on Fri, 30 Sep 2011 20:19:07 GMT]]></title><description><![CDATA[<p>Kannst du mal testweise die ankommenden Daten ausgeben, bevor du sie durch deine Verteilungsschleife schickst?<br />
Ansonsten sieht dein Code reichlich unübersichtlich aus - und ist (von new/delete abgesehen) reines C (und vermutlich selbst aus Sicht eines C-Programmierers katastrophal).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125665</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 30 Sep 2011 20:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zähl &#x2F; Denk fehler? on Fri, 30 Sep 2011 20:41:12 GMT]]></title><description><![CDATA[<p>Das der Code mit sicherheit keinen Schönheits Award gewinnen wird ist mir auch bewust.</p>
<p>Ich bin aber auch kein Programmierer, also kann ich damit leben <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>Das mit der Ausgabe hab ich auch schon Probiert, aber irgendwie schmiert das Plugin jedesmal ab, wenn ich mit printMessageToCurrentTab den lpBuffer ausgeben will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125676</guid><dc:creator><![CDATA[kubax]]></dc:creator><pubDate>Fri, 30 Sep 2011 20:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zähl &#x2F; Denk fehler? on Fri, 30 Sep 2011 20:45:35 GMT]]></title><description><![CDATA[<p>kubax schrieb:</p>
<blockquote>
<p>Das der Code mit sicherheit keinen Schönheits Award gewinnen wird ist mir auch bewust.</p>
<p>Ich bin aber auch kein Programmierer, also kann ich damit leben <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>
</blockquote>
<p>Aber wir nicht - und wenn wir versuchen sollen dir zu helfen, müssen wir zumindest den Code verstehen können. Wenn du das (als Autor) nicht mal selber schaffst, wie soll das ein Außenstehender?</p>
<blockquote>
<p>Das mit der Ausgabe hab ich auch schon Probiert, aber irgendwie schmiert das Plugin jedesmal ab, wenn ich mit printMessageToCurrentTab den lpBuffer ausgeben will.</p>
</blockquote>
<p>Vermutlich ist der empfangene String nicht nullterminiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125677</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 30 Sep 2011 20:45:35 GMT</pubDate></item></channel></rss>