Yo,hat was gedauert.Mußte noch was tun.
Hier ein gaaaaanz einfaches Beispiel und nicht optimiert.
Ich weiß das es noch zig andere und bessere Metoden gibt aber wir fangen mal nachvolziehbar an.
Die Checksumme ist natürlich Einfachst aber da kannste ja reinsetzen was de haben möchstest.
Ich hab das jetzt mal in 10 Minuten so aussem Ärmel geschüttelt also keine Mosereien von der dritten Seite die sich bis jetzt bedeckt gehalten hat.
Es geht nur ummes Prinzip.
Schau mal ob de das verstehst.
Die vielen If Then Geschichten lassen sich natürlich noch besser darstellen (zb. Case)
Ich hoff das ich auf die schhnelle keinen dicken Käfer reingeknetet habe.
Code:'------------------------------------------------------------------------------- ' Erwartet werden 5 Zeichen Nutzdaten plus checksumme ' Startzeichen ist chr 15 '------------------------------------------------------------------------------- $regfile = "m16def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 10 $framesize = 40 Dim A As Byte 'Allgemein Dim C As Byte 'Für Checksumme Dim B(5) As Byte 'Nutzdaten Dim Z As Byte 'Zähler Z = 0 C = 0 Do 'Hauptschleife If Ischarwaiting() = 1 Then Gosub Empfang 'wenn zeichen im Puffer dann "Empfang" If Z = 7 Then Gosub Auswertung 'Hier könnete ihre Werbung stehen Loop Empfang: A = Waitkey() If Z > 0 Then Goto Empfang2 'wenn z schon größer dann weiter bei Empfang2 If A = 15 Then Incr Z 'Wenn Startzeichen dann Z auf Startposition und Return ' zurück zum Hauptprogramm Empfang2: If Z < 6 Then B(z) = A 'Daten einsortieren C = C Xor A 'Checksumme bilden.Einfach aber brauchbar. Incr Z 'z um eins rauf für den nächsten Return Auswertung: If C <> 0 Then Z = 0 'Prüfen ob die Checksumme stimmt.wenn nicht dann alles neu. C = 0 Return End If 'hier die Verarbeitung Z = 0 'Nach der Verarbeitung alles wieder auf 0 und zurück C = 0 Return







Zitieren

Lesezeichen