Bitübertragung zwischen zwei Rechnern - Implementierung
TODO: Hilfen zu den Programmieraufgaben.
Aufgabe 1: Senden eines Bytes
(a) Schreibe eine Funktion namens sendeByte, die nach dem obenstehenden Protokoll ein Byte versendet.
Als Parameter erhält die Funktion die Schnittstelle, die Bitzeit sowie die Bitfolge, die übertragen werden soll.
Die Bitfolge wird als Zeichenkette, die aus den Zeichen '0' und '1' besteht, übergeben.
Du kannst dich dabei an folgendem Algorithmus orientieren:
Algorithmus Byte senden:
Eingabe: Schnittstelle, Bitzeit, Bitfolge
# Startbit senden
Sende eine 1
eine Bitzeit warten
# Bitfolge senden
Für jedes Bit der Bitfolge:
Falls das Bit '0' ist:
sende eine 0
Falls das Bit '1' ist:
sende eine 1
eine Bitzeit warten
# Stoppbit senden
Sende eine 0
eine Bitzeit warten
(b) Verbindet zwei Rechner mit Hilfe der Calliope (vgl. folgende Abbildung). Startet auf einem Rechner das Programm transceiver.py. Startet auf dem anderen Rechner die Funktion aus Aufgabe 1a. Prüft, ob die Funktion aus Aufgabe 1a korrekt arbeitet.
Aufgabe 2: Empfangen eines Bytes
Der folgende Algorithmus wartet, bis ein Startbit erscheint und liest anschließend ein Byte:
Algorithmus Byte empfangen:
Eingabe: Schnittstelle, Bitzeit
solange auf der Leitung eine 0 liegt:
ein Zehntel der Bitzeit warten
1.5*Bitzeit warten
Variable Bitfolge auf eine leere Zeichenkette setzen
8 mal ausführen:
ein Bit lesen
falls das gelesene Bit eine 0 ist:
hänge das Zeichen '0' an Bitfolge an
falls das gelesene Bit eine 1 ist:
hänge das Zeichen '1' an Bitfolge an
1 Bitzeit warten
Rückgabe: Bitfolge
(a) Gliedere den Algorithmus in Abschnitte und beschreibe die Aufgaben dieser Abschnitte.
(b) Trage in der Abbildung des Protokolls die Zeitpunkte ein, an denen der Algorithmus den Eingangspin abtastet. (TODO: Arbeitsblatt mit der Abbildung zur Verfügung stellen)
(c) Begründe, dass es sinnvoll ist, den Eingangspin an den Zeitpunkten aus b) abzutasten.
(d) Implementiere den Algorithmus in einer Funktion in Python.
(e) Verbindet zwei Rechner mit Hilfe der Calliope miteinander. Startet zunächst auf einem Rechner das Programm aus Aufgabe 2d) und dann auf dem anderen Rechner das Programm aus Aufgabe 1a). Prüft so, ob beide Programme korrekt arbeiten.