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; }
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) |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.