Pages: [1]   Go Down
Author Topic: [RISOLTO] Problemi con Seriale e TVout  (Read 802 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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.
« Last Edit: April 10, 2013, 06:35:42 am by Ithos92 » Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 114
Posts: 7183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Con 115200baud non funziona, non stampa nulla.
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 114
Posts: 7183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22938
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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


Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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


nemmeno io, è presente di default sull'esempio SerialEvent
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: