Go Down

Topic: Uso libreria Stream e readtString (Read 1 time) previous topic - next topic

lesto

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

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...
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

AnTrea

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: [Select]
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...
Arduino, MODs e DIY: blackstufflabs.com

lesto

char alloca la ram dinamicamente, rischi seriamente di avere problemi di allocazione dello spazio
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

AnTrea


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


infatti il cast non funge... lavorerò con i char
Arduino, MODs e DIY: blackstufflabs.com

lesto

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
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

AnTrea


char alloca la ram dinamicamente,


perchè dici dinamicamente?
char[100] è un array statico. erro?
Arduino, MODs e DIY: blackstufflabs.com

lesto

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

edit: e non sarà più un array ma un puntatore
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up