Hallo. Ich bin gerade dabei mich mit dem KNX TP-UART IC von Siemens zu befassen, soweit schaut mein Bascom Programm schon ganz gut aus, allerdings hänge ich an einer Kleinigkeit: Ich habe ein Byte Array mit variabler Länge (9-23 Byte) in dem das Empfangene Telegramm zwischengespeichert wird. Nun muss ich mit allen Bytes ein XOR machen, damit ich die Checksumme bekomme, wie mache ich das? Die CRC8 Funktion liefert einen anderen Wert und Bascom kann bei einer Logikfunktion immer nur zwei Eingangsvariablen verarbeiten. Meine Idee wäre von allen Bytes immer an der gleichen Stelle die „1“ zu zählen und wenn das Ergebnis eine gerade Zahl ergibt, schreibe ich an die CRC Stelle eine 1, diese Berechnung ist aber aufwändig zu programmieren, gibs da nicht einen einfacheren Weg? Es geht um das im Anhang befindliche Prüfbyte (Querparität) Danke für Tipps, Christian
Christian Kreuzer wrote: > Nun muss ich mit allen Bytes ein XOR machen, damit ich die Checksumme > bekomme, wie mache ich das? > Die CRC8 Funktion liefert einen anderen Wert und Bascom kann bei einer > Logikfunktion immer nur zwei Eingangsvariablen verarbeiten. Der Rechenoperator '+' kann auch nur zwei Variablen verarbeiten. Und wie rechneste da dann '1 + 2 + 3' aus...?
Da kommt aber dann was anderes heraus: Zum Beispiel (alles in HEX) BC xor 11 xor 02 xor 09 xor 01 xor E1 xor 00 xor 81 ergibt in Bascom C7 sollte aber 38 sein. Christian
Hallo, ich sehe es gerade, das mit dem XOR ist Blödsinn, es geht rein um die Parität. Christian
Hab eine Lösung. Eine bitweise Addition ohne Überträge bringt das gewünschte Ergebnis. Danke für die Hilfe. Christian
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.