Stringvergleich mit c

Gast #887602
Lesenswert?

Hallo Zusammen,

habe einen RFID Reader, der die ID Nr. einer ISO Karte auslesen kann. 
Was ich möchte ist der Vergleich der ID Nr. Die ID kann ich mit Hyper 
Terminal darstellen (siehe Anhang). Ziel ist, wenn eine erwartete ID Nr. 
kommt, leuchtet LED an Mega 16 an. Das ist einfach ein 
Stringvergleichsproblem. Anbei auch die Programmcode. Aber das geht bei 
mir nun nicht. Für die ID kann man 8 byte sehen, aber es gibt noch '\n' 
oder '\0' Zeichen dahinten. Deswegen nehme ich die erste 8 byte aus und 
lege in ein neuem StringArray. Aber es funzt auch nicht, die LED 
leichtet nicht.
Wenn mir hier jemand hilfen kann, bin ich sehr dankbar.


int tmp = 0;
int i,j,k = 0 ;

unsigned char ID[10];
unsigned char IDcopy[8];

int main(void)
{
  USART_Init(USART_BAUD);
  DDRA = 0xff;

  while(1)
  {
    for(i = 0; i < 10; i++)
    {
      tmp = USART_Receive();
      USART_Transmit(ID[i]);
      ID[i] = tmp;
    }

    for(j = 0; j < 8; j++)

      IDcopy[j] = ID[j];

    if(strcmp("E6285CA4",IDcopy) == 0)
      set_bit(PORTA,PA0);
    else clear_bit(PORTA,PA0);



  }

  return 0;
}
Angehängte Dateien:
#887618
Lesenswert?

Entweder du terminierst IDcopy korrekt, also:
1
unsigned char IDcopy[9];
2
...
3
    for(j = 0; j < 8; j++)
4
      IDcopy[j] = ID[j];
5
    IDcopy[8] = 0;

oder du verwendest strncmp, also:
1
if(strncmp("E6285CA4",IDcopy,8) == 0)

Im 2. Fall kannst du dir dann auch gleich das Kopieren ganz sparen, 
also:
1
if(strncmp("E6285CA4",ID,8) == 0)

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