<?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[Mit C++ auf COM1 zugreifen]]></title><description><![CDATA[<p>Hi,<br />
wir haben in der Schule gerade ein Projekt:<br />
Wir sollen die Temperatur der Bocholter Aa messen. Jetzt habe ich ein Programm, dass auf die Serielle Schnittstelle zugreift und die Daten in eine MySQL Datenbank schicken soll, aber das geht nicht so wircklich</p>
<p>hier mal das C++ Programm:</p>
<p>#include &lt;stdio.h&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;math.h&gt;<br />
#include &lt;string&gt;<br />
#if defined __WIN32__ || _MSC_VER<br />
#include &lt;windows.h&gt;<br />
#endif<br />
#include &quot;include\mysql.h&quot;<br />
#include &lt;fstream&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;time.h&gt;</p>
<p>using namespace std;</p>
<p>void main()<br />
{<br />
BYTE data=0, check=0;<br />
DWORD cnt=0;<br />
HANDLE h_Com;<br />
DCB m_dcb;<br />
COMMTIMEOUTS m_cto;<br />
time_t jetzt=time(NULL);</p>
<p>int y=0;<br />
float h;<br />
double w[100];<br />
char Abfrage[51];</p>
<p>for(y=0;y&lt;100;y++)<br />
{<br />
w[y]=0;<br />
}</p>
<p>MYSQL m_sql;</p>
<p>mysql_init(&amp;m_sql);</p>
<p>printf(&quot;MESSDATENERFASSSUNG!\n\nVerbindung mit der Datenbank HBFM_2_PROJEKT wird aufgebaut&quot;);</p>
<p>for(y=0;y&lt;=2;y++)<br />
{<br />
while (time(NULL)&lt;jetzt+y);<br />
cout&lt;&lt;&quot;.&quot;;<br />
}<br />
cout&lt;&lt;endl&lt;&lt;endl;</p>
<p>cout&lt;&lt;&quot;Verbunden.\n\n&quot;; while (time(NULL)&lt;jetzt+2);<br />
jetzt=time(NULL);</p>
<p>if(!mysql_real_connect(&amp;m_sql,&quot;localhost&quot;,&quot;root&quot;,&quot; &quot;,&quot;hbfm_2_projekt&quot;,0,NULL,0))<br />
{<br />
cout&lt;&lt;&quot;Fehler: &quot;&lt;&lt;mysql_error(&amp;m_sql);<br />
return;<br />
}</p>
<p>cout&lt;&lt;&quot;Daten werden erfasst&quot;;</p>
<p>for(y=0;y&lt;3;y++)<br />
{<br />
while (time(NULL)&lt;jetzt+y);<br />
cout&lt;&lt;&quot;.&quot;;<br />
}</p>
<p>jetzt=time(NULL);</p>
<p>cout&lt;&lt;&quot;Verbindung zum Com-Port wird aufgebaut\n\n&quot;;</p>
<p>h_Com=CreateFile(&quot;//./com1&quot;,<br />
GENERIC_READ | GENERIC_WRITE,<br />
0,<br />
NULL,<br />
OPEN_EXISTING,<br />
FILE_ATTRIBUTE_NORMAL,<br />
NULL);<br />
if(h_Com==INVALID_HANDLE_VALUE) {<br />
cout &lt;&lt; &quot;- COM1 wird schon von einem anderen Programm genutzt! -&quot; &lt;&lt; endl;<br />
system(&quot;PAUSE&quot;);<br />
CloseHandle(h_Com);<br />
exit(1);<br />
}<br />
system(&quot;pause&quot;);</p>
<p>BuildCommDCBAndTimeouts(&quot;COM1: baud=4800 parity=N data=8 stop=1 TO=OFF xon=off odsr=off octs=off dtr=off rts=off idsr=off&quot;<br />
,&amp;m_dcb,&amp;m_cto);<br />
SetCommState(h_Com, &amp;m_dcb);<br />
SetCommTimeouts(h_Com, &amp;m_cto);</p>
<p>WriteFile(h_Com, &amp;data, 1, &amp;cnt, NULL);<br />
ReadFile(h_Com, &amp;data, 1, &amp;cnt, NULL);<br />
if (data==check) {<br />
cout &lt;&lt; &quot;Begin der Transmission!&quot; &lt;&lt; endl;<br />
}<br />
else cout &lt;&lt; &quot;Transmission fehlgeschlagen! µC-Reset machen... &quot; &lt;&lt; endl;</p>
<p>y=0;</p>
<p>do<br />
{<br />
while(time(NULL)&lt;jetzt+1);<br />
ReadFile(h_Com, &amp;data, 1, &amp;cnt, NULL);<br />
cout&lt;&lt;data;<br />
w[y]=double(data);<br />
y+=1;<br />
}while(time(NULL)&lt;jetzt+5);</p>
<p>y=0;<br />
printf(&quot;\nDie Messergebnisse: \n\n&quot;);</p>
<p>for(int i=25;i&gt;=y;y++)<br />
{</p>
<p>printf(&quot; %.2f \370C\n&quot;,w[y]);</p>
<p>sprintf(Abfrage,&quot;Insert Into temperatur(temp) Values (%f);&quot;,w[y]);</p>
<p>mysql_real_query(&amp;m_sql, Abfrage, strlen(Abfrage));<br />
}</p>
<p>CloseHandle(h_Com);</p>
<p>printf(&quot;\nAlle Daten wurden erfolgreich eingef\201gt!\n&quot;);</p>
<p>}</p>
<p>Ich weiß nicht woran das liegt. Die Messwert werden 3052 über mittelt und müssen dann zu 30.52°C umgewandelt werden. Das geht leider nciht. Ich glaube das liegt an &quot;data&quot; und dem BYTE.</p>
<p>Kann mit da einer Helfen??<br />
BIG THX</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183132/mit-c-auf-com1-zugreifen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 03:26:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183132.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Jun 2007 20:54:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mit C++ auf COM1 zugreifen on Fri, 01 Jun 2007 20:54:54 GMT]]></title><description><![CDATA[<p>Hi,<br />
wir haben in der Schule gerade ein Projekt:<br />
Wir sollen die Temperatur der Bocholter Aa messen. Jetzt habe ich ein Programm, dass auf die Serielle Schnittstelle zugreift und die Daten in eine MySQL Datenbank schicken soll, aber das geht nicht so wircklich</p>
<p>hier mal das C++ Programm:</p>
<p>#include &lt;stdio.h&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;math.h&gt;<br />
#include &lt;string&gt;<br />
#if defined __WIN32__ || _MSC_VER<br />
#include &lt;windows.h&gt;<br />
#endif<br />
#include &quot;include\mysql.h&quot;<br />
#include &lt;fstream&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;time.h&gt;</p>
<p>using namespace std;</p>
<p>void main()<br />
{<br />
BYTE data=0, check=0;<br />
DWORD cnt=0;<br />
HANDLE h_Com;<br />
DCB m_dcb;<br />
COMMTIMEOUTS m_cto;<br />
time_t jetzt=time(NULL);</p>
<p>int y=0;<br />
float h;<br />
double w[100];<br />
char Abfrage[51];</p>
<p>for(y=0;y&lt;100;y++)<br />
{<br />
w[y]=0;<br />
}</p>
<p>MYSQL m_sql;</p>
<p>mysql_init(&amp;m_sql);</p>
<p>printf(&quot;MESSDATENERFASSSUNG!\n\nVerbindung mit der Datenbank HBFM_2_PROJEKT wird aufgebaut&quot;);</p>
<p>for(y=0;y&lt;=2;y++)<br />
{<br />
while (time(NULL)&lt;jetzt+y);<br />
cout&lt;&lt;&quot;.&quot;;<br />
}<br />
cout&lt;&lt;endl&lt;&lt;endl;</p>
<p>cout&lt;&lt;&quot;Verbunden.\n\n&quot;; while (time(NULL)&lt;jetzt+2);<br />
jetzt=time(NULL);</p>
<p>if(!mysql_real_connect(&amp;m_sql,&quot;localhost&quot;,&quot;root&quot;,&quot; &quot;,&quot;hbfm_2_projekt&quot;,0,NULL,0))<br />
{<br />
cout&lt;&lt;&quot;Fehler: &quot;&lt;&lt;mysql_error(&amp;m_sql);<br />
return;<br />
}</p>
<p>cout&lt;&lt;&quot;Daten werden erfasst&quot;;</p>
<p>for(y=0;y&lt;3;y++)<br />
{<br />
while (time(NULL)&lt;jetzt+y);<br />
cout&lt;&lt;&quot;.&quot;;<br />
}</p>
<p>jetzt=time(NULL);</p>
<p>cout&lt;&lt;&quot;Verbindung zum Com-Port wird aufgebaut\n\n&quot;;</p>
<p>h_Com=CreateFile(&quot;//./com1&quot;,<br />
GENERIC_READ | GENERIC_WRITE,<br />
0,<br />
NULL,<br />
OPEN_EXISTING,<br />
FILE_ATTRIBUTE_NORMAL,<br />
NULL);<br />
if(h_Com==INVALID_HANDLE_VALUE) {<br />
cout &lt;&lt; &quot;- COM1 wird schon von einem anderen Programm genutzt! -&quot; &lt;&lt; endl;<br />
system(&quot;PAUSE&quot;);<br />
CloseHandle(h_Com);<br />
exit(1);<br />
}<br />
system(&quot;pause&quot;);</p>
<p>BuildCommDCBAndTimeouts(&quot;COM1: baud=4800 parity=N data=8 stop=1 TO=OFF xon=off odsr=off octs=off dtr=off rts=off idsr=off&quot;<br />
,&amp;m_dcb,&amp;m_cto);<br />
SetCommState(h_Com, &amp;m_dcb);<br />
SetCommTimeouts(h_Com, &amp;m_cto);</p>
<p>WriteFile(h_Com, &amp;data, 1, &amp;cnt, NULL);<br />
ReadFile(h_Com, &amp;data, 1, &amp;cnt, NULL);<br />
if (data==check) {<br />
cout &lt;&lt; &quot;Begin der Transmission!&quot; &lt;&lt; endl;<br />
}<br />
else cout &lt;&lt; &quot;Transmission fehlgeschlagen! µC-Reset machen... &quot; &lt;&lt; endl;</p>
<p>y=0;</p>
<p>do<br />
{<br />
while(time(NULL)&lt;jetzt+1);<br />
ReadFile(h_Com, &amp;data, 1, &amp;cnt, NULL);<br />
cout&lt;&lt;data;<br />
w[y]=double(data);<br />
y+=1;<br />
}while(time(NULL)&lt;jetzt+5);</p>
<p>y=0;<br />
printf(&quot;\nDie Messergebnisse: \n\n&quot;);</p>
<p>for(int i=25;i&gt;=y;y++)<br />
{</p>
<p>printf(&quot; %.2f \370C\n&quot;,w[y]);</p>
<p>sprintf(Abfrage,&quot;Insert Into temperatur(temp) Values (%f);&quot;,w[y]);</p>
<p>mysql_real_query(&amp;m_sql, Abfrage, strlen(Abfrage));<br />
}</p>
<p>CloseHandle(h_Com);</p>
<p>printf(&quot;\nAlle Daten wurden erfolgreich eingef\201gt!\n&quot;);</p>
<p>}</p>
<p>Ich weiß nicht woran das liegt. Die Messwert werden 3052 über mittelt und müssen dann zu 30.52°C umgewandelt werden. Das geht leider nciht. Ich glaube das liegt an &quot;data&quot; und dem BYTE.</p>
<p>Kann mit da einer Helfen??<br />
BIG THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296924</guid><dc:creator><![CDATA[Sniffer87]]></dc:creator><pubDate>Fri, 01 Jun 2007 20:54:54 GMT</pubDate></item></channel></rss>