Op 25 januari 2008 23:16:31 schreef Marcel (5):
code:
DATA FORMAT: <FF> | <00> | <FF> | <00> | <FF> | <80> | 8 x <DATA> | <ERROR = 13> | <ERROR = 50> |
heb nu dit frame bedacht. Werkt perfect, gaat nooit fout tot nu toe, ook niet als ik met andere zender probeer te storen
bij de ontvangende code:
1. controleer of de huidige waarde = 80 en de vorige waarde = 255
2. haal de data op (nu 8 bytes groot, kan in toekomst groter)
3. controleer of het eerste errorbyte = 13, zo nee stoppen
4. controleer of het 2de errorbyte = 50, zo nee, stoppen
5. beide errorbytes goed, verwerk de data!
Je zou nog een CRC kunnen maken ipv alleen naar de 2 laatste bytes te kijken.
Je telt dan alle databytes op en stuurt als foutdetectie byte de modulo255 waarde van de uitkomst mee.
data ascii
H 104
E 101
L 108
L 108
O 111
064
! 065
! 065
============
totaal 726
726 = 2 *255 + 216
Dit kan je in een microcontroller simpel doen door de byte waardes in een byte op te tellen. De waarde die in die byte staat na alle bytes opgeteld te hebben stuur je mee als error code. Je let dan niet op de overflow van die byte.
http://en.wikipedia.org/wiki/Cyclic_redundancy_check