La variabile nome file è defnita come char * nomefile ="gpslog00.txt"
for (int i = 0; i < 100; i++)
{ nomeFile[6] = '0' + i/10;
nomeFile[7] = '0' + i%10;
if (! SD.exists(nomeFile)) { break; }
}
non capisco come faccia ad aggiungere sempre un'unità al nome del file.. se questo esiste già...
in particolare, non capisco questa istruzione:
nomeFile[6] = '0' + i/10; ... cioè sostitusce al carattere in posizoine 6 ... 0 + i/10 ... bho!!!!
ed ancora di più questa:
nomeFile[7] = '0' + i%10; ... cioè sostitusce al carattere in posizoine 7 ... 0 + i%10 ... ma che significato ha il segno %...
Immagine che il nome sia qualcosa tipo XXXXXX00, XXXXXX01 ecc...
nomeFile[6] = '0' + i/10;
Questo codice altro non fa che gestire le DECINE del numero che aggiunge alla fine del file.
Come fa a farlo? Semplicemente perché lo 0 racchiuso fra apici SINGOLI, quindi '0' viene interpretato come char, ossia un tipo di dati che corrisponde al valore ASCII del carattere. Quindi prende i/10, cioè le decine di i e lo somma a 0.
nomeFile[7] = '0' + i%10;
Questo qui fa il MODULO, ossia il resto della divisione con 10 del valore di i. Il modulo è rappresentato dal simbolo %.
Facciamo un esempio: il ciclo parte con i=0. Quindi il nome del file è XXXXXX00. Se non esiste lo salva. Se esiste incrementa i.
Arriviamo ad esempio a i=11.
i/10=1
i%10=1
quindi il nome del file è XXXXXX11
Grazie Leo.. avevo intuito ....
Non mi era chairo che i/10 .. poteva rappresentare le decine, prendendo la parte intera,..... e non sapevo che % rappresenta il modulo...
e se volesimo fare una numerazione a tre cifre.. per esempio fino a 999 come dovremmo fare?
o sto chiedendo troppo? ..... speriamo che non legga Maurotec ... scherzo....
sto riprendendo arduino dopo un anno.. la mia esperienza con la programmazione risale al 1996 con il quick basic di microsoft ..... sto studiacchiando un poco di C adesso per sperimentare arduino...