Bonjour,
Je suis sur un problème depuis un jour.
j'ai deux fonctions avec exactement le même code, juste le nom de la fonction qui n'est pas la même, l'une fonctionne bien et l'autre non.
ces deux fonctions sont déclarées comme cela:
bool _esp8266_waitFor(uint24_t time_out, char *wait, bool show);
bool waitFor_buffer(uint24_t time_out, char *wait, bool show);
je récupère les informations qui viennent d'un esp8266 et je l'affiche.
première fonction qui fonctionne:
bool _esp8266_waitFor(uint24_t time_out, char *wait, bool show)
{
uint24_t startime = 0;
ticker = 0;
uint16_t so_far = 0;
char received;
timer0_begin(4608, 4);
startime = ticker;
do {
if(uart1_kbhit())
{
received = _esp8266_getch();
if(show) {
printf("%c", received);
}
if (wait[so_far] == received) {
so_far++;
} else {
so_far = 0;
}
}
if(((ticker - startime) > time_out)) break;
} while (wait[so_far] != 0);
timer0_end();
return (so_far == strlen(wait));
}
seconde fonction qui ne fonctionne pas mais le nom de la fonction n'est pas la meme:
bool waitFor_buffer(uint24_t time_out, char *wait, bool show)
{
uint24_t startime = 0;
ticker = 0;
uint16_t so_far = 0;
char received;
timer0_begin(4608, 4);
startime = ticker;
do {
if(uart1_kbhit())
{
received = _esp8266_getch();
if(show) {
printf("%c", received);
}
if (wait[so_far] == received) {
so_far++;
} else {
so_far = 0;
}
}
if(((ticker - startime) > time_out)) break;
} while (wait[so_far] != 0);
timer0_end();
return (so_far == strlen(wait));
}
la fonction qui appel une de ces fonction est la suivante, j'ai mis des commentaire // pour tester quand je switch de fonction:
void esp8266_ip(char *store_in)
{
//char tmp[1024];
uint24_t count;
_esp8266_print("AT+CIFSR\r\n");
waitFor_buffer(timeout*4, "OK\r\n", true);
//_esp8266_waitFor(timeout*4, "OK\r\n", true);
}
le fonctionnement:
lorsque j'en une command AT+CIFSR, la reponse est:
AT+CIFSR
+CIFSR:STAIP,"192.168.2.172"
+CIFSR:STAMAC:"c8:2b:96:2f:47:6a"
OK
pour la première fonction qui fonctionne j'obtiens le résultat plus haut.
pour celle qui ne fonctionne pas j'obtiens:
ATCFS
CIS:SAP,12.68217"
CIS:SAAC"8:b:62f4:6"
Quel est la différence entre ces deux fonctions ?
Merci.