ciao non so cosa intendi per array di stringa ricevuta, forse intendi raccogliere tutto in una stringa
String readString;
void loop()
{
while (Serial.available())
{
delay(1);
if (Serial.available() >0)
{
char c = Serial.read();
readString += c;
}
if (readString.endsWith('#'))
{
Serial.println(readString);
readString="";
break;
}
}
readString="";
}
in questo caso readString verrà compilato solo se il carattere terminale è # if (readString.endsWith('#')) altrimenti verrà svuotata readString="";
inoltre char c = Serial.read(); ti permette di leggere e analizzare un carattere alla volta potresti vedere così in che punto si trova la virgola e registrarlo.
readString += c; fa la concatenazione
che puoi anche sostituire con
readString .concat(char(Serial.read()));
non so se è quello che chiedi
String readString;
//String InputBuffer = String();
int xx=0;
void setup()
{
Serial.begin(9600);
}
// esempio di stringa $GSUB,255,255,255,255#
void loop()
{
xx=0;
while (Serial.available())
{
delay(1);
if (Serial.available() >0)
{
char c = Serial.read();
readString += c;
xx++;
if (c ==',')
{
Serial.print(String(xx));
Serial.print(";");
}
}
if (readString.endsWith('#'))
{
Serial.println("");
Serial.println(readString);
readString="";
break;
}
}
readString="";
}
questo esempio ti da la posizione delle virgole che potresti usare
ad esempio con
1a_virgola= readString.substring(0,char_posiz_a);
2a_virgola= readString.substring(char_pos_a+1, char_posiz_b);
3a_virgola= readString.substring(char_pos_b+1, char_posiz_c);
ottieni i valori numerici tra una virgola e l'altra ovviamente questo è un esempio di uso del substring le tue posizioni che saranno valori interi le puoi registrare in un array e andarle a riprendere con un for.
una volta ottenuta la stringa per intero cerca un argomento sui separatori, split di stringhe, parsing di stringhe ecc
un altro esempio:
#include <string.h>
char sz[] = "Here, is some, sample, 100, data, 1.414, 1020";
void setup()
{
char *p = sz;
char *str;
Serial.begin(9600);
while ((str = strtok_r(p, ",", &p)) != NULL) // delimiter is the semicolon
Serial.println(str);
}
void loop(){}
Generando questa uscita
Here
is some
sample
100
data
1.414
1020
ciao