-
        

Ergebnis 1 bis 4 von 4

Thema: EEPROMex writeBlock time_t

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055

    EEPROMex writeBlock time_t

    Anzeige

    Hallo zusammen,

    ich würde gerne mit der Libary EEPROMex von http://playground.arduino.cc/Code/EEPROMex einen Timestamp vom Typ time_t (32bit) im EEPROM ablegen.

    Auf der verlinkten Seite steht
    Data blocks
    Using the block functions any data can be read, written and updated:

    int readBlock(int address, const T& value)
    int writeBlock(int address, const T& value)
    int updateBlock(int address, const T& value)


    where T is the type of the data to read/write/update. This can be a basic type, but also a more complex type like a struct. The return value gives the number of bytes that have been read, written or updated.
    Allerdings komm ich einfach nicht drauf, wie ich den Tiemstamp ins EEPROM legen kann. Egal was ich versuche, ich bekomme immer eine andere Fehlermeldung.

    Hat vielleicht jemand von euch mal mit der Lib gearbeitet und kann mir mit dem Zaunpfahl zuwinken?
    Geändert von Cysign (15.06.2015 um 05:33 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055
    So, ich hab jetzt über Google+ drei Lösungen vorgeschlagen bekommen, wovon zwei funktionieren. Die möchte ich euch nicht vorenthalten

    //int writeBlock(11,(const time_t) 1424267490); // doesn't work...
    //EEPROM.writeLong(11,(unsigned long) 1424267490); // WORKS!
    //EEPROM.writeLong(11, 1424267490); // WORKS

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.01.2014
    Beiträge
    398
    Blog-Einträge
    3
    Kann es sein, dass der Datentyp time_t gar nicht definiert ist?
    Kann man leicht nachholen:
    typedef unsigned long time_t;

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055
    time_t ist der Timestamp, den du durch Libs wie time.h und rtc.h bekommst. Also gehe ich davon aus, dass er definiert ist

    Siehe auch: http://www2.informatik.uni-halle.de/lehre/c/c_time.html

    In den funktionierenden Beispielen wird auf unsigned long zurückgegriffen, da diese vom selben Typ sind. Ich weiß aber noch nicht, ob diese mittelt
    time_t meineVariable = (time_t) EEPROM.readLong(11); wieder als time_t zurückgecastet werden müssen. Das probier ich gleich aus

Berechtigungen

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