char sep = '\t';
//char BufferLinky[] = "EAIT 009183762 )";
//char BufferLinky[] = "SMAXSN-1 E250502063848 00060 Y";
char BufferLinky[] = "DATE E250508162917 L";
char *ptrB , *ptrS, *ptrD; // pointer Buffer, pointer Separateur, pointer chaine Destination
char _Etiq[12] = {0};
char _horodate[15]= {0};
char _Value[100] = {0};
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
BufferLinky[strlen(BufferLinky) - 2] = 0; // supprime de caractere checksum et le dernier caractere separateur
Serial.println(BufferLinky);
ptrB = &BufferLinky[0]; // pointe sur le 1er caractere du buffer
ptrD = &_Etiq[0]; // point sur premiere posistion de Etiquette
ptrS = strchr(BufferLinky, sep); // pointe sur le separateur juste après l'étiquette
if (ptrS == NULL) Serial.println("Problem !!!");
Serial.flush();
while (ptrB != ptrS) *ptrD++ = *ptrB++; // copie Etiquette
*ptrD = 0;
Serial.println(_Etiq);
ptrB++; // 1er caracter du champ suivant
ptrS = strchr(ptrB, sep); // pointe sur le separateur suivant
if (ptrS != NULL) { // il y a un champ horodate
ptrD = &_horodate[0]; // point sur premiere posistion de _horodate
if (ptrS == NULL) Serial.println("Problem !!!");
while (ptrB != ptrS) *ptrD++ = *ptrB++; // copie Horodate
*ptrD = 0;
ptrB++;
} else _horodate[0] = 0;
Serial.println(_horodate);
ptrS = strchr(ptrB, 0); // pointe sur le zero fin de la ligne Buffer
ptrD = &_Value[0]; // point sur premiere posistion de _Value
while (ptrB != ptrS) *ptrD++ = *ptrB++; // copie Value
*ptrD = 0;
if (!strcmp(_Etiq, "DATE")) { // copie horodate dans Value pour l'etiquette DATE
strcpy(_Value, _horodate);
}
Serial.println(_Value);
Serial.flush();
Serial.println ("End !!!");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}