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.