Serial.print("\tTarget1: "); trasmette un errore

Salve!
in un progetto complesso ho riscontrato un problema apparentemente inspiegabile, nella trasmissione da ArduinoDuemilanove al PC solo la parola "\tTarget1: " non viene correttamente trasmessa!!! Sono ore che faccio prove e non riesco a spiegarmi il motivo!
Ho provato lo stesso sketch su ArduinoMega 2560 e funziona perfettamente (a parte il fatto che con la Mega non riesco a collegarmi se setto il baudrate a 250000 ma solo fino a 115200).
la parte di codice è questa

          // leggo la temperatura del canale 0
          Serial.print("Real0: ");
          Serial.print(ct0.getTemp());
          Serial.print("\tTarget0: ");
          Serial.print(ct0.getTargetTemp());
          Serial.print("\tPWM0: ");
          Serial.println(ct0.getPWM());

          // leggo la temperatura del canale 1
          Serial.print("Real1: ");
          Serial.print(ct1.getTemp());
          Serial.print("\tTarget1: ");
          Serial.print(ct1.getTargetTemp());
          Serial.print("\tPWM1: ");
          Serial.println(ct1.getPWM());
          
          Serial.println("\tTarget1: ");
          Serial.println("Target1 ");
          Serial.println("Target1");
          Serial.println("\tTarget1: ");
          Serial.println("\tTarget0: ");
          Serial.println("\tTarget1: Target1: ");
          Serial.println("\tTargEt1: ");
          Serial.println("\tTargdt1: ");
          Serial.println("\tTargft1: ");
          Serial.println("\tTarggt1: ");

il risultato:

Real0: 92.69 Target0: 0.00 PWM0: 0
Real1: 93.50 Targ�t1: 0.00 PWM1: 0
 Targ�t1: 
Target1 
Target1
        Targ�t1: 
        Target0: 
        Target1: Target1: 
        TargEt1: 
        Targdt1: 
        Targft1: 
        Targgt1:

Che sia un problema hardware? mi pare improbabile perché l'errore lo ripete e solo con la stringa "\tTarget1: ", già senza "\t" all'inizio o senza spazio alla fine della stringa la trasmissione è corretta...

Sto avendo un problema identico, ma solo con l'utilizzo di caratteri speciali (es. lettere accentate, simbolo di grado, ecc). Ho verificato su più Arduino/Genuino, sia originali che cloni ed il problema si presenta sempre casualmente (quattro volte sbaglia, 5 no, e così via).

Esempio, faccio stampare sulla seriale una temperatura e ...
... ricevo un po di 27.2��C ed un po di 27.2°C.

Sto usando l'IDE 1.6.9 ... occorrerà indagare ... ::slight_smile:

Guglielmo

provate a mettere un Serial.flush() ogni 2 righe

Ciao VB ...
... purtroppo non risolve e, onestamente, non capisco perché avrebbe dovuto risolvere dato che il problema, almeno a me, si presenta SOLO con caratteri speciali (°, lettere accentare, simboli, ...), mentre con tutti i normali caratteri NON sbaglia mai.

Il problema credo risieda nell' Emulatore di Terminale dell'IDE ...
... difatti, usando CoolTerm esso NON mi si presenta mai ::slight_smile:

Sembrerebbe che l'Emulatore di terminale dell'IDE a volte interpreti bene il character set UTF8, altre volte NO e visualizzi due caratteri non decifrabili (��) ... ma in modo del tutto casuale ...

Guglielmo

Avevo pensato anch'io ad un BUG del monitor seriale, ma l'ho escluso dal momento che cambiando arduino con lo stesso sketch il risultato cambia, con Arduino Duemilanove il problema esiste, con ArduinoMEGA 2560 no...

OT: Al momento per passare comandi ad arduino via seriale invio una stringa e con una serie di switch/case interpreto il comando, esiste un metodo più rapido? soprattutto meno dispendioso di tempo, a scrivere 5 comandi con magari 3 parametri ci vogliono 15 switch...

dinodf:
Avevo pensato anch'io ad un BUG del monitor seriale, ma l'ho escluso dal momento che cambiando arduino con lo stesso sketch il risultato cambia, con Arduino Duemilanove il problema esiste, con ArduinoMEGA 2560 no...

... fai la prova con l'emulatore di terminale che ho indicato (CoolTerm), è gratuito e multipiattaforma.

Guglielmo