Compatibilità tra versioni 1.0.5 e 1.5.8

E’ un po’ di tempo che non scrivo sul forum. Prima di tutto un caro saluto a tutti quelli che conosco.
Ma veniamo al problema.
Per molto tempo ho usato la versione della IDE 1.0.5 avendo trascurato di aggiornarla, ma mi sono sempre trovato bene. Da poco ho incominciato a usare la 1.5.8 che avevo installato senza usarla per paura di complicazioni, e infatti:
uno sketch che compilo senza errori con la 1.0.5, mi dà errore con la 1.5.8. Riporto qui le righe su cui mi dà errore e il messaggio:

                  EthernetClient pc_client = ArduinoServer.available();
//controllo se pc_client è true
                  if (pc_client != false){
                    Serial.println(" Client true ");

Arduino:1.5.8 (Windows 7), Scheda:“Arduino Uno”

Sistema_controllo_2.ino: In function ‘void loop()’:
Sistema_controllo_2.ino:292:33: error: ambiguous overload for ‘operator!=’ (operand types are ‘EthernetClient’ and ‘bool’)
Sistema_controllo_2.ino:292:33: note: candidates are:
Sistema_controllo_2.ino:292:33: note: operator!=(int, int)
In file included from C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:7:0,
from Sistema_controllo_2.ino:56:
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/EthernetClient.h:28:16: note: virtual bool EthernetClient::operator!=(const EthernetClient&)
virtual bool operator!=(const EthernetClient& rhs) { return !this->operator==(rhs); };
^
Errore durante la compilazione

Questo report potrebbe essere più ricco
di informazioni con
“Mostra un output dettagliato durante la compilazione”
abilitato in “File > Impostazioni”

Comprendo il fatto che tu sia rimasto alla versione 1.0.5, ma non capisco perché tu voglia usare la versione 1.5.8 quando, attualmente, esiste la versione 1.6.5.

Il problema dovrebbe essere l'uso del tipo di variabile bool usato all'interno della libreria Ethernet.h

Mi sembra di ricordare che è proprio una delle cose che è stata messa a posto nelle versioni più recenti.

Ciao Paolo. :)

cyberhs: Comprendo il fatto che tu sia rimasto alla versione 1.0.5, ma non capisco perché tu voglia usare la versione 1.5.8 quando, attualmente, esiste la versione 1.6.5.

La 1.5.8 era ancora una beta, mentre l'attuale 1.6.5r2 è una stable, sono stati corretti molti bug e ci sono molte migliorie, non ha senso usare la 1.5.8. In particolare nella 1.6.x c'è la toolchian aggiornata il che può creare alcuni problemi con sketch che usano vecchie librerie, però sistemarli è una cosa abbastanza semplice. L'errore specifico è dato da una incompatibilità tra i due operandi, tocca vedere come è definito pc_client e usare un termine di confronto che non va in conflitto. Nel IDE 1.0.x il tipo bool non era reale, era sempre un unsigned char, nel IDE 1.6.x il tipo bool è un vero valore booleano e come tale va usato. Probabilmente se al posto di "false" metti 0, che è uno char, il problema si risolve.