Das Problem besteht darin, dass mit dem Befehl zum Senden einer Information immer nur eine Zahl übertragen werden kann. Es müssen aber zwei Informationen gesendet werden: Die eigentliche Zahl und die Position in der Liste. Um das zu realisieren, wären zwei Lösungen möglich:
Im Folgenden wird die 2. Lösung realisiert.
Der Sender erzeugt eine Liste mit Zufallszahlen. Danach sendet er die Anzahl der Listenelemente solange an der Empfänger, bis dieser den Empfang bestätigt hat.
Davor sind zwei Variable zu erzeugen:
In der ersten Zählschleife wird die Liste mit zufälligen Zahlen zwischen 1 und 100 gefüllt.
Der Empfänger wartet, bis die empfangene Zahl ungleich 0 ist und zeigt dann die empfangene Anzahl zur Kontrolle an. Die farbige LED symbolisiert den jeweiligen Zustand der Übertragung.
Im nächsten Schritt werden die einzelnen Elemente der Liste maskiert zum Empfänger gesendet. Wenn der Empfänger alle Elemente erhalten hat, sendet er eine Bestätigung zurück und die Übertragung ist beendet.
Das Maskieren erfolgt so, dass
Damit bei der Multiplikation keine 0 entsteht, muss die Schleife mit 1 beginnen und beim Holen des jeweiligen Listenelements das berücksichtigt werden.
500 380 bedeudet also, dass in der Liste das Element mit der Nummer 4 den Wert 380 hat.
Der Listenempfang wird mit einer Funktion realisiert. Dadurch wird das Programm übersichtlicher.
Es wird eine Zahl empfangen und dann in ihre Bestandteile zerlegt. Damit hat man die Nummer des Eintrages in der Liste und den Inhalt.
Zur Kontrolle kann man sich die Werte auf dem seriellen Monitor anschauen. Das kann dann wieder entfernt werden.
Wie weiß man nun, dass alle Elemente übertragen wurden? Dazu wird eine Kontrollliste erzeugt, die genau so viele Elemente hat, wie übertragen werden sollen. Jedes Eintrag in dieser Liste wird auf 1 gesetzt.
Wird eine Zahl übertragen und in die eigentliche Liste eingetragen, wird sofort danach in der Kontrolliste das Element mit der gleichen Nummer auf 0 gesetzt. Das geht solange, bis in der Kontrolliste alle Werte auf 0 gesetzt sind.Dann ist man fertig.