<?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[RS232 Oszilloskop wie!?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Hab mir grad ein Programm zusammengebastelt, mit dem ich Daten via serieller Schnittstelle senden &amp; empfangen kann! Nun würde ich gerne das Programm so erweitern das ich mir die Ankommenden Signale wie auf einem Oszilloskop ansehen kann! Doch wie mach ich so was!?</p>
<p>Sollte ungefähr so aussehen:</p>
<p><a href="http://www.hsg-kl.de/faecher/inf/netze/oszi/index.php" rel="nofollow">http://www.hsg-kl.de/faecher/inf/netze/oszi/index.php</a></p>
<p>Danke schon mal für die Antworten <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="👍"
    /></p>
<p>//--- Bisheriger Code ---</p>
<pre><code>#include &lt;vcl.h&gt;
#include &quot;RS232.h&quot;

// Standart Konstrukter-------------------------------------------------------------------------------------
RS232::RS232()
{
   // Standarteinstellungen
   this-&gt;UsedPort = &quot;COM1&quot;;
   this-&gt;Paritaet = &quot;NONPARITY&quot;;
   this-&gt;Baudrate = 9600;
   this-&gt;Datenbits = 8;
   this-&gt;PortOpen = false;
   this-&gt;PortSet = false;
   this-&gt;EnableErrorBoxes = true;
};
//---------------------------------------------------------------------------------------------------------

// Standart Destruktor-------------------------------------------------------------------------------------
RS232::~RS232(){};
//---------------------------------------------------------------------------------------------------------

// Öffnet den gewählten Port-------------------------------------------------------------------------------
void RS232::OpenSeriell()
{
   this-&gt;MyComPort = CreateFile(UsedPort.c_str(), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
};
//---------------------------------------------------------------------------------------------------------

// Schließt den geöffneten Port----------------------------------------------------------------------------
void RS232::CloseSeriell()
{
   CloseHandle(this-&gt;MyComPort);
}
//---------------------------------------------------------------------------------------------------------

// Überprüft ober der Port ferfügbar ist-------------------------------------------------------------------
bool RS232::CheckPort(AnsiString Port)
{
   SetUsedPort(Port);
   OpenSeriell();

   if(IsPortOpen())
   {
      CloseSeriell();
      RS232();
      return true;
   }
   else
   {
      RS232();
      return false;
   }
}
//---------------------------------------------------------------------------------------------------------

// Configuriert den geöffneten Port------------------------------------------------------------------------
void RS232::SetSeriell()
{
   DCB dcb; // Device Control Block

   BOOL fSuccess = GetCommState(this-&gt;MyComPort, &amp;dcb);

   if(!fSuccess &amp;&amp; this-&gt;EnableErrorBoxes)
   {
      MessageBox(NULL, &quot;Fehler beim Öffen der Configuration des Ports!&quot;, &quot;Warnung&quot;, 0);
   }

   dcb.BaudRate = this-&gt;Baudrate;   // Baudrate
   dcb.ByteSize = this-&gt;Datenbits;  // 8 Datenbits
   dcb.Parity = //this-&gt;Paritaet.c_str(); // keine Parität
   dcb.StopBits = ONESTOPBIT;       // 1 Stopbit

   fSuccess = SetCommState(this-&gt;MyComPort, &amp;dcb);

   if (!fSuccess &amp;&amp; this-&gt;EnableErrorBoxes)
   {
      MessageBox(NULL, &quot;Fehler beim Schreiben der Configuration des Ports!&quot;, &quot;Warnung&quot;, 0);
   }
};
//---------------------------------------------------------------------------------------------------------

// Setzt den zu öffnenden Port-----------------------------------------------------------------------------
void RS232::SetUsedPort(AnsiString UsedPort)
{
   this-&gt;UsedPort = UsedPort;
}
//---------------------------------------------------------------------------------------------------------

// Setzt die zu benüzende Baudrate-------------------------------------------------------------------------
void RS232::SetBaudrate(int Baudrate)
{
   this-&gt;Baudrate = Baudrate;
}
//---------------------------------------------------------------------------------------------------------

// Setz die Parität----------------------------------------------------------------------------------------
void RS232::SetParity(AnsiString Paritaet)
{
   //
}
//---------------------------------------------------------------------------------------------------------

// Setzt die anzahl Datenbits------------------------------------------------------------------------------
void RS232::SetDatenbits(int Datenbits)
{
   this-&gt;Datenbits = Datenbits;
}
//---------------------------------------------------------------------------------------------------------

AnsiString RS232::GetUsedPort()
{
   return this-&gt;UsedPort;
}
//---------------------------------------------------------------------------------------------------------

int RS232::GetBaudrate()
{
   return this-&gt;Baudrate;
}
//---------------------------------------------------------------------------------------------------------

int RS232::GetDatenbits()
{
   return this-&gt;Datenbits;
}
//---------------------------------------------------------------------------------------------------------

bool RS232::IsPortOpen()
{
   if(this-&gt;MyComPort == INVALID_HANDLE_VALUE)
   {
      return false;
   }
   else
   {
      return true;
   }
}
//---------------------------------------------------------------------------------------------------------

// Überprüft ob der geöffnete Port Configuriert wurde------------------------------------------------------
bool RS232::IsPortSet(){return true;};
//---------------------------------------------------------------------------------------------------------

// Methode zum senden von Daten----------------------------------------------------------------------------
int RS232::Send(char Data[], int n)
{
   DWORD NumberOfBytesWritten; //Anzahl der gesendeten Bytes

   bool b = WriteFile(this-&gt;MyComPort, // handle des Com-Ports
     Data, // Adresse der Daten
     n, // Anzahl der zu sendenden Bytes
     &amp;NumberOfBytesWritten, // Adresse übergeben
     0); // kein overlapped I/O

   if (!b)
   {
      MessageBox(NULL, &quot;Fehler beim Senden der Daten!&quot;, &quot;Warnung&quot;, 0);
   }

   return NumberOfBytesWritten;
};
//---------------------------------------------------------------------------------------------------------

// Methode zum empfangen von Daten-------------------------------------------------------------------------
DWORD RS232::Receive(char* Data, int n)
{
   DWORD NumberOfBytesRead; // Anzahl der gelesenen Bytes
   bool b = ReadFile(this-&gt;MyComPort, Data, n, &amp;NumberOfBytesRead, 0);

   if(!b)
   {
      MessageBox(NULL, &quot;Fehler beim Empfangen der Daten&quot;, &quot;Warnung&quot;, 0);
   }

   return NumberOfBytesRead;
};
//---------------------------------------------------------------------------------------------------------

// Setzt die Tiemouts für den Empfang----------------------------------------------------------------------
void RS232::SetReadTimeouts()
{
   // Alle Wert sind in Millisekunden
   COMMTIMEOUTS com_time;

   com_time.ReadIntervalTimeout = 100;            // Zeit zwischen zwei Zeichen
   com_time.ReadTotalTimeoutMultiplier = 0;       // pro Zeichen
   com_time.ReadTotalTimeoutConstant = 1;
   com_time.WriteTotalTimeoutMultiplier = 0;
   com_time.WriteTotalTimeoutConstant = 0;

   if(!SetCommTimeouts(this-&gt;MyComPort, &amp;com_time))
   {
      MessageBox(NULL, &quot;Fehler beim Setzen der Timeouts&quot;, &quot;Warnung&quot;, 0);
   }
}
//---------------------------------------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/193489/rs232-oszilloskop-wie</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 02:02:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193489.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Sep 2007 14:34:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RS232 Oszilloskop wie!? on Wed, 26 Sep 2007 14:34:26 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Hab mir grad ein Programm zusammengebastelt, mit dem ich Daten via serieller Schnittstelle senden &amp; empfangen kann! Nun würde ich gerne das Programm so erweitern das ich mir die Ankommenden Signale wie auf einem Oszilloskop ansehen kann! Doch wie mach ich so was!?</p>
<p>Sollte ungefähr so aussehen:</p>
<p><a href="http://www.hsg-kl.de/faecher/inf/netze/oszi/index.php" rel="nofollow">http://www.hsg-kl.de/faecher/inf/netze/oszi/index.php</a></p>
<p>Danke schon mal für die Antworten <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="👍"
    /></p>
<p>//--- Bisheriger Code ---</p>
<pre><code>#include &lt;vcl.h&gt;
#include &quot;RS232.h&quot;

// Standart Konstrukter-------------------------------------------------------------------------------------
RS232::RS232()
{
   // Standarteinstellungen
   this-&gt;UsedPort = &quot;COM1&quot;;
   this-&gt;Paritaet = &quot;NONPARITY&quot;;
   this-&gt;Baudrate = 9600;
   this-&gt;Datenbits = 8;
   this-&gt;PortOpen = false;
   this-&gt;PortSet = false;
   this-&gt;EnableErrorBoxes = true;
};
//---------------------------------------------------------------------------------------------------------

// Standart Destruktor-------------------------------------------------------------------------------------
RS232::~RS232(){};
//---------------------------------------------------------------------------------------------------------

// Öffnet den gewählten Port-------------------------------------------------------------------------------
void RS232::OpenSeriell()
{
   this-&gt;MyComPort = CreateFile(UsedPort.c_str(), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
};
//---------------------------------------------------------------------------------------------------------

// Schließt den geöffneten Port----------------------------------------------------------------------------
void RS232::CloseSeriell()
{
   CloseHandle(this-&gt;MyComPort);
}
//---------------------------------------------------------------------------------------------------------

// Überprüft ober der Port ferfügbar ist-------------------------------------------------------------------
bool RS232::CheckPort(AnsiString Port)
{
   SetUsedPort(Port);
   OpenSeriell();

   if(IsPortOpen())
   {
      CloseSeriell();
      RS232();
      return true;
   }
   else
   {
      RS232();
      return false;
   }
}
//---------------------------------------------------------------------------------------------------------

// Configuriert den geöffneten Port------------------------------------------------------------------------
void RS232::SetSeriell()
{
   DCB dcb; // Device Control Block

   BOOL fSuccess = GetCommState(this-&gt;MyComPort, &amp;dcb);

   if(!fSuccess &amp;&amp; this-&gt;EnableErrorBoxes)
   {
      MessageBox(NULL, &quot;Fehler beim Öffen der Configuration des Ports!&quot;, &quot;Warnung&quot;, 0);
   }

   dcb.BaudRate = this-&gt;Baudrate;   // Baudrate
   dcb.ByteSize = this-&gt;Datenbits;  // 8 Datenbits
   dcb.Parity = //this-&gt;Paritaet.c_str(); // keine Parität
   dcb.StopBits = ONESTOPBIT;       // 1 Stopbit

   fSuccess = SetCommState(this-&gt;MyComPort, &amp;dcb);

   if (!fSuccess &amp;&amp; this-&gt;EnableErrorBoxes)
   {
      MessageBox(NULL, &quot;Fehler beim Schreiben der Configuration des Ports!&quot;, &quot;Warnung&quot;, 0);
   }
};
//---------------------------------------------------------------------------------------------------------

// Setzt den zu öffnenden Port-----------------------------------------------------------------------------
void RS232::SetUsedPort(AnsiString UsedPort)
{
   this-&gt;UsedPort = UsedPort;
}
//---------------------------------------------------------------------------------------------------------

// Setzt die zu benüzende Baudrate-------------------------------------------------------------------------
void RS232::SetBaudrate(int Baudrate)
{
   this-&gt;Baudrate = Baudrate;
}
//---------------------------------------------------------------------------------------------------------

// Setz die Parität----------------------------------------------------------------------------------------
void RS232::SetParity(AnsiString Paritaet)
{
   //
}
//---------------------------------------------------------------------------------------------------------

// Setzt die anzahl Datenbits------------------------------------------------------------------------------
void RS232::SetDatenbits(int Datenbits)
{
   this-&gt;Datenbits = Datenbits;
}
//---------------------------------------------------------------------------------------------------------

AnsiString RS232::GetUsedPort()
{
   return this-&gt;UsedPort;
}
//---------------------------------------------------------------------------------------------------------

int RS232::GetBaudrate()
{
   return this-&gt;Baudrate;
}
//---------------------------------------------------------------------------------------------------------

int RS232::GetDatenbits()
{
   return this-&gt;Datenbits;
}
//---------------------------------------------------------------------------------------------------------

bool RS232::IsPortOpen()
{
   if(this-&gt;MyComPort == INVALID_HANDLE_VALUE)
   {
      return false;
   }
   else
   {
      return true;
   }
}
//---------------------------------------------------------------------------------------------------------

// Überprüft ob der geöffnete Port Configuriert wurde------------------------------------------------------
bool RS232::IsPortSet(){return true;};
//---------------------------------------------------------------------------------------------------------

// Methode zum senden von Daten----------------------------------------------------------------------------
int RS232::Send(char Data[], int n)
{
   DWORD NumberOfBytesWritten; //Anzahl der gesendeten Bytes

   bool b = WriteFile(this-&gt;MyComPort, // handle des Com-Ports
     Data, // Adresse der Daten
     n, // Anzahl der zu sendenden Bytes
     &amp;NumberOfBytesWritten, // Adresse übergeben
     0); // kein overlapped I/O

   if (!b)
   {
      MessageBox(NULL, &quot;Fehler beim Senden der Daten!&quot;, &quot;Warnung&quot;, 0);
   }

   return NumberOfBytesWritten;
};
//---------------------------------------------------------------------------------------------------------

// Methode zum empfangen von Daten-------------------------------------------------------------------------
DWORD RS232::Receive(char* Data, int n)
{
   DWORD NumberOfBytesRead; // Anzahl der gelesenen Bytes
   bool b = ReadFile(this-&gt;MyComPort, Data, n, &amp;NumberOfBytesRead, 0);

   if(!b)
   {
      MessageBox(NULL, &quot;Fehler beim Empfangen der Daten&quot;, &quot;Warnung&quot;, 0);
   }

   return NumberOfBytesRead;
};
//---------------------------------------------------------------------------------------------------------

// Setzt die Tiemouts für den Empfang----------------------------------------------------------------------
void RS232::SetReadTimeouts()
{
   // Alle Wert sind in Millisekunden
   COMMTIMEOUTS com_time;

   com_time.ReadIntervalTimeout = 100;            // Zeit zwischen zwei Zeichen
   com_time.ReadTotalTimeoutMultiplier = 0;       // pro Zeichen
   com_time.ReadTotalTimeoutConstant = 1;
   com_time.WriteTotalTimeoutMultiplier = 0;
   com_time.WriteTotalTimeoutConstant = 0;

   if(!SetCommTimeouts(this-&gt;MyComPort, &amp;com_time))
   {
      MessageBox(NULL, &quot;Fehler beim Setzen der Timeouts&quot;, &quot;Warnung&quot;, 0);
   }
}
//---------------------------------------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1373184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373184</guid><dc:creator><![CDATA[Matze84]]></dc:creator><pubDate>Wed, 26 Sep 2007 14:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 Oszilloskop wie!? on Wed, 26 Sep 2007 14:52:22 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Entsprechende Zeichenfunktionen benutzen. Siehe BCB-Hilfe zu TCanvas.<br />
Eventuell reicht auch das fertige TPerformanceGraph.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373191</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 26 Sep 2007 14:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 Oszilloskop wie!? on Wed, 26 Sep 2007 20:33:54 GMT]]></title><description><![CDATA[<p>Das Zeichnen der Funktion ist kein problem wichtiger für mich ist wie ich auf die empfangenen daten zugreifen kann! Also auf jedes bit das am port ankommt und nicht nur den hex wert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373469</guid><dc:creator><![CDATA[Matze84]]></dc:creator><pubDate>Wed, 26 Sep 2007 20:33:54 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 Oszilloskop wie!? on Wed, 26 Sep 2007 21:36:30 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Und was haben einzelne Bits mit Oszilatoren zu tun? <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>
<p>Jedenfalls kannst du das mit [/url]Bitoperationen[/url] machen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373494</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 26 Sep 2007 21:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 Oszilloskop wie!? on Thu, 27 Sep 2007 23:05:21 GMT]]></title><description><![CDATA[<p>Möchte einfach die Ankommenden Daten an der RX Leitung unabhängig von der Baudrate, Datenbits, Stopbits usw. anzeigen! <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/1374103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374103</guid><dc:creator><![CDATA[Matze84]]></dc:creator><pubDate>Thu, 27 Sep 2007 23:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 Oszilloskop wie!? on Fri, 28 Sep 2007 06:00:17 GMT]]></title><description><![CDATA[<p>z.B.: für jedes ankommende Byte</p>
<pre><code class="language-cpp">for (i=0; i&lt;8; i++) if (datenbyte &amp; (1 &lt;&lt; i)) Ausgabe(&quot;1&quot;);
                    else Ausgabe(&quot;0&quot;);
</code></pre>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374151</guid><dc:creator><![CDATA[Destiniy]]></dc:creator><pubDate>Fri, 28 Sep 2007 06:00:17 GMT</pubDate></item></channel></rss>