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