Go Down

Topic: [RISOLTO] Problemi con Seriale e TVout (Read 989 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy