hallo zusammen, ich möchte auf meinem display einen zahlenwert über eine variable anzeigen. leider bin ich fast am verzweifeln. vielleicht kann mir jemand weiter helfen. vielen dank im voraus. int main(void) { int a; int string; a = 25; itoa (a, string, 10); // Innen LCD_Print(string, 6, 113, 2, 1, 1, yellow, black); LCD_Print("o", 46, 107, 2, 1, 1, yellow, black); der wert wird nicht angezeigt. wenn ich die 10 hinter string rein mache, kommt eine fehlermeldung, dass zu viele kommas im befehl lcd_print sind.
..ausserdem kommt beim kompilieren diese meldung: displaydemo.c: In function 'main': displaydemo.c:35: warning: left-hand operand of comma expression has no effect displaydemo.c:35: warning: left-hand operand of comma expression has no effect displaydemo.c:35: warning: statement with no effect displaydemo.c:80: warning: passing argument 1 of 'LCD_Print' makes pointer from integer without a cast
Martin Schmid wrote:
> int string;
Dem Compiler ist der Name egal, einen String kann die Variable "string"
nicht speichern, sondern nur einen int.
itoa verlangt ein Array von mindestens 7 Byte ("-32768\0"), also
1 | char string[7]; |
Und dann schau Dir genau die Argumentenfolge von itoa an. Peter
..ich wollte eigentlich eine zahl in einen string umwandeln, da nur so scheinbar der wert über eine variable ans display geschickt werden kann. gruss martin
Martin Schmid wrote:
> ..ich wollte eigentlich eine zahl in einen string umwandeln
Und genau dafür mußt Du ne Variable bereitstellen, die den Text
(Char-Array) auch aufnehmen kann.
Peter
sorry..ich blick da nicht durch. hab jetzt mal folgendes gemacht: int a; char string[7]; a = 25; itoa (a, string,10); // Innen LCD_Print(string, 6, 113, 2, 1, 1, yellow, black); LCD_Print("o", 46, 107, 2, 1, 1, yellow, black); kommt kein wert auf dem display und folgende meldung: displaydemo.c:39: warning: left-hand operand of comma expression has no effect displaydemo.c:39: warning: left-hand operand of comma expression has no effect displaydemo.c:39: warning: statement with no effect ich hab nur diese dateien eingebunden: #include <stdio.h> #include <avr/io.h> #include <avr/wdt.h> #include <util/delay.h> #include <math.h> #include <avr/pgmspace.h> #define LCD_DDR DDRB #define itoa //#include <stdlib.h> vielleicht fehlt da ja was gruss martin
>ich hab nur diese dateien eingebunden: >#define itoa >//#include <stdlib.h> Durch das '#define itoa' wird jedes 'itoa' aus dem Quellcode entfernt. Aus 'itoa(a, string,10);' wird also '(a, string,10);', und das macht keinen Sinn, deswegen auch die Warnings. Lösch das am besten wieder und tu die beiden Slashs vor '//#include <stdlib.h>' weg. MfG Mark
> #define itoa
Was soll das denn? itoa ist eine Funktion aus der stdlib.h. Außerdem
wäre es sinnvoll, mal den ganzen Code zu posten, damit man auch mit den
Zeilennummern was anfangen kann. Wo und wie ist übrigens die Funktion
LCD_Print definiert?
Außerdem solltest Du Dich dringendst mit ASCII-Zeichen befassen. Ohne
das Verständnis, was ein ASCII-String eigentlich ist, brauchst Du an der
Stelle zunächst mal nicht weiterzumachen.
...sorry, bin halt noch anfänger und gerade am lernen. code hab ich angehängt. lcd_print ist in der #include <glcd-Display3000-211.h> definiert: void LCD_Print(const char* Text, unsigned char X, unsigned char Y, unsigned char FontNr,unsigned char XScale, unsigned char YScale, unsigned int ForeColor, unsigned int BackColor);
displaydemo.c: In function 'main': displaydemo.c:39: warning: left-hand operand of comma expression has no effect displaydemo.c:39: warning: left-hand operand of comma expression has no effect displaydemo.c:39: warning: statement with no effect
mit eingebundener #include <stdlib.h> kommen mehr fehlermeldungen In file included from displaydemo.c:11: c:/winavr-20071221/bin/../avr/include/stdlib.h:445: error: expected identifier or '(' before 'int' displaydemo.c: In function 'main': displaydemo.c:39: warning: left-hand operand of comma expression has no effect displaydemo.c:39: warning: left-hand operand of comma expression has no effect displaydemo.c:39: warning: statement with no effect make.exe: *** [obj/displaydemo.o] Error 1
@ Martin Schmid (paul-stanley) Dein tödlich, schwachsinniges
1 | #define itoa
|
ist immer noch drin. Und so ein Grafik-LCD ist KEIN Anfängerprojekt, schon gar nciht wenn elementare Programmiergrundlagen fehlen. versuchs mal mit zwei Nummern kleiner. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung MfG Falk P.S. Deine Quelltextformatierung ist unter aller Sau. Das ist der Lesbarkeit und Fehlersuche nicht sonderlich zuträglich.
hallo falk, hab #define itoa gelöscht. jetzt wird der wert als variable übergeben und auch angezeigt. getraue nmich jetzt fast nicht mehr zu sagen, dass keine werte hinter dem komma übergeben werden. ja, ich war da wohl zu optimistisch mit dem ersten projekt. das soll ein kleiner board computer fürs auto werden. die ganze sensorik drum rum kann ich ohne probleme..aber ich hab vor 20 jahren mal basic gelernt und seither nie mehr was programmiert. könnte das teil meinem arbeitskollegen geben und er würde es mir programmieren. aber ich will trotzdem einwenig versuchen was ich zusammen bekomme. gruss und danke für die hilfe martin
Martin Schmid wrote: > getraue nmich jetzt fast nicht mehr zu sagen, dass keine werte hinter > dem komma übergeben werden. Das ist korrekt, int ist das Format für Ganzzahlen und die haben kein Komma. Übergibt man in C einem int eine Kommazahl, wird der Kommateil einfach abgeschnitten. Sonst wärs ja kein Ganzzahl mehr, auch C kann nicht gegen die Mathematik verstoßen. Peter
@ Martin Schmid (paul-stanley) >hab #define itoa gelöscht. >jetzt wird der wert als variable übergeben und auch angezeigt. Autsch! Na wenigsten läuft es jetzt. >getraue nmich jetzt fast nicht mehr zu sagen, dass keine werte hinter >dem komma übergeben werden. sprintf() ist dein Freund. MfG Falk
..freund wäre doch glatt übertrieben. hab nun alles mögliche ausprobiert sprintf(string,"%2,%1",a); bringt alles nichts. nach dem komma wird nichts mehr übergeben. gebe für heute auf :-( gruss martin
@ Martin Schmid (paul-stanley) >..freund wäre doch glatt übertrieben. >hab nun alles mögliche ausprobiert >sprintf(string,"%2,%1",a); >bringt alles nichts. nach dem komma wird nichts mehr übergeben. >gebe für heute auf :-( Das bringt alles nichts. Gehe zurück zu den Grundlagen Gehe direkt dorthin Ziehe keine 4000 Euro ein. Lies mal ein Grundlagenbuch über C. In Ruhe. Ja, das dauert einige Stunden bis Tage, bis du das alles wirklich verstanden hast Wochen bis Monate. Dann reden wir weiter. MfG Falk
...muss das teil doch von meinem arbeitskollegen programmieren lassen. kaufe mir aber ein zweites board und übe da dann richtig. ohne zeitdruck (da der board computer ins auto muss) und vorherigem einlesen in die grundlagen. gruss martin
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.