LabVIEWForum.de - CRC8

LabVIEWForum.de

Normale Version: CRC8
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe User liebe Users,

ich bin ein Anfänger in der Labview-Programmierung und ich tue mich gerade schwer mit der implementierung eines CRC8-Codes in Labview. Der Code ist bereits, wie folgt in der C-Sprache implementiert:

int8 calc_crc(int8 smb_byte, int8 crc_in)
{
int8 crc_polyn= 0x07;
int8 smb_crc=crc_in;
for ( int i=0; i<8; i=i+1)
{smb_crc= (((smb_crc<<1)& 0xFF)
^(((smb_crc >> 7) ^ (sm_byte >> (7-i))) & 0x1)
? crc_polynom : 0);
}
return smb_crc;
}

Ich habe zwar schon über den Formelknoten versucht dies in Labview umzusetzen, aber das Ergebnis der CRC ist nicht zufrieden stellen.
Nämlich ich muss bei folgenden Bits Eingabe: aa55 6f00 e381 27c4 03a2 6f6c 1c09 266d 0000 0c00 6a68 8000 6a68 8000 25a0 1812

CRC=b8 erhalten.

Über jede schnelle Hilfe würde ich mich sehr freuen.

Viele Grüße, Stomy
Hi,

habe mir deine Aufgabe zwar nicht angesehen, aber ggf. hilft dir das ja auch schon weiter ? Smile

http://labviewportal.eu/de/downloads/21-...und-crc-16
Da habe ich auch schon nachgeschaut, leider hilft es mir nicht weiter.
Vielen Dank für die schnelle Antwort.

Viele Grüße, Stomy
Kannst du vielleicht in Worten beschreiben, was da gerechnet werden soll um das CRC8 zu erhalten? Ich muss ganz ehrlich sagen, dass meine C Kenntnisse für den Code der da steht doch grade nich ausreichen.
Das sollte ja aber vermutlich auch komplett in LV umsetzbar sein.

Was du alternativ auch machen könntest, wäre den code als C Programm durchzukompilieren und dann als dll in LV aufzurufen (wäre eher ein Workaround, falls du das nicht als "richtigen" LV code umsetzen willst).
Hallo Stomy,

Code:
int8 calc_crc(int8 smb_byte, int8 crc_in)
{
int8 crc_polyn= 0x07;
int8 smb_crc=crc_in;
for ( int i=0; i<8; i=i+1)
{smb_crc= (((smb_crc<<1)& 0xFF)
^(((smb_crc >> 7) ^ (sm_byte >> (7-i))) & 0x1)
? crc_polynom : 0);
}
return smb_crc;
}
- Wieso muss man ein int8 mit 0xFF verUNDen? (Wenn ich den C-Code richtig interpretiere...)
- Wo ist die Variable/Konstante "crc_polynom" definiert?
- Interpretiere ich den Dreizeiler richtig: IF(Ergebnis von boolsche Operation=TRUE) THEN smb_crc ="crc_polynom" ELSE smb_crc =0 ???

Zitat:Da habe ich auch schon nachgeschaut, leider hilft es mir nicht weiter.
Warum nicht?
Referenz-URLs