Hallo Leute,
es soll von einem "String" eine CRC erstellt werde. Dabei halte ich mich
an die Routinen aus der util/crc16.h:
unsigned int _crc_ibutton_update(uint8_t crc, uint8_t data)
{
uint8_t i;
crc = crc ^ data;
for (i = 0; i < 8; i++)
{
if (crc & 0x01)
crc = (crc >> 1) ^ 0x8C;
else
crc >>= 1;
}
return crc;
}
In meinem Programm (mit der VCL erstellt (BCB6)) rufe ich die Routine
auf:
char str[30];
uint8_t crc;
strcpy(str, "DAT");
strcat(str, ";");
strcat(str, "0,1223:320");
Label6->Caption=str;
for (uint8_t i=0; i<strlen(str); i++)
crc = _crc_ibutton_update(crc, str[i]);
Label7->Caption=IntToStr(crc);
Mir ist nun folgendes Problem aufgefallen: Wenn ich die maus aus dem
Programmfenster herausbewege, verändert sich die ermittelte CRC obwohl
der eingehende String der gleiche ist. Bleibt die Maus im Fenster bleibt
die crc konstant. Könnt ihr mir das Verhalten erklären?
Viele Grüße,
Simon
Problem gelöst. Es lag daran, dass ich die Variable uint8_t crc zwar gebildet, aber nicht initialisiert habe, bevor ich die Prüfsumme hab bilden lassen. vG
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.