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] / [Netzhardware]
Hohenstaufen-Gymnasium
Kaiserslautern
Autor: mk
Letzte Änderung dieser Seite: 24.10.2009 17:33:50  5154
Netzhardware

Problem

Netzkarte Über wichtige Grundlagen der Netzwerktechnik soll nicht nur geredet, sondern sie sollen in praktischen Versuchen erfahrbar werden. Die hohe Komplexität moderner Netzwerktechnik versperrt dabei den Blick auf die grundlegenden Konzepte.

Lösung

Modellnetzwerk

Belegung DB9 Es soll ein Modellnetzwerk aufgebaut werden, das einfach, robust und billig ist. Basis unseres Modellnetzwerkes ist die serielle Schnittstelle. Sie ist fast immer verfügbar, robust und über die WinAPI verhältnismäßig leicht ansteuerbar. Eine nicht vorhandene serielle Schnittstelle lässt sich sowohl bei Desktop-Rechnern über eine PCI-Karte (ca. 15 Euro) bzw. bei Laptops über eine PCMCIA-Karte (ca. 35 Euro) nachrüsten. Wir verwenden dabei nicht den komplexen 'Datenteil', sondern die sogenannten Handshake-Leitungen RTS und CTS. Natürlich sind Alternativen wie parallele oder USB-Schnittstelle, Fischertechnik-Interface usw. denkbar. Zur Diskussion von Vor- und Nachteilen siehe Rechnernetze und Datenübertragung, D.Jonietz, IFB 2003.
LED und Schleife an Buchse Zum Experimentieren empfiehlt sich zunächst ein 1:1 Verlängerungskabel D-SUB 9-polig (z.B. AK230 bei Reichelt), um die serielle Schnittstelle zum bequemen Hantieren nach vorne zu verlegen. Eine 9-polige D-SUB-Buchse (z.B. D-SUB BU 09 , Reichelt), eine Leuchtdiode (z.B. LED 3MM 2MA , Reichelt) und ein Widerstand (z.B 1/4W 2.2K , Reichelt) reichen für die ersten Versuche aus. Die Leuchtdiode wird dabei mit der Anode (längerer Anschluss) über einen Vorwiderstand mit Pin 7 (RTS) und mit der Kathode (größerer Teil im Inneren der LED) mit Pin 5 (GND) verbunden.
Bilder vom Bau

Experimente mit der seriellen Schnittstelle

Grundsätzlich ist das Ansprechen der seriellen Schnittstelle mit den meisten Programmiersprachen möglich. In Delphi, Java und Python liegen Erfahrungen vor. Viele Programme dieser Reihe wurden in Delphi geschrieben und sollten mit allen Versionen etwa ab Delphi3 funktionieren. In jüngster Zeit wurde angefangen, die Programme nach Python zu übertragen. Thomas Karp hat zu Rechnernetzen auf seiner Seite infoskript.de viele ähnliche Programme in Java dokumentiert.

Ansprechen der seriellen Schnittstelle mit Python

Mit pySerial von Chris Liechti kann man die serielle Schnittstelle Plattform-unabhängig ansteuern. Es ist ein großer Vorteil von Python, dass man ohne ein Programm zu schreiben auf der Shell experimentieren kann.

>>> import serial          # das Modul serial wird importiert
>>> s = serial.Serial(0)   # Objekt s wird erzeugt und öffnet sofort Port 0 (COM1)
>>> s.setRTS(0)            # RTS wird auf 0 gesetzt
>>> s.setRTS(1)            # RTS wird auf 1 gesetzt
>>> s.getCTS()             # CTS wird abgefragt (RTS-CTS geschlossen)
True
>>> s.getCTS()             # CTS wird abgefragt (RTS-CTS offen)
False
>>> s.close()              # Schnittstelle wird geschlossen

Wichtig: Man darf nicht vergessen, die Schnittstelle zu schließen, da sie sonst nicht mehr ansprechbar ist.

Zusatz

Die 'Granularität' von sleep liegt bei Windows etwa bei 10-15ms. Sie lässt sich über spezielle Befehle bis in die Gegend von 1 ms steigern (timeBeginPeriod, timerr_noerror).

import ctypes
ctypes.windll.winmm.timeBeginPeriod(1)
....
ctypes.windll.winmm.timeEndPeriod(1)

Ansprechen der seriellen Schnittstelle mit Delphi

Klasse 'TNetzHW'

Klassendiagramm zu TNetzHW Die Ausgabe-Leitung (RTS) heißt aus und die Eingabe-Leitung (CTS) ein. Außer den Methoden zum Setzen bzw. Auslesen der Leitungen hat die Klasse die Methoden Start zum Starten der Hardware und Stop zum Stoppen. Start kann über einen Parameter noch die Nummer der Schnittstelle auswählen.

Details zur Klasse TNetzHW

Aufgabe 1

GUI zum Testprogramm Schreibe ein kleines Testprogramm - etwa mit nebenstehender Oberfläche - , das TNetzHW (in mTNetzHW.zip) benutzt, um RTS zu setzen und CTS einzulesen. Das Abfragen von CTS kann dabei periodisch mit Hilfe eines Timers (Polling) erfolgen.
Zum Testen des Schreibens kann eine LED - wie oben beschrieben - dienen. Zum Test des Einlesens ist es praktisch, CTS mit RTS zu verbinden - das geht zur Not auch mit etwas Alu-Folie.

Klassendiagramm

Hilfen

TNetzHW mit Flankenentdeckung

Für viele Anwendungen ist es lästig, die CTS-Leitung dauernd abzufragen. Es wäre schöner, wenn ein Flankenwechsel an CTS ein Ereignis onCTS auslösen würde, das dann mit einer entsprechenden Ereignisbehandlung verbunden werden könnte. Eine neue Klasse TNetzHW in NetzHWneu.zip stellt diese Funktionalität zusätzlich bereit. Hier ist lediglich zu Beginn des Programms mit setOnCTS(Ereignisbehandlung) eine Verbindung zwischen Ereignis und der - parameterlosen - Ereignisbehandlung herzustellen.

Achtung: TNetzHW scheint noch nicht fehlerfrei: Empfaenger0neu.zip

Technischer Tipp

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.

Links

Valid XHTML 1.0! lokal