[RISOLTO] Problemi con Seriale e TVout

Ciao a tutti!

Ho una Arduino Uno e sto usando l'IDE 1.0.1.

Utilizzando l'esempio SerialEvent vorrei visualizzare sullo schermo le stesse stringhe date in ingresso nel serial monitor.

Aggiungendo le righe di codice, che mi permetto di visualizzare a video queste stringhe, il programma funziona in modo strano.
Nel senso che si perde qualche carattere.
Ad esempio se io sul serial monitor scrivo:

INPUT SerialMonitor & Schermo

12345 12
12345 12
12345 12
12345 12345
12345 12345
12345 1245

Non capisco per quale motivo ogni tanto "perda" dei caratteri.

vi posto il codice:

#include <TVout.h>
#include <fontALL.h>

String inputString = "";         
boolean stringComplete = false; 
TVout TV;


void setup() {
  Serial.begin(9600);
  inputString.reserve(200);
  TV.begin(PAL,120,96);
  TV.select_font(font6x8);
  TV.println("Pronto");
}

void loop() {

  if (stringComplete) {
    
    char vett [20]="";
    inputString.toCharArray(vett, 20);
    Serial.println(inputString); 
    TV.println(vett);

    inputString = "";
    stringComplete = false;
  }
}


void serialEvent() {
  while (Serial.available()) {

    char inChar = (char)Serial.read(); 

    inputString += inChar;

    if (inChar == '\n') {
      stringComplete = true;
    } 
  }
}

Grazie.

Prova con la seriale a 115200, forse 9600 è un po' lenta.

Con 115200baud non funziona, non stampa nulla.

allora forse é troppo veloce?? :roll_eyes:
La libreria TVout ha dei timing molto critici. percui disturba altre librerie/lo sketch che sono usate. Abbassa la velocitá e potrebbe funzionare.

Ciao Uwe

Se metto dei baud diversi da 9600, non si vede nulla nella seriale, nemmeno un carattere

Quello è un noto bug dell'IDE. Setta la lingua inglese e riavvia.

uwefed:
allora forse é troppo veloce?? :roll_eyes:
La libreria TVout ha dei timing molto critici. percui disturba altre librerie/lo sketch che sono usate. Abbassa la velocitá e potrebbe funzionare.

Ciao Uwe

Esatto. Soprattutto ora che la Serial è gestita da interrupt la cosa può dare molto noia alla TVout. Ti consiglio di provare con l'IDE 0022, dove la Serial non usava gli interrupt per leggere e scrivere sulla seriale. Con la TVout ci ho giocato un annetto fa e non mi ricordo di questi problemi.

Le ho provate entrambe:
-Cambiando lingua, con un baud rate di 1200 funziona tutto bene.
-Con l'IDE 0022 non sono riuscito:
prima mi da errore sulla riga "inputString.reserve(200);"
dicendo che la classe String non ha nessun membro di nome reserve.
Se commento quella riga, ricompila correttamente ma non visualizza nulla nel serialmonitor, a qualsiasi baud rate.

Allora stai usando uno sketch scritto per l'IDE 1.x.

leo72:
Allora stai usando uno sketch scritto per l'IDE 1.x.

Ho riscritto lo sketch, riesco a compilare, ma c'è sempre il problema della "perdita" di qualche carattere.

Scusa, noto solo ora questo:

 inputString.reserve(200);

Non conoscevo il metodo reserve, non è documentato.

leo72:
Scusa, noto solo ora questo:

 inputString.reserve(200);

Non conoscevo il metodo reserve, non è documentato.
String() - Arduino Reference

nemmeno io, è presente di default sull'esempio SerialEvent

Grazie dei consigli.

Ho risolto utilizzando l'ide 0022 e il secondo sketch di esempio della libreria arduino-tvout,
questo : Google Code Archive - Long-term storage for Google Code Project Hosting.