<?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[CSerialMFC Problem]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>im Bezug auf die Funktion Open der Klasse CSerialWnd<br />
hab ich eine Frage.<br />
Dort muss man 3 Parameter übergeben :</p>
<pre><code>LONG OPEN LPCTSTR lpszDevive,HWND hwndDest,UNIT nComMsg =WM_NULL)
</code></pre>
<p>Ich habe<br />
1 Eine Instanz der Klasse CSerialWnd gebildet (serialmfc)<br />
2 Die Funktion mit folgenden Parametern gefüllt:</p>
<pre><code class="language-cpp">serialwnd.Open(_T(&quot;COM1&quot;), GetSafeHwnd(), WM_NULL);
</code></pre>
<p>diese Parameter habe ich im Forum gefunden.<br />
Der erste Parameter ist klar aber die anderen ?<br />
Gruß<br />
Sven</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/153725/cserialmfc-problem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 09:52:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/153725.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Jul 2006 06:57:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 09:36:37 GMT]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>im Bezug auf die Funktion Open der Klasse CSerialWnd<br />
hab ich eine Frage.<br />
Dort muss man 3 Parameter übergeben :</p>
<pre><code>LONG OPEN LPCTSTR lpszDevive,HWND hwndDest,UNIT nComMsg =WM_NULL)
</code></pre>
<p>Ich habe<br />
1 Eine Instanz der Klasse CSerialWnd gebildet (serialmfc)<br />
2 Die Funktion mit folgenden Parametern gefüllt:</p>
<pre><code class="language-cpp">serialwnd.Open(_T(&quot;COM1&quot;), GetSafeHwnd(), WM_NULL);
</code></pre>
<p>diese Parameter habe ich im Forum gefunden.<br />
Der erste Parameter ist klar aber die anderen ?<br />
Gruß<br />
Sven</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100762</guid><dc:creator><![CDATA[Sveniemenie]]></dc:creator><pubDate>Thu, 20 Jul 2006 09:36:37 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 07:01:05 GMT]]></title><description><![CDATA[<p>Diese Implementierung von CSerialWnd versendet IMHO auch Nachrichten wenn Daten entreffen. Dazu wird hier ein Fenster angegeben das diese Nachrichten erhalten soll.</p>
<p>Aber ich mag mich irren. Lange her, dass ich mit dieser Klasse gearbeitet habe.<br />
Lies doch mal den Sourcecode...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100765</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 20 Jul 2006 07:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 07:21:31 GMT]]></title><description><![CDATA[<p>Aus dem Quellcode werd ich nicht schlau ,was für ein Fenster denn?<br />
Das ist glaub ich das Problem ich weiß nicht, was mit &quot;Fenster&quot; gemeint ist <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 />
Meine Dialogfeldanwendung hat nur ein Anzeigefenster, ist das gemeint?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100787</guid><dc:creator><![CDATA[Sveniemenie]]></dc:creator><pubDate>Thu, 20 Jul 2006 07:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 08:59:15 GMT]]></title><description><![CDATA[<p>Fenster/Window und ja ein Dialog ist auch ein Window/Fenster...</p>
<p>und was ist Dir am Code nicht klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100866</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 20 Jul 2006 08:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 10:19:40 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">serialmfc.Open(_T(&quot;COM1&quot;), this, WM_NULL); //in der OnInitDialog

LRESULT CSven_Dlg::OnSerialMsg (WPARAM wParam, LPARAM /*lParam*/) 
{    

const int nBuflen = sizeof(abBuffer)-1;	
	do{												
		serialmfc.Read(&amp;abBuffer,nBuflen,&amp;dwBytesRead);													
		if ( dwBytesRead &gt; 0)														{

                           abBuffer[dwBytesRead]= '\0';
			m_anzeige=abBuffer;								
		}

	}
	while (dwBytesRead == nBuflen); // Schleifenbedingung

UpdateData(false);

//serialmfc.Close();
memset(abBuffer, 0, sizeof(abBuffer));
//serialmfc.Open(_T(&quot;COM1&quot;), this, WM_NULL);	

    return 0; 

}
</code></pre>
<p>m_anzeige ist an ein Eingabefeld gebunden.<br />
Mein Problem ist nun, das die Klasse immer nur 8 Zeichen zur Zeit anzeigen kann.<br />
Dies hat zur folge das bei zum beispiel 15 Zeichen die Anzeige so schnell aktualisiert wird, dass ich nur noch die letzten Zeichen der Übertragung sehe<br />
und die davor nur &quot;blitzartig&quot; <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100897</guid><dc:creator><![CDATA[Sveniemenie]]></dc:creator><pubDate>Thu, 20 Jul 2006 10:19:40 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 10:07:55 GMT]]></title><description><![CDATA[<p>Ich versteh das einfach nicht,<br />
mit der Klasse CSerial kann ich die Daten komplett auslesen,<br />
aber da hab ich die Message Funktion nicht .<br />
Hilfeeeee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100939</guid><dc:creator><![CDATA[Sveniemenie]]></dc:creator><pubDate>Thu, 20 Jul 2006 10:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 10:11:07 GMT]]></title><description><![CDATA[<p>Sveniemenie schrieb:</p>
<blockquote>
<p>m_anzeige ist an ein Eingabefeld gebunden.<br />
Mein Problem ist nun, das die Klasse immer nur 8 Zeichen zur Zeit anzeigen kann.<br />
Dies hat zur folge das bei zum beispiel 15 Zeichen die Anzeige so schnell aktualisiert wird, dass ich nur noch die letzten Zeichen der Übertragung sehe<br />
und die davor nur &quot;blitzartig&quot; <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="🙄"
    /></p>
</blockquote>
<p>Martin hat Recht. Die Klasse CSerialMFC verwendet eine Nachricht (wenn ich mich nicht irre ist das WM_NULL), die dann an ein Fenster geschickt wird. Du musst also der Klasse das Fenster mitteilen, welches die Nachricht erhalten soll. In dieser Fensterklasse richtest Du dann in der Messagemap eine Behandlungsroutine ein, die dann auch die Message reagiert (das ist dann die Methode OnSerialMsg mit dem Rückgabewert LRESULT).<br />
Zum zweiten Problem:<br />
Warum auch immer wird nach dem erfolgreichen Übertrage aller Zeichen nochmal eine Message ausgelöst, der Puffer ist allerdings bei der letzten Message leer. Warum das so ist habe ich hier auch schon gefragt, es hat noch keiner beantworten können. Mach mal ein TRACE in die Nachrichtenbehandlungsroutine rein und sende dann mal nur ein Zeichen an die Schnittstelle. Du wirst feststellen das die WM_NULL zweimal ausgelöst wird. Vermutlich wird dann nur &lt;CR&gt; und &lt;LF&gt; übertragen (ist aber reine Spekulation).<br />
Versuch mal das hier:</p>
<pre><code class="language-cpp">serialmfc.Open(_T(&quot;COM1&quot;), this, WM_NULL); //in der OnInitDialog

LRESULT CFacharbeit_Sven_GruendahlDlg::OnSerialMsg (WPARAM wParam, LPARAM /*lParam*/) 
{    
CString   m_anzeige_temp;
const int nBuflen = sizeof(abBuffer)-1;    
    do{                                                
        serialmfc.Read(&amp;abBuffer,nBuflen,&amp;dwBytesRead);                                                    
        if ( dwBytesRead &gt; 0)
           {
              abBuffer[dwBytesRead]= '\0';
              m_anzeige_temp=abBuffer;                                
           }

      }
      while (dwBytesRead == nBuflen); // Schleifenbedingung

if (m_anzeige_temp.GetLength()&gt;0)
     {
       m_anzeige=m_anzeige_temp; 
       UpdateData(false);
     }

    return 0; 

}
</code></pre>
<p>Dann sollte zumindest der Wert im Editfeld stehenbleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100944</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Thu, 20 Jul 2006 10:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 10:53:24 GMT]]></title><description><![CDATA[<p>AndyDD schrieb:</p>
<blockquote>
<p>Warum auch immer wird nach dem erfolgreichen Übertrage aller Zeichen nochmal eine Message ausgelöst, der Puffer ist allerdings bei der letzten Message leer. Warum das so ist habe ich hier auch schon gefragt, es hat noch keiner beantworten können. Mach mal ein TRACE in die Nachrichtenbehandlungsroutine rein und sende dann mal nur ein Zeichen an die Schnittstelle. Du wirst feststellen das die WM_NULL zweimal ausgelöst wird. Vermutlich wird dann nur &lt;CR&gt; und &lt;LF&gt; übertragen (ist aber reine Spekulation)..</p>
</blockquote>
<p>Tja ich kann dir sagen warum die zweite Message ausgelöst wird:<br />
Es können nach meinen Tests nur 8 Zeichen zur Zeit angezeigt werden,<br />
dann wird ne neue Message rausgeschickt und die nächsten Zeichen(7) werden<br />
dargestellt.(wenn zum Beispiel 15 Zeichen anstehen)<br />
Leider ist dies ein Vorgang der so schnell geht, das man nur die letzten<br />
Zeichen der Übertragung sieht!<br />
Vieleicht kann man hier eine &quot;Bremse&quot; einbauen.<br />
Zum Beispiel mit Sleep() ?? <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101010</guid><dc:creator><![CDATA[Sveniemenie]]></dc:creator><pubDate>Thu, 20 Jul 2006 10:53:24 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 13:54:21 GMT]]></title><description><![CDATA[<p>Sveniemenie schrieb:</p>
<blockquote>
<p>Tja ich kann dir sagen warum die zweite Message ausgelöst wird:<br />
Es können nach meinen Tests nur 8 Zeichen zur Zeit angezeigt werden,<br />
dann wird ne neue Message rausgeschickt und die nächsten Zeichen(7) werden<br />
dargestellt.(wenn zum Beispiel 15 Zeichen anstehen)<br />
Leider ist dies ein Vorgang der so schnell geht, das man nur die letzten<br />
Zeichen der Übertragung sieht!<br />
Vieleicht kann man hier eine &quot;Bremse&quot; einbauen.<br />
Zum Beispiel mit Sleep() ?? <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="🙄"
    /></p>
</blockquote>
<p>Das kann ich nicht bestätigen. Schicke mal ein Zeichen an die Schnittstelle und Du wirst sehen, dass die Message auch zweimal kommt. Anderes Beispiel: ich habe eine Waage mit seriellem Anschluss. Pro Messwert werden 14 oder 15 Zeichen übertragen. Außer den beiden letzten Zeichen &lt;CR&gt; und &lt;LF&gt; steht aber alles in einem String (d.h. es stehen effektiv 12 oder 13 Zeichen im String).<br />
Anmerkung: bin außerdem kein Freund von Sleep-Befehlen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101271</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Thu, 20 Jul 2006 13:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 13:59:15 GMT]]></title><description><![CDATA[<p>Sveniemenie schrieb:</p>
<blockquote>
<p>Es können nach meinen Tests nur 8 Zeichen zur Zeit angezeigt werden,<br />
dann wird ne neue Message rausgeschickt und die nächsten Zeichen(7) werden<br />
dargestellt.(wenn zum Beispiel 15 Zeichen anstehen)</p>
</blockquote>
<p>Wenn du den Datenstrom in Pakete bestimmter Größe aufteilen musst, dann musst du selbst dafür sorgen, dass du erkennen kannst, wo ein Paket aufhört und das nächste anfängt. Allgemein nennt man das Protokoll.</p>
<p>Solange du nur Strings verschickst, würde sich ein Nullzeichen als Trennzeichen anbieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101277</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 20 Jul 2006 13:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 14:14:55 GMT]]></title><description><![CDATA[<p>Ne ich hab den Datenstrom nicht aufgeteilt.<br />
Im Anzeigefeld erscheinen nur immer die letzten Zeichen des gesendeten Strings.<br />
Mir kommt das vor als ob er 8 Zeichen ins Anzeigefeld schrebt und diese dann überschreibt hmm <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/1101284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101284</guid><dc:creator><![CDATA[Sveniemenie]]></dc:creator><pubDate>Thu, 20 Jul 2006 14:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 14:34:46 GMT]]></title><description><![CDATA[<p>Vielleicht holt die Funktion die Daten in 8er-Blöcken aus dem Schnittstellenpuffer. Nur wenn mein 14stelliger String übertragen wird so steht der auch vollständig der Variable ab_buffer. Nach dem zweiten Auslösen der Message ist ab_buffer immer leer.<br />
Wenn ich ab_buffer in einen CString formatiere, so fehlen die letzten beiden Zeichen &lt;CR&gt; und &lt;LF&gt; immer. Die Länge des CStrings ist also nach der ersten Message 12 und nach der 2. Message 0.<br />
Genau so ist das auch bei einem Digitalmultimeter was ich habe. Das gibt in dem einen Messbereich 4 Zeichen für den Messwert und ein Zeichen für die Einheit raus. Mit den beiden Ende-Zeichen sind das insgesamt 7 Zeichen. Da kommt die Message auch zweimal, beim ersten mal mit vollständigem String, beim 2. Mal mit leerem String.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101299</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Thu, 20 Jul 2006 14:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to CSerialMFC Problem on Thu, 20 Jul 2006 14:43:12 GMT]]></title><description><![CDATA[<p>Kannst du mir mal deinen Quellcode von der Routine die den Speicher ausliest und in die Anzeigevariable übergibt zeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101307</guid><dc:creator><![CDATA[Sveniemenie]]></dc:creator><pubDate>Thu, 20 Jul 2006 14:43:12 GMT</pubDate></item></channel></rss>