<?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[Daten sofort in Daten schreiben]]></title><description><![CDATA[<p>ICh schreibe an einem Programm, welches Daten von der rs232 empfängt und in eine Datei schreibt. Da das Programm sehr lange läuft brauche ich einen Befehl der die Daten sofort in die Datei schreibt.</p>
<p>Momentan verwende ich</p>
<p>Dateiobjekt &lt;&lt; Daten;</p>
<p>um die Daten zu schreiben. Allerdings wird die Datei erst gefüllt, wenn die Datei schließt.</p>
<p>Gibt es da noch andere Möglichkeiten</p>
<p>P.S. WinXP auf altem Rechner</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123680/daten-sofort-in-daten-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 18:23:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123680.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Oct 2005 06:43:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 06:43:24 GMT]]></title><description><![CDATA[<p>ICh schreibe an einem Programm, welches Daten von der rs232 empfängt und in eine Datei schreibt. Da das Programm sehr lange läuft brauche ich einen Befehl der die Daten sofort in die Datei schreibt.</p>
<p>Momentan verwende ich</p>
<p>Dateiobjekt &lt;&lt; Daten;</p>
<p>um die Daten zu schreiben. Allerdings wird die Datei erst gefüllt, wenn die Datei schließt.</p>
<p>Gibt es da noch andere Möglichkeiten</p>
<p>P.S. WinXP auf altem Rechner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895773</guid><dc:creator><![CDATA[Zuschauer]]></dc:creator><pubDate>Wed, 19 Oct 2005 06:43:24 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 06:48:32 GMT]]></title><description><![CDATA[<p>Dateiobjekt.flush() übergibt die Daten ans Betriebssystem.</p>
<p>Was damit dann im BS passiert, bleibt diesem überlassen. Das kann den Schreibvorgang weiter verzögern. Danach kann auch nochmal der Plattencache dazwischen stehen, bis die Daten auch wirklich geschrieben sind.</p>
<p>Was ich damit sagen will: flush() ist alles, was Du mit Mitteln des Standards erreichen kannst. Danach gibt es aber noch mehrere Puffer, auf die Du nur mit speziellen API-Funktionen Einfluss hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895777</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 19 Oct 2005 06:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 07:11:00 GMT]]></title><description><![CDATA[<p>vielleicht hilft auch datei schliessen und wieder neu im anfügemodus (ios::app) öffnen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895803</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 19 Oct 2005 07:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 07:21:22 GMT]]></title><description><![CDATA[<p>Jenseit von den C++ IOStreams kann man unter Windows den Cache allerdings umgehen:<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/file_caching.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/file_caching.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/895818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895818</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Wed, 19 Oct 2005 07:21:22 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 07:55:28 GMT]]></title><description><![CDATA[<p>Die Lösung mit flush() geht ganz gut.</p>
<p>Dankö</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895849</guid><dc:creator><![CDATA[Zuschauer]]></dc:creator><pubDate>Wed, 19 Oct 2005 07:55:28 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 11:45:56 GMT]]></title><description><![CDATA[<p>Ich habe mich wohl getäuscht.</p>
<p>Zuerst habe ich es mit</p>
<p>Dateiobjekt.flush()</p>
<p>versucht</p>
<p>dann mit</p>
<p>Dateiobjekt &lt;&lt; Daten &lt;&lt; flush</p>
<p>aber irgendwie schreibt er die Daten nur ab und zu. Was macht denn die Dateiobjekt.write() funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896001</guid><dc:creator><![CDATA[Zuschauer]]></dc:creator><pubDate>Wed, 19 Oct 2005 11:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 11:49:24 GMT]]></title><description><![CDATA[<p>Zuschauer schrieb:</p>
<blockquote>
<p>Ich habe mich wohl getäuscht.</p>
<p>Zuerst habe ich es mit</p>
<p>Dateiobjekt.flush()</p>
<p>versucht</p>
<p>dann mit</p>
<p>Dateiobjekt &lt;&lt; Daten &lt;&lt; flush</p>
<p>aber irgendwie schreibt er die Daten nur ab und zu.</p>
</blockquote>
<p>Kannst du mal einen etwas ausführlicheren Quelltext reinstellen, wo man den Fehler erkennen kann? (btw, wie N4C3R sagte, hast du keine Kontrolle, wo das Betriebssystem die Daten noch zwischenlagert)</p>
<blockquote>
<p>Was macht denn die Dateiobjekt.write() funktion?</p>
</blockquote>
<p>Die schreibt die übergebenen Daten in binärer Form (sprich: dort kommt ein für den Menschen normalerweise nicht lesbares Bitmuster raus), im Gegensatz zur Textform bei operator&lt;&lt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896011</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 19 Oct 2005 11:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 12:23:15 GMT]]></title><description><![CDATA[<p>Die Schleife läuft so lange bis man F12 drückt. ser_ReadString() ließt ein Zeichen von der seriellen Schnittstelle ein (Ist ne spezielle .dll).</p>
<p>Weiterhin gibt es zwei Dateien.</p>
<p>&quot;Daten&quot; Datendatei<br />
&quot;Zeit&quot; Je Frame wird die entsprechnende Uhrzeit geschrieben.</p>
<pre><code class="language-cpp">if( hComPort != INVALID_HANDLE_VALUE )
	{
		std::cout &lt;&lt; &quot;COM&quot; &lt;&lt; tPortData.ePort+1 &lt;&lt; &quot; is open now with &quot; &lt;&lt; tPortData.eBaud &lt;&lt; &quot; BAUD\n&quot;;

		// Get some data
		std::cout &lt;&lt; &quot;Waiting for data on COM&quot; &lt;&lt; tPortData.ePort+1 &lt;&lt; &quot;...\n&quot;;
		std::cout &lt;&lt; systemzeit();

		while( i != 0 )
		{
			cReceived=0x00;
			ser_ReadString( hComPort, &amp;cReceived, 1);
			if( cReceived )
			{
				//std::cout &lt;&lt; &quot;Received Character: &quot; &lt;&lt; static_cast&lt;unsigned char&gt;(cReceived) &lt;&lt; &quot;\n&quot;;
				if( static_cast&lt;unsigned char&gt;(cReceived) == 0xff)
				{
					count++;
				}
				if(count &gt;= 4)
				{
					Zeit &lt;&lt; std::endl &lt;&lt; std::endl &lt;&lt; systemzeit() &lt;&lt; std::endl &lt;&lt; std::flush;
					count=0;
				}
				/Daten &lt;&lt; cReceived &lt;&lt; std::flush;
				//Speichern der Werte in die Datei

				//ser_WriteString( hComPort, &amp;cReceived, 1 );
			}
			if(GetAsyncKeyState( VK_F12 )) //Wenn die F12-Taste gedrückt wurde  //&amp;1 == 1
			{
				i=0;//Abbruchbedingung ist jetzt wahr
			}

		}
		Daten.close();	
		Zeit.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/896033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896033</guid><dc:creator><![CDATA[Zuschauer]]></dc:creator><pubDate>Wed, 19 Oct 2005 12:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 12:34:06 GMT]]></title><description><![CDATA[<p>erstmal was zum drumherum:<br />
* endl flusht afaik den stream automatisch, dahinter wäre kein extra flush notwendig<br />
* ist das / vor dem &quot;Daten&lt;&lt;cRecieved&quot; Absicht?<br />
* wenn du cRecieved sowieso ständig nach unsigned char castest, könntest du doch gleich eine unsigned char Variable dort verwenden<br />
* die letzte if() Abfrage könntest du eigentlich direkt in deine Abbruchbedingung schreiben:</p>
<pre><code class="language-cpp">while(!GetAsyncKeyState(VK_F12))
{
  ...
}
</code></pre>
<p>Dann zu deinem eigentlichen Problem: An welcher Stelle wird denn die Ausgabedatei benötigt (und ist nicht vollständig)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896043</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 19 Oct 2005 12:34:06 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 12:44:22 GMT]]></title><description><![CDATA[<p>Das Programm ist nur vorläufig.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>erstmal was zum drumherum:<br />
* endl flusht afaik den stream automatisch, dahinter wäre kein extra flush notwendig</p>
</blockquote>
<p>War ja nur ein Versuch.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>* ist das / vor dem &quot;Daten&lt;&lt;cRecieved&quot; Absicht?</p>
</blockquote>
<p>Nein, stammt von einem alten Versuch. Hatte vergessen es zu löschen.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>* wenn du cRecieved sowieso ständig nach unsigned char castest, könntest du doch gleich eine unsigned char Variable dort verwenden</p>
</blockquote>
<p>Will ser_ReadString nicht.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>* die letzte if() Abfrage könntest du eigentlich direkt in deine Abbruchbedingung schreiben:</p>
<pre><code class="language-cpp">while(!GetAsyncKeyState(VK_F12))
{
  ...
}
</code></pre>
<p>Dann zu deinem eigentlichen Problem: An welcher Stelle wird denn die Ausgabedatei benötigt (und ist nicht vollständig)?</p>
</blockquote>
<p>Das Problem ist, dass der Rechner mehrere Stunden Daten schreibt und die Daten sollen sofort in die Datei, da die Daten futsch sind wenn der Rechner abstürzt. (Was bei -70°C Aussentemp. und 50mbar Druck durchaus passieren kann)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896058</guid><dc:creator><![CDATA[Zuschauer]]></dc:creator><pubDate>Wed, 19 Oct 2005 12:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 13:38:22 GMT]]></title><description><![CDATA[<p>- präfix-operator verwenden</p>
<p>[cpp]Zeit &lt;&lt; <strong>std::endl &lt;&lt; std::endl</strong> &lt;&lt; systemzeit() &lt;&lt; std::endl &lt;&lt; std::flush;[/cpp]</p>
<p>das bringts nicht. 2 einfache newlines tun es hier auch. erstens bremst es, zweitens ist es völlig unnötig, da ein newline keine information darstellt und somit auch nicht sofort geschrieben werden muss.</p>
<blockquote>
<p>Das Problem ist, dass der Rechner mehrere Stunden Daten schreibt und die Daten sollen sofort in die Datei, da die Daten futsch sind wenn der Rechner abstürzt. (Was bei -70°C Aussentemp. und 50mbar Druck durchaus passieren kann)</p>
</blockquote>
<p>die festplatte ist dann wahrscheinlich auch hin...<br />
wo hat man eigentlich solche verhältnisse? 50 mbar (mega/milli?) sind ja schon ein bisschen extrem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896113</guid><dc:creator><![CDATA[terraner]]></dc:creator><pubDate>Wed, 19 Oct 2005 13:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 13:42:35 GMT]]></title><description><![CDATA[<p>terraner schrieb:</p>
<blockquote>
<p>die festplatte ist dann wahrscheinlich auch hin...<br />
wo hat man eigentlich solche verhältnisse? 50 mbar (mega/milli?) sind ja schon ein bisschen extrem.</p>
</blockquote>
<p>Macht doch nix, es geht um die Theorie <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>@Zuschauer: Wenn Du solche Sicherheit willst, lass die IOstreams sein und nimm z.B. die Lösung, die &quot;niemand&quot; vorgeschlagen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896124</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 19 Oct 2005 13:42:35 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Wed, 19 Oct 2005 20:52:18 GMT]]></title><description><![CDATA[<p>du kannst auch</p>
<pre><code class="language-cpp">stream.setf(ios::unitbuf);
</code></pre>
<p>schreiben. dann ist der stream ungepuffert und flushed automatisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896579</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Wed, 19 Oct 2005 20:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Thu, 20 Oct 2005 13:07:23 GMT]]></title><description><![CDATA[<p>Ich sollte wohl einige Worte zum Einsatzort des Rechners verlieren.</p>
<p>Das Betriebssystem ist auf einer 2GB CF Karte installiert (demnächst 4GB Ultra 2)</p>
<p>Ausserdem ist der Rechner Teil eines Messgerätes, welches Atmosphärische Teilchen (Eiskristalle, Tropfen etc.) in der Atmosphäre misst bzw. &quot;fotografiert&quot;. Das Messgerät ist an einem Flugzeug (M55 / Geophysica) befestigt, welches in ca. 20km Höhe fliegen kann. Und dort herrscht ein Umgebungsdruck von ca. 50millibar (Mega wäre ein großes M) (Normaldruck 1013mbar) und eine Temperatur von -70°C. Unser Rechner ist zwar beheizt <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="😮"
    /> aber es kann immer noch seeehr kalt werden.</p>
<p>Und noch was.</p>
<p>Es geht doch Dateiobjekt.flush();</p>
<p>hatte vergessen die Ansicht zu aktualisieren <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>
<p>Grüße</p>
<p>Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896794</guid><dc:creator><![CDATA[Zuschauer]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:07:23 GMT</pubDate></item><item><title><![CDATA[Reply to Daten sofort in Daten schreiben on Thu, 20 Oct 2005 13:24:37 GMT]]></title><description><![CDATA[<p>Dazu mal eine der ersten Antworten:</p>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Dateiobjekt.flush() übergibt die Daten ans Betriebssystem.</p>
<p>Was damit dann im BS passiert, bleibt diesem überlassen. Das kann den Schreibvorgang weiter verzögern. Danach kann auch nochmal der Plattencache dazwischen stehen, bis die Daten auch wirklich geschrieben sind.</p>
</blockquote>
<p>Und auf dem Weg von der Festplatte zu deinem Anzeigeprogramm hast du auch noch einige Caches, in denen der Dateiinhalt zwischengelagert wird.</p>
<p>PS: Ich wußte gar nicht, daß man Messgeräte auch mit C++ programmieren kann <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="😃"
    /> Aber man lernt ja nie aus <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>
]]></description><link>https://www.c-plusplus.net/forum/post/896804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896804</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:24:37 GMT</pubDate></item></channel></rss>