- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 9 von 9

Thema: Gettime(); Funktion ausgeben mit SerWrite();

  1. #1

    Gettime(); Funktion ausgeben mit SerWrite();

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo!

    Ich wollte gerne die Zeit ausgeben, die mein Asuro braucht um das Hauptprogramm durchzuführen.

    Wie mache ich das genau?


    Danke!!!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    gettime giebt einen unsigned ling zurück.
    dieser muss jetzt in einen string umgewandelt werden. daüf kannst du diese funktion hernehmen:

    Code:
    char *convert (unsigned long int wert, int laenge)
    {
       char *ret =(char *) malloc(laenge+1 * sizeof(char));
       int i;
    
       for(i=0; i<laenge; i++)
          {
             ret[laenge-i-1] = (wert % 10) + 48;
             wert = wert / 10;
          }
       ret[laenge]='\0';
       return ret;
    }
    das ist im prinzip das gleiche wie bei itoa(). allerdings ist itoa() nicht ansi c.

    paramter 1 ist die zeit, parameter 2 ist die länge der zahl. im zweifelsfall 10 übergeben.
    der string der zurüdkgegeben wird, kann dann direkt mit serwrite ausgegeben werden.
    ...

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    Wie wärs einfach mit PrintInt()?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    PrintInt überträgt einn integer.
    bei gettime haben wir es aber mit einem unsigned long int zu tun.

    wenn man versucht des dann mit printint zu übertragen kommt schwachsinn raus.
    ...

  5. #5
    Hallo,

    Vielen Dank erstmal! Nun habe ich Probleme die Funktion anzuwenden. :/
    Ich habe char *convert (unsigned long int wert, int laenge); deklariert und die Funktion in meinen Funktionsdefinitionen geschrieben.
    ret ist der ausgegebene String oder verstehe ich das falsch? Nun, was muss ich bei SerWrite(hier reinschreiben)?

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    beispiel:

    Code:
    unsigned long int time;
    time = Gettime();
    char string[11] = convert(time, 10);
    SerWrite(string, strlen(string);
    ist jetzt nur mal so auf die schnelle hingeschrieben, und noch nicht getestet.,
    ...

  7. #7
    Hallo,

    Leider funktioniert es nicht. Was genau bedeutet "strlen"?

    edit:
    Code:
    unsigned long int time;
      unsigned char string[11];
      time=Gettime();
      string[11] = *convert(time,10);
    
    SerWrite(string,strlen(string));
    So compiliert er das. Aber er gibt auch nur seltsames aus, auf jedenfall nicht die Zeit. Muss ich im Hauptprogramm die Gettime Funktion aufrufen? Und ich muss doch auch ein Ende setzen oder? Bisher habe ich bevor ASURO losfährt nur das Gettime(); .

    edit2: Nun ja, Encoder_Init hab ich vor der Ausgabe und Encoder_Stop dannach, daran dürfte es nicht liegen. Hab Gettime mal aus dem Hauptprogramm rausgenommen... aber er gibt immernoch nur Áo aus bzw. seltsames...

    edit3: Ne, krieg ich irgendwie nicht hin . Hab schon string versucht global zu deklarieren, aber wenn ich das dann unsigned char mache, funktioniert eine andere Ausgabe von mir nicht mehr. Nur mit char gehts, aber er gibt dann einfach gar nichts mehr aus. :-/

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    Welchen Wertebereich hat denn gleich nochmal besagtes unsigned long int?

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    0 bis 4294967295

    (keine garantie)
    ...

Berechtigungen

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

Solar Speicher und Akkus Tests