Ik ben al een aantal dagen bezig om een lullig foutje te ontdekken in mijn python code.
De python code word geschreven voor de 1.5.2+ interpeter, dus ik heb niet de beschikking over de aller nieuwste functies van python. De code word gedraaid op een Telit GPRS module, die geen debug mogelijkheden heeft. Gaat er iets fout, dan loopt hij gewoon vast.
Doordat ik steeds wat steekwoorden naar terminal stuur, weet ik ongeveer waar de fout zit.
Ik heb een functie geschreven die CRC berekend over een binnenkomende string.
Om de CRC berekening sneller te maken, heb ik gebruik gemaakt van een tabel die reeds gevuld is met restwaardes voor elke mogelijke byte. Maar dit is niet echt van belang.
Wanneer ik de regel data = ord(c) ^ remainder voorzie van een # ervoor (zodat het dus commentaar word), dan gaat de code wel vrolijk er doorheen.
Ik ben ten einde raad, weet echt niet hoe ik dit moet oplossen.
C bevat telkens een karakter uit de string, die zet ik om naar een integer en dan kan ik XOR uitvoeren. Ik ben nog niet zeker of ord() in deze interpeter versie ondersteund word
De python code word geschreven voor de 1.5.2+ interpeter, dus ik heb niet de beschikking over de aller nieuwste functies van python. De code word gedraaid op een Telit GPRS module, die geen debug mogelijkheden heeft. Gaat er iets fout, dan loopt hij gewoon vast.
Doordat ik steeds wat steekwoorden naar terminal stuur, weet ik ongeveer waar de fout zit.
Ik heb een functie geschreven die CRC berekend over een binnenkomende string.
code:
1
2
3
4
5
6
7
| def calculatecrc( message="" ):
remainder = 0
data = 0
for c in message:
data = ord(c) ^ remainder
remainder = arr[data] ^ (remainder << 8)
SER.send(str(remainder) + '\r\n') |
Om de CRC berekening sneller te maken, heb ik gebruik gemaakt van een tabel die reeds gevuld is met restwaardes voor elke mogelijke byte. Maar dit is niet echt van belang.
Wanneer ik de regel data = ord(c) ^ remainder voorzie van een # ervoor (zodat het dus commentaar word), dan gaat de code wel vrolijk er doorheen.
Ik ben ten einde raad, weet echt niet hoe ik dit moet oplossen.
C bevat telkens een karakter uit de string, die zet ik om naar een integer en dan kan ik XOR uitvoeren. Ik ben nog niet zeker of ord() in deze interpeter versie ondersteund word