[RISOLTO] Recupero sketch non salvato?

IDE 2.3.4 su Windows 11.

Ho fatto delle modifiche ad uno sketch che ho compilato e caricato su Arduino UNO e funziona. Il problema, dopo svariate modifiche, compilazioni, e upload, è che non avendo "Auto save" attivo mi si è spento il PC e quindi al riavvio apro l'IDE ed ovviamente trovo il vecchio codice, non ha salvato le modifiche.
Ricordo di aver visto tempo fa che in una qualche cartella rimanevano le tracce dell'ultima compilazione sotto forma di alcuni file, uno dei quali aveva incluso il codice (anche se con delle righe addizionali messe probabilmente dal compilatore durante la fase di compilazione) ed in questo modo avevo recuperato l'ultimo codice, ma è passato del tempo e non ricordo dove l'abbia trovato.
Qualcuno sa dirmi dove il compilatore salva il codice (deve per forza farlo per compilare, linkare, e poi fare upload), così provo a recuperare almeno 3 ore di lavoro? Grazie!

Non lo so, ma buona regola è salvare ogni volta che si fa un nuovo passo. Io ogni volta che aggiungo codice salvo con _t1, _t2, _t3 i temporanei, potendo tornare a un temporaneo precedente se ho preso una via sbagliata. Ciò non dovrebbe accadere se si fa prima un diagramma di flusso corretto, ma è sempre bene salvare quando si ritiene opportuno. Il salvataggio automatico in generale non mi piace: anche con Word o Excel preferisco salvare dopo aver controllato ciò che ho scritto.

È molto utile anche un computer portatile con la batteria carica.

Mi rispondo da solo, l'ho trovato, riporto la cosa in modo che possa essere utile anche ad altri che dovessero trovarsi nella mia situazione (l'importante è che il codice "buono" sia stato compilato per ultimo).

Si trova nella cartella ("utente" è il vostro identificativo utente):

c:\Users\utente\AppData\Local\arduino\sketches\

Qui trovate varie cartelle con nomi esadecimali: all'interno di queste basta cercare un file con il nome dello sketch ma con estensione *.cpp.

Per recuperare lo sketch basta aprire il file *.cpp e rimuovere tutte le linee aggiunte dal compilatore, ad esempio se il file era "sketch.ino" cancellare intanto le prime righe:

#include <Arduino.h>
#line 1 "C:\\Users\\utente\\Documents\\Arduino\\sketch\\sketch.ino"

poi anche tutte le righe con i prototipi delle funzioni aggiunti prima del setup(), esempio:

#line 41 "C:\\Users\\utente\\Documents\\Arduino\\sketch\\sketch.ino"
void setup();
#line 57 "C:\\Users\\utente\\Documents\\Arduino\\sketch\\sketch.ino"
void loop();
... eccetera, cancellarle tutte fino all'inizio "void setup()"

Una volta "depurato" così, copiare il risultato ed incollarlo dentro al vero file "*.ino", quindi aprire nuovamente l'IDE.

1 Like

Eh, lo so, faccio anche io così, ti ringrazio, ma erano modifiche fatte "al volo" sul fisso di casa e non pensavo avrei avuto problemi.
Tra l'altro in genere compilo con il portatile, che non soffre del problema dell'alimentazione (per i progetti "importanti" faccio poi sempre una copia sul NAS ad ogni "release").

Se poi lo facessi per lavoro metterei sotto Git e pace :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.