Go Down

Topic: [RISOLTO] Problemi con Seriale e TVout (Read 905 times) previous topic - next topic

Ithos92

Oct 17, 2012, 06:11 pm Last Edit: Apr 10, 2013, 01:35 pm by Ithos92 Reason: 1
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:
Code: [Select]
#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.

PaoloP

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

Ithos92

Con 115200baud non funziona, non stampa nulla.

uwefed

allora forse é troppo veloce??  :smiley-roll:
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

Ithos92

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

PaoloP

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

leo72


allora forse é troppo veloce??  :smiley-roll:
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.

Ithos92

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.

leo72

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

Ithos92


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.

leo72

Scusa, noto solo ora questo:
Code: [Select]
inputString.reserve(200);

Non conoscevo il metodo reserve, non è documentato.
http://arduino.cc/en/Reference/StringObject

Ithos92


Scusa, noto solo ora questo:
Code: [Select]
inputString.reserve(200);

Non conoscevo il metodo reserve, non è documentato.
http://arduino.cc/en/Reference/StringObject



nemmeno io, è presente di default sull'esempio SerialEvent

Ithos92

Grazie dei consigli.

Ho risolto utilizzando l'ide 0022 e il secondo sketch di esempio della libreria arduino-tvout,
questo : https://code.google.com/p/arduino-tvout/wiki/EX2

Go Up