![]() |
![]() |
||
| Netze |
[Material]
[historische Beispiele]
[Einstieg]
[Grundbegriffe]
[Netzhardware]
[Universal-Empfänger]
[mini-Sender]
[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]
|
||
|
Hohenstaufen-Gymnasium Kaiserslautern |
|
Ein Programm zum Empfang von Nachrichten nach unserem miniRS232-Protokoll könnte
folgenden Aufbau haben:
Die Bitverschiebungsbefehle shl (shift left) und shr (shift right) haben sich als sehr nützlich zum
Zerlegen und Zusammenfügen von Bytes ('Integers') erwiesen. So wird z.B. aus dem Byte b = 148 = '1001 0100'
durch die Anweisung b := b shl 2; das Byte b = 80 = '0101 0000'.
Schreibe ein Programm, das einen einfachen Empfänger zu unserem Protokoll realisiert.
Teste das Programm indem auf einer Schnittstelle empfangen wird, was auf einer anderen Schnittstelle gesendet wird.
Die Schnittstellen werden dabei mit einem Nullmodemkabel (RTS und CTS gekreuzt) verbunden. Die Schnittstellen können dabei
auf demselben oder auf verschiedenen Computern sein.
Möglicherweise wird es nötig sein, den Fenster-Refresh explizit z.B. mit Form1.refresh; aufzurufen.
Versuche beim Testen des Programms das Fenster zu verschieben. Was passiert, wenn man das Programm beenden will?
empfaenger0.zip, Empf0_exe.zip
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.
Man kann Windows zu einem entscheidend - für unsere Zwecke - besseren Zeitverhalten veranlassen, wenn man mit dem Taskmanager (Strg-Alt-Entf) dem Prozess mit der rechten Maustaste eine höhere Priorität zuweist. Die Priorität 'Echtzeit' erreicht man nur mit Administratorrechten.