Hello,
Alors ca c'est un point très intéressant et peut être que j'ai choisi une mausvaise manière de faire.
En effet, j'ai plusieurs fonction qui lance une commande comme exemple
boolean sms_read(int sms_pos,char *sms_from_number, char *sms_date, char *sms_time, char *sms_text)
boolean sms_send(int pos, char *sms_text)
void dir_write(char *phone_number)
void dir_read(int pos)
Toutes ces fonctions vont utiliser une commande AT+ dans lesquelles je dois include un parametre.
Donc dans toutes ces fonctions, et uniquement DANS la fonction je déclare la même varaiable
char cmd[12]
Mais j'amais je la déclare en dehor d'une fonction. A mon sens, ca doit fonctionner puisqu'un varibale qui est déclarer dans une fonction est détruite quand on quitte la fonction. Mas, en efet, il convient de se poser la question, si cette méthode de faire est cotrrect!!
L'autre truc, l'exemple la variable phone_number, est bonne. Je dois ternir compte qu'un numero suis n'a pas la même longeur qu'un numéro français ou d'un autre pays. Donc je pensais bien faire en calculant la nombre de caractere de la variable passer en paramètre, d'y ajouter les caractères de la commande utilisé, en y ajouter deux-trois place en plus, au cas ou, ceci pour éviter que la variable cmd soit surchargée.
C'est pourcela que j'ai fait comme ceci.
char cmd[strlen(phone_number)+21];
//Serial.print("cmd:");Serial.println(sizeof(cmd));
snprintf(cmd,sizeof(cmd),"AT+CPBW=,\"%s\",145,\"\"",phone_number);
Maintenant, ta remarque m'interpelle et je me pose la question si je fais bien de déclarer la même variable dans divers fonction?
Je pense , en effet, que ceci dois bien être fait avant de comprendre pourquoi ca
sendATcommand("AT+CPBW=,\"+41763334455\",145,\"\"","OK",2000,true,false,true)
ca passe.
Et ca
char cmd[strlen(phone_number)+21];
//Serial.print("cmd:");Serial.println(sizeof(cmd));
snprintf(cmd,sizeof(cmd),"AT+CPBW=,\"%s\",145,\"\"",phone_number);
sendATcommand(cmd,"OK",2000,true,false,true)
ca passe pas.
A savoir que le premier paramètre demander dans sendATcommand est un char
uint8_t sendATcommand(char* ATcommand, char* expected_answer1, unsigned int timeout, boolean ln, boolean getResponse, boolean debug_buff)
{