Hallo kann mir mal jemand villeicht helfen ?? ich habe ein Problem mit diesem Code!! Ich möchte mit einem Siemens Händy über die Serielle Schnittstelle Daten versenden!! Jetzt wollte ich nur mal schauen ob die Kommunikation mit dem Handy überhaupt funktioniert, das tut sie eigentlich auch aber nicht ganz!! Das Handy schick wenn man es Anruft über die Serielle immmer RING!! Jetzt möchte ich das mit eine String Vergleich abfangen aber das funktioniert einfach nicht, ich weis nicht mehr weiter!!?? Bitte Danke mfg mathias
> Händy
Argh. Lern schreiben.
Zum Topic: Grenz den Fehler bitte etwas ein. Ein zip-Archiv wird sich
keiner downloaden und komplett nach einem Fehler durchsehen, den du
ohne Probleme auch näher hättest beschreiben können.
Mit "eingrenzen" meine ich aber nicht, eine komplette C-Datei
hochzuladen. Poste bitte nur die paar Zeilen des Stringvergleichs, der
nicht funktioniert.
Reparier aber vorher deine Ausrufe- und Fragezeichentasten. Die
scheinen bei dir zu klemmen.
also hier mal die For-Loop, das einlesen scheint auch zu funktionieren, es steht aufjedenfall mal das richtige auf dem Display, aber der strcmp funktioniert nicht mehr! danke im voraus mfg mathias for(;;){ c = uart_getc(); if ( c & UART_NO_DATA ){ }else{ if(c != '\r'){ rxBuffer[i]=c; i++; }else{ rxBuffer[i] = '\0'; i = 0; lcd_gotoxy(0,0); //bei der Ausgabe auf dem Display //steht auch das Richtige. das //heißt ja das in rxBuffer auch //das richtige eingelesen wurde. lcd_puts(rxBuffer); if(strcmp(rxBuffer,"RING")==0){ state = 1; }else state = 0; if(strcmp(rxBuffer,"OK")==0){ state = 2; }else state = 0; } } switch(state){ case 0: break; case 1: lcd_gotoxy(0,0); lcd_puts("STATE 1, RING"); state = 0; break; case 2: lcd_gotoxy(0,0); lcd_puts("STATE 2, OK"); state = 0; break; } } }
> //bei der Ausgabe auf dem Display > //steht auch das Richtige. das > //heißt ja das in rxBuffer auch > //das richtige eingelesen wurde. Nicht zwangsläufig. Nicht alle Zeichen erscheinen sichtbar auf dem LCD. Meine Glaskugel sagt mir, dass rxBuffer am Ende einen Zeilenumbruch enthält, "RING" aber nicht. Und dass aus diesem Grund das strcmp fehlschlägt. Ist aber sehr unscharf und nur eine Vermutung.
//In rxBuffer steht "RING", state = ? if(strcmp(rxBuffer,"RING")==0){ state = 1; }else state = 0; //In rxBuffer steht "RING", state = 1 if(strcmp(rxBuffer,"OK")==0){ state = 2; }else state = 0; // Nachdem in rxBuffer nicht "OK" steht, ist jetzt state == 0 !!
ach ja werner das ist eine fehler sorry das ist aber nicht das problem glaube ich !! @Chris ja das dachte ich mir auch schon kann ich das irgendwie umgehen? zum Beispiel mit strncmp ? ==> und hier die Länge für Ring angeben ? wäre dan 4 oder mfg mathias
> zum Beispiel mit strncmp ? ==> und hier die Länge für Ring > angeben ? wäre dan 4 oder Wäre eine Möglichkeit, allerdings würde das auch auf "RING FAILED" (Beispiel) true ergeben. Besser wäre es, Zeilenumbrüche aus rxBuffer zu entfernen oder mit "RING\n" zu vergleichen (oder "RING\r\n" oder "RING\n\r" oder [...], was halt in rxBuffer steht).
ja aber was ich nicht verstehe ist: ich lese ja ein und wenn \r kommt dann höre ich auf und schließe den String mit '\0' ab!! wiso steht dann noch ein \n bzw. \r drin??
also auf jeden fall funktioniert es jetzt danke ich habe es jetzt einfach so gemacht !! if(c != '\n' && c!='\r') danke nochmal!! mfg mathias
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.