Hallo Zusammen, irgendwie sehe ich vor lauter Bäumen den Wald nicht. Ich sende mit RS-232 ein Steuerkommando an den Kontroller MCT?, HDW? usw. Im Prinzip funktioniert alles. Beim Testen habe ich jetzt festgestellt, wenn der String nur minimal abweicht (z.B. MCI? trotzdem als korrekt gelesen wird.. Ich habe es mit strncmp-Befehl probiert, komme aber nicht wirklich weiter. Weiß jemand wie man dies lösen kann. unsigned char str_RS232[4]; if(strcmp(*"MCT?", *str_RS232) == 0) { PORTB = 0X01; LcdPrintf(3,9, (const MEM_MODEL rom char *)"PIC18F97J60 "); printf("PIC18F97J60 \n\r"); } Viele Grüße Ingo
Ingo Schick schrieb: > > unsigned char str_RS232[4]; ? Der String "MCT?" passt da aber gar nicht rein! "MCT?" benötigt mindestens ein Array der Länge 5(!). Du hast das obligatorische abschliessende \0 vergessen. Und das muss da rein, damit du strcmp benutzen kannst. > > if(strcmp(*"MCT?", *str_RS232) == 0) was machen die * hier? Du vergleichst nicht deine Strings! if( strcmp( str_RS232, "MCT?" ) == 0 )
Hallo Karl-Heinz, das Array habe ich angepasst. Ohne die Sterne compiliert der compiler. Aber dann geht gar nichts. Mit den Sternen fragt er zuminstest einigermaßen ab. Sehr seltsam. Sowas hatte ich noch nie. gets1USART(str_RS232,4); LcdPrintf(2,9, (const MEM_MODEL rom char *)"%.4s", str_RS232); if(strcmp(*"MCT?", *str_RS232) == 0) { PORTB = 0X01; LcdPrintf(3,9, (const MEM_MODEL rom char *)"PIC18F97J60 "); printf("PIC18F97J60 \n\r"); }
Ingo Schick schrieb: > Hallo Karl-Heinz, > > das Array habe ich angepasst. Ohne die Sterne compiliert der compiler. > Aber dann geht gar nichts. Mit den Sternen fragt er zuminstest > einigermaßen ab. Nö tut er nicht. Ich könnte dir das jetzt auseinanderklamüsern, was da wirklich passiert, aber das ist mir ehrlich gesagt heute schon zu mühsam. Das einzige was mich wirklich verblüfft: Wie hast du den Unsinn eigentlich durch den Compiler gekriegt? > gets1USART(str_RS232,4); was bedeuten die 4 hier? Die Länge des übergebenen Arrays oder die Anzahl der druckbaren Zeichen? Meistens ist es die Arraylänge. Also muss da auch 5 hin. Bzw. schreibs in dem Fall besser so gets1USART(str_RS232,sizeof(str_RS232)); > LcdPrintf(2,9, (const MEM_MODEL rom char *)"%.4s", str_RS232); lass die 4 weg. Mann - du versteckst ja überall deine Fehler!
habs am laufen. Mit dem Debuggerhabe ich mir die Strings angeschaut. Da stand nur Mist drin. Im Microchip Forum hatte jemand das gleiche Problem... Der Compiler hat einen Fehler. Der selbe Queltext funktioniert auf dem CCS compiler einwandfrei....
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.