www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stringvergleich mit c


Autor: Juan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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;
}

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder du terminierst IDcopy korrekt, also:
unsigned char IDcopy[9];
...
    for(j = 0; j < 8; j++)
      IDcopy[j] = ID[j];
    IDcopy[8] = 0;

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

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

Autor: Juan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Stefan,

problem ist schon gelöst. Danke für deine Hilfe.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.