[RISOLTO] Problema compilazione sketch...

Salve,
sto diventando matto dietro un problema che ho con uno sketch, premetto che lo sketch non è realizzato da me ma lo ho modificato e che il problema c'è anche con quello originale. Non riesco a compilare lo sketch con le versioni recenti della IDE Arduino (ho provato le 1.8.x) ma lo stesso sketch senza nessuna modifica funziona sulla IDE 1.5.8 senza nessun errore. Ho prima installato la versione installer Windows, poi sono passato a quella zip portable (in questo modo posso avere contemporaneamente le due versioni e poi ho letto che la versione installer da problemi). Vi allego il log del compilatore in formato txt, mentre per lo sketch vi invio i files che compaiono nella lista degli errori. In caso posso cercare di fare uno zip e mettere un link su qualche host se serve...
Mi date una mano? Grazie.

Soluzione:
https://forum.arduino.cc/index.php?topic=565873.36

Problema di corrispondenza maiuscole / minuscole tra file .ino e cartella contenitore.

Error 1.8.6 portable.txt (29.4 KB)

PVoutput.ino (3.75 KB)

Time.ino (3.38 KB)

WebStuff.ino (3.32 KB)

BaseSensor.cpp (2.16 KB)

Solarmetermini.ino (4.76 KB)

Ho continuato a cercare e leggere su vari siti (tutti in lingua inglese) e da quello che sono riuscito a capire il problema deriva dal fatto che il progetto è suddiviso in vari files .ino, .h e .cpp. Questi vengono ricombinati in fase di compilazione in un file unico ma seguendo un ordine alfabetico del nome file, quindi c'è la possibilità che qualche variabile o funzione venga richiamata nello sketch risultante prima che questa venga dichiarata.
Mi confermate che possa essere questo il problema che porta agli errori che ho linkato nel primo post?
E se si, come mai nella versione precedente (1.5.8) della IDE fila tutto liscio?
La soluzione che viene proposta è l'utilizzo della keyword EXTERN ma non ho capito come fare ad utilizzarla per ovviare ai problemi avuti. Qualcuno può dirmi se effettivamente possa essere la soluzione e magari spiegarmi esattamente come intervenire nel caso specifico?
Grazie.

EDIT: Allego anche il file Basesensor.h che potrebbe essere causa di tutto (viene definita una classe utilizzata poi in varie parti dello sketch).

BaseSensor.h (2.29 KB)

Crea uno .zip con TUTTI i files necessari alla compilazione ed allegalo (fino ad 1.8MB puoi allegare).

Solo così, FORSE, qualcuno dedicherà del tempo alla cosa e magari potrà indicarti dove è il problema.

Guglielmo

Pensavo non si potessero allegare files.zip, altrimenti l'avrei fatto da subito. Grazie mille!
Allego il progetto completo più un file pdf che spiega come installare due librerie esterne necessarie allo sketch (Time e MsTimer2).

SolarMeterMini.zip (298 KB)

Ciao...io uso l'IDE 1.8.5 e mi compila senza errori (verbose attivo).

Stasera come ho un attimo scarico quella versione e provo. Grazie.

ORSO2001:
Ciao...io uso l'IDE 1.8.5 e mi compila senza errori (verbose attivo).

Strano perché a me da gli stessi errori che da al OP sia con la 1.8.5 che con la 1.8.6 su macOS ... ::slight_smile:

Guglielmo

non saprei...se lo compilo per una UNO mi dice "sketch troppo grande" ma se lo compilo per la MEGA nessun errore....

Si, scusate, non avevo precisato che andasse compilato per la mega e non per la uno (per la uno bisogna disattivare il log su SD dal file solar meter mini.ino e dal file userdefs.h).
Non sono ancora riuscito a provare con l'altra versione del IDE tra un paio d'ore lo faccio e vi aggiorno, anche se ho poche speranze dopo il post di Guglielmo).

Ho appena fatto una nuova installazione della IDE v1.8.5 versione zip portable su MS Windows 10 (v1803) e ho provato ad avviarla sia con privilegi admin che senza con lo stesso risultato (leggermente diverso dalla IDE v1.8.6 ma sempre senza riuscire a compilare):

Devo allegare in txt per eccessiva lunghezza.

Error 1.8.5.txt (29.4 KB)

ORSO2001:
non saprei...se lo compilo per una UNO mi dice "sketch troppo grande" ma se lo compilo per la MEGA nessun errore....

Ma hai preso lo zip così come è, scompattato, aperto SolarMeterMini.ino e compilato o hai fatto anche qualche altra cosa ? ? ?

Guglielmo

ho creato una cartella dal nome "Solarmetermini" ho decompresso lo zip al suo interno...lanciato il "Solarmetermini.ino"...seguito il pdf per l'aggiunta delle due librerie....chiuso e riaperto il progetto per sicurezza...e compila...in allegato il mio output della compilazione

output compilazione.txt (68.4 KB)

Stavo confrontando i due files txt (il mio con quello di orso) ed ho trovato una cosa strana, guardate la parte evidenziata nei due files:
nel mio che da errori è ripetuta due volte l'estensione .cpp (BaseSensor.cpp.cpp) invece nell'altro solo una volta (BaseSensor.cpp).
Che sia questo il problema? E da cosa potrebbe dipendere, dato che anche sul mio PC ma con la IDE v1.5.8 tutto funziona correttamente?

Scorrendo tutto il file txt relativo agli errori di compilazione, mi sono accorto che l'unico file del quale viene raddoppiata l'estensione .cpp è il file BaseSensor.cpp; gli altri file vengono sempre richiamati con l'estensione corretta (ad esempio S0Sensor.cpp oppure SPI.cpp).
Ho fatto una ulteriore prova rinominando il file BaseSensor.cpp e BaseSensor.h come BSensor.cpp e .h rispettivamente e modificando tutti i riferimenti all'interno dello sketch di conseguenza (pensando potesse dipendere dal fatto che superasse gli 8.3 caratteri) ma anche questo non risolve.

A me compila senza problemi con la 1.6.12 su ubuntu.
Se può servire l'output della compilazione spiegatemi come salvarlo così ve lo allego.

ORSO2001:
ho creato una cartella dal nome "Solarmetermini" ho decompresso lo zip al suo interno...lanciato il "Solarmetermini.ino"...seguito il pdf per l'aggiunta delle due librerie....chiuso e riaperto il progetto per sicurezza...e compila...in allegato il mio output della compilazione

Fai uno zip della cartella ed allegalo ... così provo anche con quello che a te compila ... ::slight_smile:

Guglielmo

Vi chiedo la cortesia di editare il file userdefs.h e togliere i dati personali che inavvertitamente ho lasciato (soprattutto la chiave pvoutput.org. Grazie. (il file zip messo da me l'ho già editato io).

OK...adesso sono via...sta sera modifico il file userdefs ed allegò uno zip

ORSO2001:
sta sera allegò uno zip

Potresti fare anche uno screenshot della cartella temporanea dove avviene la compilazione per vedere quali files ci siano? Trovi il path corretto (cambia ad ogni compile) nel testo dei messaggi della ide e devi farlo senza chiudere la ide altrimenti la cartella viene eliminata. Grazie.

Ho provato anche con la 1.8.6 sempre su ubuntu e compila senza problemi.