Netze [Material] [historische Beispiele] [Einstieg] [Grundbegriffe] [Netzhardware] [Universal-Empfänger] [mini-Sender] [mini-Empfänger] [miniEthernet] [Transceiver] [Fehlererkennung] [Fehlerbehandlung] [Bus] [Rahmen] [Medium Access Control] [Routing] [Schichtenmodell] [Sockets] [Dienste im Internet] [Real-Experimente] [Sicherheit] [Codes] [Programme] [Hardware] [Protokolle] [Glossar] [Bautipps] [Unterricht]
Pfad: [Startseite] / [Fächer] / [Informatik] / [Netze] / [mini-Sender]
Hohenstaufen-Gymnasium
Kaiserslautern
Autor: mk
Letzte Änderung dieser Seite: 17.01.2009 12:16:07  4091
miniRS232-Sender

miniRS232 - ein einfaches asynchrones Übertragungsprotokoll

Bei der seriellen Schnittstelle wird gewöhnlich das RS-232 -Protokoll zur Datenübertragung benutzt. Wir wollen eine stark vereinfachte Variante, miniRS232 benutzen.

Protokoll-Schema

Aufgabe

GUI zum einfachen Sender Entwickle in verschiedenen Schritten ein Programm, das zunächst nur das Bitmuster '01000101' mit der festen Bitlänge von 20ms sendet. Dann soll im nächsten Schritt die Baudrate und das Zeichen eingelesen werden. Schließlich soll im dritten Schritt ein String aus einem Memo-Feld mit der eingelesenen Baudrate gesendet werden. Es soll ein Startbit und ein Stoppbit verwendet werden. Die Zeichen sollen mit Hilfe der eingebauten Zeichentabelle kodiert und mit dem höchstwertigen Bit voraus gesendet werden. Ein Paritätsbit soll nicht verwendet werden. Die Klasse TNetzHW steht zur Verfügung und soll der Ansteuerung der seriellen Schnittstelle COM1 verwendet werden. Zum Test kann z.B. ein Null-Modem-Kabel und ein zur Verfügung gestelltes Oszilloskop-Programm benutzt werden. Die Oberfläche soll der Vorgabe entsprechen. Das Programm benötigt keine Threads und kein MVC! Die gemachten Tests sind zu dokumentieren.

sender0.zip, Send0_exe.zip

Senden des Bitmusters '01000101' mit Bitzeit 20ms

procedure TForm1.bSende1Click(Sender: TObject);
begin
  // Startbit
  NetzHW.SetAus(true);
  sleep(20);
  // Datenbits
  NetzHW.SetAus(false);
  sleep(20);
  NetzHW.SetAus(true);
  sleep(20);
  NetzHW.SetAus(false);
  sleep(20);
  NetzHW.SetAus(false);
  sleep(20);
  NetzHW.SetAus(false);
  sleep(20);
  NetzHW.SetAus(true);
  sleep(20);
  NetzHW.SetAus(false);
  sleep(20);
  NetzHW.SetAus(true);
  sleep(20);
  // Stoppbit
  NetzHW.SetAus(false);
  sleep(20);
end;

Technischer Tipp

Zumindest auf einigen Rechnern kann man wesentlich höhere Baud-Raten erreichen, wenn man am Anfang des Programms die Zeitauflösung von sleep mit

...
uses
  ...., mmsystem, ...
...
  TimeBeginPeriod(1);

auf eine große Granularität schaltet und am Schluss mit

  TimeEndPeriod(1);

wieder ausschaltet.

send0.py

Valid XHTML 1.0! lokal