Hola, Estoy usando el modulo wifi ESP8266, el cual tiene un comando de envío y uno respuesta así:
AT+CIPSEND=id,len >> para enviar
> data
+IPD,id,len:data >> cuando recibe
Pues bien,necesito extraer: id,len,data, el id no me importa mucho, porque se que siempre va hacer 0, pero si el tamaño y el dato.
para ello voy con esta idea:
Para extraer el len
// Hallar len
int get_len(char* buffer)
{
char len[3];
int n;
if(find_string(buffer1,"+IPD")){ // +IPD,id,len:data
for(n=0;buffer[n]!=0;n++)
{
if(buffer[n]==',') // halla el primer "," y en mi caso siempre mínimo va hacer de 3 dígitos la longitud del buffer
{
len[0]=buffer[n+1];
len[1]=buffer[n+2];
len[2]=buffer[n+3];
}
}
return(atoi(len));
}
Para extraer el dato
// Hallar data
void get_data(void)
{
char data[255];
int n;
if(find_string(buffer1,"+IPD")){ // +IPD,id,len:data
for(n=0;buffer[n]!=0;n++)
{
if(buffer[n]==':') // a partir del ":"
i=0;
do{ // Extraer ID del buffer a partir ":" y hasta \0.
data[i]=buffer1[n+1]; n++; //
}while(buffer1[++i]!=0x00); //
}
return(data);
}
Es solo una idea, por favor me ayudan a mejorarla.
Gracias