-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Befehl sprintf

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332

    Befehl sprintf

    Anzeige

    Habe in einem Code den sprintf gefunden. Habe auch ein Stück code kopiert. Es geht ein einfach nicht so wie es soll. Damit soll die Spannung an einem Rob gemessen werden. Die Spannung liegt ständig am IC an und wird mit float berechnet und anschliessen angezeigt. Bekomme zwar die Anzeige Batterie und V aber als wert wird nur ein ? angezeigt. Die enrsprechenden Dazei habe ich eingebunden.

    bot_update();
    char text [32];
    float ubatt = 0.0166 * bot_supply - 1.19;

    sprintf(text, "%3.1fV",ubatt);
    gfx_move(25, 0);
    gfx_set_proportional(1);
    gfx_print_text("Batterie :");
    gfx_set_proportional(1);

    gfx_print_text(text);

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Der sprintf-Befehl ist eindeutig richtig.
    Das Problem liegt wohl eher an deiner Berechnung von ubatt.
    Versuch es mal folgendermaßen: float ubatt = 0.0166f * bot_supply - 1.19f;

    Wenn das nicht klappt, versuch mal einen konstanten Wert (z.B. 6.4) mit sprintf auszugeben. wenn das nicht klappt, müssen wir weiterschauen.

    Gruß, Yaro

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo
    habe gleich die Sache ubatt ausprobiert. Das war leider ohne Erfolg. Als nöchstes mache ich den konstanten wert. mal sehen ob das geht.
    Achim

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Welchen Compiler verwendest du?

    Gruß, Yaro

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Ich nehme AVRStudio4. Wenn ich die Zeilen -WI, -u, -vprintf eingebe bekomme ich diese Fehlermeldung. Komme nicht ganz mit

    "cc1.exe: error: unrecognized command line option "-WI""

    Achim

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Der Error sagt, dass die Option -WI von ihm nicht erkannt wird.
    Kenne mich damit leider nicht aus, kann da also nicht weiterhelfen.....

    Hast du sprintf schon versucht, mit einer Konstanten auszuführen?
    sprintf(text, "%3.1fV",6.7534f);
    Hat es geklappt, oder nicht?

    Gruß, Yaro

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Achtung Falle: Ein grosses I sieht fast genau so aus wie ein kleines l.
    Die Option ist -Wl.

    Was ich hier oft noch machen muss: Die Libs libm.a und libprintf_flt.a dazulinken, dass aus dem ? ein brauchbarer Wert wird.
    #ifndef MfG
    #define MfG

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo
    erst mal danke für die Antwort. Habe es gleich ausprobiert. Wenn ich eine Zahl eintippe im sprintf bekomme ich meldung das es double sein soll und keine Anzeige bzw. wird abgebrochen. Habe alles versucht so mit kleinen l und i und 1 und alles gross. Die Datein sind eingebunden. Bekomme trotzdem Fehlermeldung. Nach dem Tutorial soll ich die Datein bei Customer Options > Linker Options eingeben. Richtig?
    Achim

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Versuch es mal so:
    float a = 4.3f;

    sprintf(text, "%3.1fV",(double)a);

    So sollte zumindest keine Fehlermeldung auftreten.

    stdio.h hast du doch sicherlich eingebunden, oder?

    Gruß, Yaro

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo yaro
    Habe das Programm so geändert wie du es beschrieben hast. Das ? bleibt.Ich bekomme kein Ergebnis. Wenn ich die Datei -vfprintf bei Linker Options eintrage bekomme ich wieder einen Fehler angezeigt. Die stdio.h steht im Kopf, wenn ich sie stdio_init() bekomme ich auch einen Fehler. Kennst du vielleicht einen anderen Weg um die Spannung anzuzeigen ohne sprintf. Es geht doch dabei nur um die Umrechnung und die ricjtige Darstellung.
    Achim

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •