Pages: 1 [2]   Go Down
Author Topic: Uso libreria Stream e readtString  (Read 1634 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

che succede se il tag rimane a metà tra una lettura e l'altra? per questo tiro in mezzo i buffer.  smiley-razz

Quote
Se il messaggio tra tag inizio e tag fine è bello lungo.... diciamo 1000char, rischio overflow?

sì, se va bene crasha e si resetta, se va male finisce in qualche loop infinito, oltre se comportamenti a random.
Se credi di avere messaggi lunghi, compra una ram esterna i2c. cerca FRAM, ce ne sono pure da 256kB...
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Naples (IT)
Offline Offline
God Member
*****
Karma: 6
Posts: 714
Andrea E.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, fatto.
La readString non mi restituisce nulla, credo vada in overflow (?).
Mentre la readBytes torna quello che devo tornare.
Ora con il buffer (di mille!!!) pieno posso giocare come voglio...

Lascio il codice per chi un giorno cercherà su google queste funzioncine:

Code:
void parse()
{
  //client.setTimeout(10000);  //opzionale
  //String myAvviso;
  char myAvviso[1000];
  Serial.println("Parsing");
  if (client.find("title")) //se trovo il tag di inizio *title*...
  {
    Serial.println("Avviso trovato!");
    //myAvviso=client.readString();
    client.readBytes(myAvviso, 1000); //metti 1000 char nel buffer
    Serial.println("Avviso: ");
    Serial.println(myAvviso);   
  }
  else
  {   
    Serial.println("Failed parsing...");
  }
}


PS
Posso convertire quel buffer di char nell'oggetto String? Con i metodi di String mi risparmio qualche riga di codice...
Logged

Arduino, MODs e DIY: blackstufflabs.com

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

char alloca la ram dinamicamente, rischi seriamente di avere problemi di allocazione dello spazio
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Naples (IT)
Offline Offline
God Member
*****
Karma: 6
Posts: 714
Andrea E.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

char alloca la ram dinamicamente, rischi seriamente di avere problemi di allocazione dello spazio

infatti il cast non funge... lavorerò con i char
Logged

Arduino, MODs e DIY: blackstufflabs.com

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il cast?? nono vabbè

prova a usare sempre i char ma con una realloc, in modo da rendere l'array dinamico. Solo non fare come la string che alloca giusto quello che gli serve ma alloca chessò, 100 byte alla volta. In teoria se dopo la prima malloc NON crei nuove variabili dovresti riuscire sempre  fino a ram overflow
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Naples (IT)
Offline Offline
God Member
*****
Karma: 6
Posts: 714
Andrea E.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

char alloca la ram dinamicamente,

perchè dici dinamicamente?
char[100] è un array statico. erro?
Logged

Arduino, MODs e DIY: blackstufflabs.com

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sì, ma se poi lo riallochi, allora può essere considerato dinamico

edit: e non sarà più un array ma un puntatore
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: 1 [2]   Go Up
Jump to: