Fehler bei CRC-Bildung

OP (Firma: Uni R.) #691420
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren