Das Senden von Texten über das Kabel
Das Senden von Bits zwischen zwei RasPis
Grundlage der Datenübertragung soll das Senden und Empfangen von Bits sein.
Auf der Senderseite soll dies durch ein Unterprogramm sende(bit)
geschehen. Teile davon sind schon implementiert:
def sende(bit): # ein Bit senden
if bit==1:
GPIO.output(11, GPIO.HIGH)
sleep(0.5)
# bitte hier ergänzen!
Aufgabe 1
Vervollständige das Unterprogramm und baue es in das Sendeprogramm des vorherigen Abschnitts ein.
Das Zerlegen von Texten
Die Zerlegung von Texten in einzelne Zeichen geht mit Python denkbar einfach:
def sendeText(text):
for zeichen in text:
asciinummer=ord(zeichen) # Ordnungszahl eines Zeichens ermitteln
sendeZahl(asciinummer)
Nun muss noch die ASCII-Nummer, die ja zwischen 0 und 255 liegt, durch 8 Bits als Binärzahl dargestellt und entsprechend
(mit dem höchstwertigen Bit zuerst) übertragen werden:
def sendeZahl(nr): # Zahl in Bits aufteilen
stelle=128
for i in range (7):
if nr >=stelle:
nr=nr-stelle
sende(1)
else:
sende(0)
stelle=stelle/2
sende(nr)
Aufgabe 2
Baue die Quelltextteile zu einem Gesamtprogramm zusammen und überprüfe die Richtigkeit durch geeignete Ausgaben. Entsprechende Maßnahmen auf Empfängerseite findest du im nächsten Abschnitt!
Aufgabe 3
Liste die (Protokoll-) Vereinbarungen auf, die durch diese Programmteile erfolgt sind.
Einfügen eines Start- und Stoppzeichens
Damit der Empfänger weiß, wann der Text beginnt und endet, musst du die Übertragung um sogenannte Steuerzeichen erweitern. Zu Beginn soll ein Zeichen mit der ASCII-Nummer 1 (Bitfolge 00000001) als Startzeichen übertragen werden. Damit beginnt die Übertragung immer nach der ersten 1.Aufgabe 4
Baue die entsprechende Programmzeile
sendeZahl(1)
zur Übertragung der Zahl 1 als Startzeichen an geeigneter Stelle in das Programm ein.
Aufgabe 5
Recherchiere im Internet nach Steuerzeichen der ASCII-Tabelle und finden ein geeignetes Zeichen für das Textende. Baue auch die Übertragung dieses Stoppzeichens an geeigneter Stelle in das Programm ein.Hinzufügen eines Prüfbits
Damit der Empfänger überprüfen kann, ob bei der Übertragung Fehler passiert sind, kann man sogenannte Prüfbits in die Übertragung einbauen. Genauere Informationen hierüber findest du im Abschnitt Fehlererkennung.
Im folgenden soll im Unterprogramm sendeZahl(nr)
am Ende ein Paritätsbit übertragen werden. Dabei soll auf gerade Parität ergänzt werden.
Baue dafür die im folgenden Quelltext fehlenden Programmzeilen aus dem unteren Vorrat an den richtigen Stellen ein:
def sendeZahl(nr): # Zahl in Bits aufteilen
stelle=128
for i in range (7):
if nr >=stelle:
nr=nr-stelle
sende(1)
else:
sende(0)
stelle=stelle/2
sende(nr)
einsen+=1
if einsen % 2 == 1:
else: