<?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[Systemzeit]]></title><description><![CDATA[<p>Hallo zusammen,<br />
Ich muss in einer Anwendung eine bestimmte Funktion (laufzeit unbestimmt/unbestimmbar) eine genaue Zeitlang aufrufen, z.B. 1 Sekunde, dazu hab' ich folgenden Code entwichelt:</p>
<pre><code class="language-cpp">int __fastcall TRegler::StartRegel(void)
{
// Reglerfunktion
  if(this-&gt;ComBus)
    {//Profibus
    int i;
    SYSTEMTIME time;                   // Strukturdeklaration für das Einlesen der Systemzeit
    GetSystemTime(&amp;time);                // einlesen der Systemzeit
    // for so lange durchzählen lassen, bis letzte systemzeit+Messzeit erreicht ist.
    for (i=time.wMilliseconds; i&lt;=(time.wMilliseconds+this-&gt;MeassureTime); i++)
      {
      Application-&gt;ProcessMessages();
      Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);

      }
    ShowMessage(IntToStr(time.wMilliseconds) + &quot; ---- &quot; + IntToStr(i));
    }
  else
    {//CAN-Bus
    // Der CAN-Klasse den Funktionspointer übermitteln
    }
}
</code></pre>
<p>Wenn ComBus=1 ist und this-&gt;MeassureTime=1000, dauert die for, ziemlich genau 10Sekunden, wenn ich aber <strong>Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);</strong> auskommentiere, dann gehts ziemlich genau 1 Sekunde bis die Meldung erscheint, wesshalb bloss?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/92203/systemzeit</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 03:36:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/92203.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Nov 2004 10:16:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 10:16:42 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
Ich muss in einer Anwendung eine bestimmte Funktion (laufzeit unbestimmt/unbestimmbar) eine genaue Zeitlang aufrufen, z.B. 1 Sekunde, dazu hab' ich folgenden Code entwichelt:</p>
<pre><code class="language-cpp">int __fastcall TRegler::StartRegel(void)
{
// Reglerfunktion
  if(this-&gt;ComBus)
    {//Profibus
    int i;
    SYSTEMTIME time;                   // Strukturdeklaration für das Einlesen der Systemzeit
    GetSystemTime(&amp;time);                // einlesen der Systemzeit
    // for so lange durchzählen lassen, bis letzte systemzeit+Messzeit erreicht ist.
    for (i=time.wMilliseconds; i&lt;=(time.wMilliseconds+this-&gt;MeassureTime); i++)
      {
      Application-&gt;ProcessMessages();
      Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);

      }
    ShowMessage(IntToStr(time.wMilliseconds) + &quot; ---- &quot; + IntToStr(i));
    }
  else
    {//CAN-Bus
    // Der CAN-Klasse den Funktionspointer übermitteln
    }
}
</code></pre>
<p>Wenn ComBus=1 ist und this-&gt;MeassureTime=1000, dauert die for, ziemlich genau 10Sekunden, wenn ich aber <strong>Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);</strong> auskommentiere, dann gehts ziemlich genau 1 Sekunde bis die Meldung erscheint, wesshalb bloss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/653012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653012</guid><dc:creator><![CDATA[roN]]></dc:creator><pubDate>Tue, 16 Nov 2004 10:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 10:41:22 GMT]]></title><description><![CDATA[<p>Ich würde sagen, das &quot;Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);&quot; ziemlich viel zu tun hat und zwar weil du die Sie ja auch &quot;MeassureTime&quot; oft aufrufst.</p>
<p>Ist doch klar, das das einen Unterschied macht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/653027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653027</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Tue, 16 Nov 2004 10:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 10:48:47 GMT]]></title><description><![CDATA[<p>Wäre hier eine while-Schleife nicht die bessere Wahl? Abbruchbedingung ist, wenn die Zeit erreicht ist, anstatt in Millisekundenschritten eine<br />
for-Schleife zu durchlaufen. Ich denke PuppetMaster2k hat schon recht mit seiner Vermutung.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/653035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653035</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 16 Nov 2004 10:48:47 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 10:59:53 GMT]]></title><description><![CDATA[<p>Wenn du die Zeit messen bzw. abfragen möchtest, dann musst du dir eine Startzeit holen und dann in einem Intervall die aktuelle Zeit abfragen. Anders wird das wohl nicht funktionieren.</p>
<p>Ungefähr so. (Ist jetzt nur zur Veranschaulichung. Ob das so funktioniert weiß ichnicht, kann das hier nicht testen!)</p>
<pre><code class="language-cpp">int __fastcall TRegler::StartRegel(void)
{
// Reglerfunktion
  if(this-&gt;ComBus)
    {//Profibus
    int i;
    SYSTEMTIME startzeit, aktZeit;                   // Strukturdeklaration für das Einlesen der Systemzeit
    GetSystemTime(&amp;startzeit);                // einlesen der Systemzeit
    startzeit.wMilliseconds += MeassureTime;
    while(aktZeit &lt; startzeit)
      {
      Application-&gt;ProcessMessages();
      Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);
      GetSystemTime(&amp;aktZeit);
      }
    ShowMessage(IntToStr(time.wMilliseconds) + &quot; ---- &quot; + IntToStr(i));
    }
  else
    {//CAN-Bus
    // Der CAN-Klasse den Funktionspointer übermitteln
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/653038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653038</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Tue, 16 Nov 2004 10:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 12:55:30 GMT]]></title><description><![CDATA[<p>Ok, hab' jetzt folgenden Code:</p>
<pre><code class="language-cpp">int __fastcall TRegler::StartRegel(void)
{
// Reglerfunktion
  if(this-&gt;ComBus)
    {//Profibus
    int ms_int=0;                                   // Zeit gemessen (verstrichen in der Schleife)
    int i;                                          // Deklaration der Zählvariable
    SYSTEMTIME Messzeit, aktZeit;                   // Strukturdeklaration für das Einlesen der Systemzeit
    aktZeit.wMilliseconds=0;                        // Initialisierung damit er min. einmal durch die while läuft.
    GetSystemTime(&amp;Messzeit);                       // einlesen der Systemzeit
    Messzeit.wMilliseconds += MeassureTime;         // zur eingelesenen Systemzeit, die Messzeit addieren.
    while (ms_int &lt; Messzeit.wMilliseconds)         // warten, bis die aktuelle Zeit, grösser ist, als die Messzeit.
      {
      Application-&gt;ProcessMessages();
      Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);
      GetSystemTime(&amp;aktZeit);
      ms_int+=aktZeit.wMilliseconds;
      i++;
      }
    ShowMessage(IntToStr(ms_int) + &quot; ---- &quot; + IntToStr(Messzeit.wMilliseconds)+&quot;\nAnzahl Durchläufe (Übermittlungen)&quot;+IntToStr(i));
    }
  else
    {//CAN-Bus
    // Der CAN-Klasse den Funktionspointer übermitteln
    }
}
</code></pre>
<p>es dauert aber nie 10 Sekunden wenn ich MeassureTime auf=10000 setze..., was ist da noch falsch? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/653133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653133</guid><dc:creator><![CDATA[roN]]></dc:creator><pubDate>Tue, 16 Nov 2004 12:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 13:25:05 GMT]]></title><description><![CDATA[<p>aha, ich musste einfach die sekunden auch noch einbeziehen, und dann funktionierts super... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/653162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653162</guid><dc:creator><![CDATA[roN]]></dc:creator><pubDate>Tue, 16 Nov 2004 13:25:05 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 13:30:37 GMT]]></title><description><![CDATA[<p>Kommt mir ziemlich kompliziert vor. Wofür ist eigentlich die Variable &quot;i&quot; gut?<br />
Du hast eine while-Schleife mit einer Abbruchbedingung. Wenn die Schleife Deiner Meinung nach zu früh abgebrochen wird, dann kann das entweder<br />
an einer falschen Abbruchbedingung liegen, oder daran, dass der Schleifenzähler falsch berechnet wird. Schau Dir mal beides an, dann kommst<br />
Du schon dahinter.<br />
Es liegt entweder daran:</p>
<pre><code class="language-cpp">while (ms_int &lt; Messzeit.wMilliseconds)         // warten, bis die aktuelle Zeit, grösser ist, als die Messzeit.
</code></pre>
<p>oder daran:</p>
<pre><code class="language-cpp">ms_int+=aktZeit.wMilliseconds;
</code></pre>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/653167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653167</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 16 Nov 2004 13:30:37 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 13:32:11 GMT]]></title><description><![CDATA[<p>roN schrieb:</p>
<blockquote>
<p>aha, ich musste einfach die sekunden auch noch einbeziehen, und dann funktionierts super... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
</blockquote>
<p>Echt? Zeig mal!</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/653170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653170</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 16 Nov 2004 13:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 13:41:08 GMT]]></title><description><![CDATA[<p>Alexander Kempf schrieb:</p>
<blockquote>
<p>roN schrieb:</p>
<blockquote>
<p>aha, ich musste einfach die sekunden auch noch einbeziehen, und dann funktionierts super... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
</blockquote>
<p>Echt? Zeig mal!</p>
<p>Gruß,</p>
<p>Alexander</p>
</blockquote>
<p>Violà:</p>
<pre><code class="language-cpp">int __fastcall TRegler::StartRegel(void)
{
// Reglerfunktion
  PPO2 *recValue=new PPO2[0];
  if(this-&gt;ComBus)
    {//Profibus
    int akt_int=0, MessTime_int;                    // Decl. der Zeiten  (Ist und Soll)
    int i;                                          // Deklaration der Zählvariable
    int oldSec_int;
    SYSTEMTIME MessZeit, aktZeit;                   // Strukturdeklaration für das Einlesen der Systemzeit
    aktZeit.wMilliseconds=0;                        // Initialisierung damit er min. einmal durch die while läuft.
    GetSystemTime(&amp;MessZeit);                       // einlesen der Systemzeit
    MessTime_int=(MessZeit.wSecond*1000)+MessZeit.wMilliseconds + MeassureTime;// zur eingelesenen Systemzeit, die Messzeit addieren um die Sollzeit zu definieren.
    while (akt_int &lt; MessTime_int)                  // warten, bis die aktuelle Zeit, grösser ist, als die Messzeit.
      {
      Application-&gt;ProcessMessages();               // Windows-MessageQue abarbeiten
      Profi_p-&gt;RecParam(&amp;OutData,&amp;InData,1);        // Werte empfangen
      GetSystemTime(&amp;aktZeit);                      // Systemzeit lesen
      akt_int=(aktZeit.wSecond*1000)+aktZeit.wMilliseconds;// aktuelle Zeit aus der gelesenen Ystemzeit berechnen
      i++;                                          // Durchlauf-Variable inkrementieren
      }
    ShowMessage(IntToStr(akt_int) + &quot; ---- &quot; + IntToStr(MessTime_int)+&quot;\nAnzahl Durchläufe (Übermittlungen)&quot;+IntToStr(i));
    }
  else
    {//CAN-Bus
    // Der CAN-Klasse den Funktionspointer übermitteln
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/653181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653181</guid><dc:creator><![CDATA[roN]]></dc:creator><pubDate>Tue, 16 Nov 2004 13:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to Systemzeit on Tue, 16 Nov 2004 13:54:14 GMT]]></title><description><![CDATA[<p>Ist aber ganz gut, dass Du in dem Zug auch gleich aus dem += ein = gemacht hast.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/653193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/653193</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 16 Nov 2004 13:54:14 GMT</pubDate></item></channel></rss>