error: ambiguous overload for 'operator+='

Salve a tutti! Problemino ho cambiato pc... S.O. Windows Arduino mega Arduino ide 1.0.5 e anche l'ultima release 1.5.8 (se non erro) Ho ricopiato tutta la cartella con tutte le librerie... Ho avviato l'ide e mi da quell'errore li che prima non mi dava. Non e' stato cambiato nulla se non l'installazione del pc.... questa e' la routine:

  if (Datalog != false) {
    // make a string for assembling the data to log:
    String dataString = "";
Lo da anche sulle altre float

    dataString = (RTCbuf);
    dataString += ",";
    dataString += (TAttuale);  
    dataString += ",";
    dataString += (TCoclea);  
    dataString += ",";
    dataString += (LevelPellet);      
#ifdef DAT_DEBUG
    Serial.print("Variabile Datalog = ");
    Serial.println(Datalog);
#endif

La routine funzionava perfetta.... La variabile TAttuale e' una float

Chi sa dirmi perche?

Che versione di Arduino avevi sul vecchio PC? Hai provato senza le librerie aggiuntive? Le ultime due versioni sono la 1.0.6 per UNO, MEGA, LEONARDO, ecc e la 1.5.8 per la DUE e la YUN.

elpapais: Salve a tutti! Problemino ho cambiato pc... S.O. Windows Arduino mega Arduino ide 1.0.5 e anche l'ultima release 1.5.8 (se non erro) Ho ricopiato tutta la cartella con tutte le librerie... Ho avviato l'ide e mi da quell'errore li che prima non mi dava. Non e' stato cambiato nulla se non l'installazione del pc....

provato sia con la 1.0.5 sia con la 1.5.5.8 mi danno errore il programma e' stato scritto con l'ide 1.5.5 ma comunque da' errore. le librerie ci son tutte... ma quello che mi fa spece e' che non e' stato modificato e da errore anche a una persona che appunto ha ricevuto il software ma gli da errore... sembra quasi che non si possa fare quel concatenamento di variabili.

Non puoi “sommare” ad un oggetto Stringa un float senza averlo prima convertito in stringa.

Per farlo puoi usare la funzione dtostrf(X, Size, Decimal, Buffer) ove
X —> float
Size —> char (lunghezza stringa)
Decimal —> unsigned char (numero decimali)
Buffer —> array char di dimensione Size + 1

cyberhs:
Non puoi “sommare” ad un oggetto Stringa un float senza averlo prima convertito in stringa.

A me lo permette:

float Numero;
String Risultato;

void setup() {
    Serial.begin(19200);
    Numero = 12.4;
    Risultato = "Risultato: ";
    Risultato += Numero;
    Serial.println(Risultato);
}

void loop() {}

Compila senza errori su IDE 1.0.6. Provato ora (non l’ho materialmente caricato sulla scheda perché non sono a casa).
@elpapais:
si può vedere tutto lo sketch?

cyberhs: Non puoi "sommare" ad un oggetto Stringa un float senza averlo prima convertito in stringa.

Per farlo puoi usare la funzione dtostrf(X, Size, Decimal, Buffer) ove X ---> float Size ---> char (lunghezza stringa) Decimal ---> unsigned char (numero decimali) Buffer ---> array char di dimensione Size + 1

Se non lo permettesse avrei detto che in fase di programmazione... Il programma funzionava, c'e' un mega che sta girando con quella versione di programma li....

leo72: A me lo permette:

float Numero;
String Risultato;

void setup() {     Serial.begin(19200);     Numero = 12.4;     Risultato = "Risultato: ";     Risultato += Numero;     Serial.println(Risultato); }

void loop() {}




Compila senza errori su IDE 1.0.6. Provato ora (non l'ho materialmente caricato sulla scheda perché non sono a casa).
@elpapais:
si può vedere tutto lo sketch?

e' lungo come sketch... e per chi l'ho fatto vuole riservatezza... ma le variabili son tutte dichiarate... e poi ripeto... funzionava... il prototipo che gli ho spedito e' funzionante e ha quella revision li di firmware...Bho adesso i metto li e provo a trasportare in un nuovo progetto solo quella funzione li con le declarations e vediamo... E' come se in questi due ide mancasse qualcosa... ma ci son tutte le librerie usate...

Hai usato librerie di terzi? Controlla che le funzioni restituiscano dati che gestisci in maniera corretta.

Risolto... era nella copia della cartella libreria che non ha copiato 1 byte... un file corrotto e non me lo sovrascriveva... ho cancellato la cartella librerie e l'ho ricopiata dal vecchio pc e ha funzionato subito.

elpapais:

  dataString = (RTCbuf);

dataString += “,”;
   dataString += (TAttuale);



Chi sa dirmi perche?

Perchè quelle tonde ? Non servono a nulla. Hai provato a toglierle ? Non credo c’entri ma non si sai mai.