Leggere e modificare dati client.read

Ciao a tutti appassionati di Arduino ho bisogno di un vostro aiuto:
Da qualche giorno sono alle prese con la shield ethernet di arduino che rende l’ARDUINO stesso un client.
A questo client invio dati da un server Labview e non ce problema tranne il fatto che anziche arrivarmi una stringa su arduino mi arrivano i pacchi di dati (nel mio caso 5 numeri) singoli e non so come fare per convertirli in un array char :expressionless:

questo è lo sketc:

#include <Ethernet.h>
#include <SPI.h>

byte mac[] ={ XXXX,XXXX,XXXX,XXXX,XXXX ,XXXX};
byte ip[] = { XXX,XXX,XXX,XXX };
byte server[] = { XXX,XXX,XXX,XXX};

EthernetClient client;

void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac,ip);
  delay(1000);
  
  if (client.connect(server,2055))
     Serial.println("connesso");
      else{ Serial.println("connessione fallita");}
  }
void loop()
{
 if (client.available())
    {
      char message = client.read();
      Serial.println (message);
    }
  
 }

che mi da sul monitor seriale dell’ IDE i 5 numeri della stringa da labview uno di serie all’altro e non so come far diventare questi “pacchi” di numeri degli array char.

Quindi chiedo a voi piu esperti di me se sapete come risolvere il mio problema

Grazie in anticipo

Non è che li puoi leggere e modificare, li puoi leggere e basta.

C'è molto in rete sull'argomento, se leggi anche i treadh che sono ancora presenti in lista c'è prprio quello che chiedi.

Sul forum sezione Generale: Estrarre una stringa da client.read http://forum.arduino.cc/index.php?topic=93858.0

Sul forum sezione Generale: Info pilotaggio relè da remoto http://forum.arduino.cc/index.php?topic=259595.0

Ps dai un occhioata al regolamento 1) Hai visto gli altri titoli dei treadh? sono scritti in maiuscolo? 2) il codice va racchiuso tra i tag CODE (il simbolo # sopra alle faccine)

ciao

è molto che non scrivo sul forum e qualche regola devo averla dimenticata mi spiace...rileggero il regolamento. Comunuqe ho gia letto e provato entrambi i link che mi hai mandato e non ne esco comunque, anzi invece di arrivarmi i valori giusti mi arrivano i valori che ho all inizio ripetuti di continuo e basta

hai provato a vedere questo esempio? vedo che già tu non chiudi il client ogni volta che arriva il messaggio. http://arduino.cc/en/Tutorial/WebClient

Gia visto anche quello, il mio problema è riuscire a prendere ognuno dei 5 numeri che fanno parte del messaggio singolarmente e analizzarlo di conseguenza quello è il mio obbiettivo! cosa significa chiudere il client? le ultime righe dell esempio intendi?

comunque è per questo motivo che chiedevo come trasformare quella serie di 5 numeri dal client.read in un array char, in modo da poter accerede ad ogni elemento tramite l'indice dell elemento

Invece di leggere i singoli char in uscita da client.read, riversali in un array di char. http://arduino.cc/en/Reference/String

Sarebbe meglio sapere a priori sapere quanto sono lunghi i dati che ti arrivano per dimensionare il tuo array, però. Una cosa del genere:

...
char dati[100];
...

void loop() {
int indice;

  if (client.available()) { //c'è qualcosa
    indice = 0;
    while (client.available()) { //cicla finché ci sono dati
      dati[indice++] = client.read();
    }
  }
  ......
}

Non so se serva anche il terminatore

sisi so quanti valori avrò nell'array quindi nel tuo sketch alla fine avrò un array char con 100 valori ad esempio giusto? ma come faccio a fermare l'array appena arrivo al numero di valori che voglio? cioe come faccio a fare in modo che appena l'array arriverà al 100° dato comincero a leggere i vari valori?

L'hai visto il codice? Lo fa di suo: c'è un while che cicla finché ci sono dati nel buffer del client:

while (client.available())

Dopo il ciclo while, indice conterrà il numero di elementi recuperati (viene autoincrementato dopo ogni assegnazione).