Aiuto per l'uso della libreria Time

leo72:
Non possiamo metterci a studiare il codice completo per poi rispiegartelo a te :wink:

Ci mancherebbe,
quello ch proprio non mi è chiaro è appunto come viene usato e come si compone "time_t" e "t"

Nell'esempio della libreria "TimeRTCSet", nel void loop appare:

if(Serial.available())
  {
     time_t t = processSyncMessage();
     if(t >0)
     {
        RTC.set(t);   // set the RTC and the system time to the received value
        setTime(t);          
     }
  }

Esattamente non capisco la riga:

time_t t = processSyncMessage();

"time_t" da quello che mi dici dovrebbe essere una unsigned long, ma con la "t" davanti cosa significa?
Foste che sia "time_t" che "t" sono uguali a "processSyncMessage()" ?

Poi anche su "processSyncMessage()" ho diversi dubbi:

#define TIME_MSG_LEN  11   // time sync to PC is HEADER followed by unix time_t as ten ascii digits
#define TIME_HEADER  'T'   // Header tag for serial time sync message

time_t processSyncMessage() {
  // return the time if a valid sync message is received on the serial port.
  while(Serial.available() >=  TIME_MSG_LEN ){  // time message consists of a header and ten ascii digits
    char c = Serial.read() ; 
    Serial.print(c);  
    if( c == TIME_HEADER ) {       
      time_t pctime = 0;
      for(int i=0; i < TIME_MSG_LEN -1; i++){   
        c = Serial.read();          
        if( c >= '0' && c <= '9'){   
          pctime = (10 * pctime) + (c - '0') ; // convert digits to a number    
        }
      }   
      return pctime; 
    }  
  }
  return 0;
}

All'inizio: time_t processSyncMessage() :astonished:

poi: time_t pctime = 0; ma "pctime" non è definita da nessuna parte, appare all'improvviso e non capisco :blush:

ed ancora: pctime = (10 * pctime) + (c - '0') ; // convert digits to a number Sempre più oscuro sommo dei numeri a dei caratteri? :cold_sweat:

brunello:
la libreria dice questo :
setTime(hr,min,sec,day,mnth,yr); // alternative to above, yr is 2 or 4 digit yr (2010 or 10 sets year to 2010)

poi per passare il dato al DS1307
RTC.set(t);

Quindi setTime(t); e setTime(hr,min,sec,day,mnth,yr); si equivalgono????

Ragazzi, sono veramente sempre più confuso, insieme a mechrekt abbiamo scritto 1800 righe di codice "funzionante" ed ora almeno per ciò che mi riguarda, mi domando come ci sia riuscito... =( =( =( =(

Veramente un grazie di cuore a tutti per l'aiuto che mi state dando.

Riccardo