LabVIEWForum.de
CRC 16 berechnen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: CRC 16 berechnen (/Thread-CRC-16-berechnen)



CRC 16 berechnen - Kiesch - 16.05.2022 09:47

Hi Leute,

ich bin offenbar zu dumm dafür, da ich zu selten mit irgendwelchen Bitflipoperationen etc. arbeite. Und vermute, dass es dafür auch mehr oder weniger eine Standardlösung gibt:

Ein externes Geräte will von mir, dass ich ein CRC 16 aus den 2 vorherigen Charactern eines Strings berechne (was etwas weird ist, da es doch eigentlich sinnvoller wäre für den ganzen String nen CRC zu errechnen wenn man den unbedingt überprüfen will).
Das Manual teilt mir mit, das das Referenzpolynom durch das geteilt werden soll x^16 + x^12 + x^2 + 1 ist und lässt mich damit im Wald stehen.

Hab mich jetzt schon etwas belesen, aber kriege das einfach nicht in den Schädel wie das Konzept funktioniert. Man soll irgendwie XORn etc. aber ich verstehs einfach nicht. Vor allem nicht die x^16 im Referenzpolynom - ich hab doch nur 2 character also x^15 maximal oder versteh ich da was falsch?

Hat da jemand ne Idee zu oder eventuell noch ne Lösung rumliegen und kann mir erklären wie ich das anwende?
Gefunden habe ich schon den link:
https://forums.ni.com/t5/LabVIEW/CRC16-calculator/td-p/3298817

Wo man auch nen VI kriegen kann, allerdings beschwert sich mein Endgerät über alle meine Versuche den String richtig zu berechnen... und wirft mir nur "ii" für CRC falsch zurück. Ich vermute also ich habe irgendwas noch nicht verstanden :-(
Vielen Dank schonmal dafür.

Gruß Kiesch

P.S: Das Endgerät kommuniziert über USB, mir ist nicht klar warum der Hersteller unbedingt nen CRC zum Kommando haben will, aber ich kanns leider nicht ändern... Grundsätzlich kann der Fehler sicher auch woanders liegen, allerdings ist der Fehlercode recht eindeutig und heißt offenbar insbesondere, dass das Gerät zumindest meine Kommandos erkennt, aber nicht bereit ist sie auszuführen. Ansonsten würde ich neben dem Readback "ii" noch mehr Fehlercodes sehen.


RE: CRC 16 berechnen - GerdW - 17.05.2022 19:50

Hallo Kiesch,

häng doch mal das Manual hier an…

Bis dahin kannst du ja dieses hier durchlesen! Smile


RE: CRC 16 berechnen - Martin.Henz - 17.05.2022 22:38

(16.05.2022 09:47 )Kiesch schrieb:  x^16 + x^12 + x^2 + 1

also 0x1005 - komisches Polynom

Das Polynom alleine ist nicht ausreichend.

direct, crc init, crc xor, reflect in, reflect out) fehlt an Information um die Checksumme korrekt berechnen zu können.

Gibt es wenigstens Beispiele?


RE: CRC 16 berechnen - Kiesch - 29.07.2022 07:55

Danke nochmal für die Hilfe. Habe jetzt doch noch über den Hersteller ein (bughaltiges, aber im CRC check funktionierendes) Beispielprojekt gekriegt, dass ich nur noch auf den Betrieb mehrerer Geräte aufbohren musste. Da ich grade gemeckert habe: Immerhin hatte das eine sehr elegante Lösung der Initialisierung der Schnittstelle und Verwendung einer FGVs zum Daten halten. Also strukturell immerhin gut gemacht.

Eines der Probleme war, dass doch nicht wie im Manual beschrieben (und sinnlos) über die letzten zwei Characters ein CRC check erfolgt sondern über den ganzen String (was auch mehr Sinn macht).

Gruß Kiesch

P.S: Hatte ich erwähnt dass ich deswegen erstmal wieder aufgegeben habe die Magie hinter Bit Operationen endlich mal zu begreifen? Angel_not Das bleibt dann für ne ruhige Minute irgendwann mal.