st das "z" bei:
Empfang2:
If Z < 6 Then B(z) = A
ein Tippfehler?...........
Nö das ist so gewollt.
Die Variable B ist als Array mit 5 Zellen angelegt also B(1) bis B(5).
Z ist einfach nur der Zähler.
Wenn ein Zeichen im Puffer ist kann man das mit Ichharwaiting erkennen.
Im Empfang wird das Zeichen gelesen.
Wenn das Zeichen chr15 ist dann wird der Empfang gestartet ansonsten tut sich nix und es geht zurück.
Ist das Zeichen 15 dann werden die folgenden 5 Zeichen in B(1) bis B(5) gespeichert und die Checksumme mit einfachem Xor gebildet.
am Ende kommt noch die Checksumme vom Sender als 6. Zeichen.
Wenn die Xorverknüpfung der 5 Bytes korrekt ist dann ergibt ein weiteres Xor mit der Checksumme vom Sender = 0
In der Auswertung wird das nochmal überprüft.
Ist die Checksumme verschieden dann wird derEmpfang verworfen.
Natürlich ist der Empfang noch nicht ganz abgesichert.
Wie gesagt,eine Möglichkeit.
Ist das dann beim Sender ganz einfach mit:
Print 15 ;B(1) B(2);B(3).....B(5); C erledigt?
Wie du das beim Sender machst ist dir überlassen.
Hauptsache du schickst Startzeichen,5 Zeichen Nutzdaten und die passende Checksumme.
Die Zeile funktioniert aber so nicht ganz.
Print ist mehr für Text gedacht.
Nimm Printbin dafür.
Zum Code:
So einfach gehts nicht mit der Checksumme.
Hier mal ein hoffentlich nachvollziehbares Beispiel.
Is im Grunde das gleiche wie beim Empfang.
Code:
beispiel:
Start = 15
C = 0
B(1) = 50
B(2) = 100
B(3) = 54
B(4) = 88
B(5) = 213
For Z = 1 To 5
C = C Xor B(Z)
Next
Printbin Start ; B(1) ; C
Return
Das "B(1)" sendet das ganze array.
Schau dir den Befehl mal in der Hilfe an und experimentier damit.
Ich hab die empfangsroutine so gestaltet das der Empfang nebenher geschehen kann und nicht den Betrieb stört.
Wenn sicher ist das alle 7 Zeichen im Puffer liegen dann gehts natürlich auch mit einem einfachen Inputbin
Also Analog zu Prntbin : "Inputbin Start ; B(1) ; C"
Hier kann man dann nachher kontrollieren ob der Datensatz gültig ist oder nicht.
Das Problem ist nur nicht schon in der halben Übertragung abzufragen denn damit unterbricht man den Rest des Systems falls Zeichen nicht kommen
Aber schau dir erstmal das andere an.
Lesezeichen