hi wie kann ich in codevision einen string an eine prozedur übergeben ? mit dem ccs c-compiler für pics ging es einfach printf(name meiner lcd routine,"mein text"); so konnte ich einfach einen string auf zb. ein lcd schreiben oder an jede andere prozedur übergeben. seit avr und codevision klappt das nicht mehr, es kommt die warnung "suspicious pointer conversion" und auf dem display kommt nur schrott an. mein zweiter versuch einen string zu übergeben war lcd_put(unsigned char string[]) { ..meine lcd routine } beim aufruf mit "LCDSHOW("mein text");" kommt dann "function parameter incompatibel with its declaration" , warum ? eine möglichkeit wäre eine globales array, zu verwenden in das ich meinen string schreibe und die lcd-routine greift dann darauf zu, aber ist das speicherplatzverschwendung und nicht sehr komfortabel. forum und goggle bringen mir nichts hilfreiches, vieleicht hat wer von euch den entscheidenden tip für mich ? thx mike
also ich schreibe meine Texte immer gern alle zusammenhängend an einen Platz im Programm und nicht überall verstreut, vereinfacht Wartung und Änderungen erheblich. flash unsigned char text1[]="bla"; flash unsigned char text2[]="blabla"; ausgeben kannst du es dann ganz einfach mit lcd_putsf (text1);
hi crazy horse danke für die antwort aber es geht mir nicht darum statische texte aus flash oder eeprom auszugeben. ich schaffe es nicht einen string an eine prozedur zu übergeben aber bei codevision ist zb. eine fertige lcd-routine dabei bei der ich mit lcd_putsf("Hello world"); einen string direkt übergeben kann. die aufgerufene prozedur ist in lcd.h wie folgt deklariert void lcd_puts(char *str); wenn ich allerdings eine eigene prozedur auf diese weise deklariere und aufrufen will kommt wieder "function parameter incompatibel with its declaration", warum klappt das nicht ? diese mitgelieferten lcd routinen kann ich nicht verwenden da ich ein T6963display mit meinen eignen routinen ansprechen will und da nützen mir die nichts. mfg mike
Hi also wenn Du was mit Strings machen willst, musst Du IMHO in Codevision erst ein Array von Char anlegen und auch die Größe festlegen. Dann im Bedarfsfall so was wie char ausgabe[4]; //BLABLABLA lcd_puts(ausgabe);
Hallo Leute Bin noch Anfänger aber ich knappere leider gerade an dem gleichen Problem :-( Beispiel: ---------------------------------- #include <avr/io.h> #include <string.h> char puffer[30]; void LCD(char *text) { } void main() { LCD("test"); } ---------------------------------- Dieser Code funktioniert unter WinAVR aber leider nicht unter Codevison :-( Es kommt die Meldung: parameter #1 of type 'flash unsigned char*' is incompatible with type 'unsigned char*' specified in the funktion 'LCD' declaration Dann probiere ich es mit flash: ------------------------------------ #include <avr/io.h> #include <string.h> char puffer[30]; void LCD(flash unsigned char *text) { } void main() { LCD("test"); } ---------------------------------- Dann meckert der Compiler nicht mehr !! Leider kann ich aber den String nicht weiterverarbeiten: ---------------------------------- #include <avr/io.h> #include <string.h> char puffer[30]; void LCD(char *text) { strcpy (puffer,text); // <---------- } void main() { LCD("test"); } ----------------------------------- Da meckert wieder der Compiler! :-( :-( Unter WinAVR funktioniert es. Wer weis da Rat? Bitte kann mir jemand da einen Tipp geben, wie man das bewältigen kann. l.G. Robert
Beim CV landen Stringkonstanten immer im Flash, d. h. dein "test" hat den Typ 'flash char*'. CV stellt Funktionen zum Kopieren vom Flash ins RAM zur Verfügung (hier 'strcpyf()'): ---------------------------------- #include <avr/io.h> #include <string.h> char puffer[30]; void LCD(flash char *text) { strcpyf (puffer,text); } void main() { LCD("test"); } ----------------------------------- Das sollte gehen. Die Funktionen findest du in der Doku/Hilfe unter "String functions". - Michael
Hallo Michael Danke für die sehr schnelle Antwort!:-) Du hast mir sehr geholfen :-) Gibt es eigentlich eine oft gebrauchte Anlaufstelle für CodeVision? Vielleicht eine Userliste oder Forum? (Vielleicht was in Deutsch?) l.G. Robert
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.