Bonjour à tous,
J'ai vraiment du mal à comprendre ce qui m'arrive!!!
Ma variable 'file' prend la valeur passée dans le premier parametre de la donction suivante. Soit la valeur de str_aux1.
J'ai une fonction
int8_t WI908::uploadFileFTP( const char* file,
const char* path,
const char* user,
const char* passw,
const char* ftp_server,
const char* ftp_port,
uint8_t n_conf)
{
et une autre qui va retourner la date et l'heure.
Cette fonction fonctionne et retourne la date et l'heure sous cette forme
2014-12-27-14-41-10
char * WI908::get_time(void)
{
strcpy_P(str_aux1, (char*)pgm_read_word(&(table_AT[12]))); // CCLK
snprintf(str_aux1, sizeof(str_aux1), "%s?", str_aux1);
if(sendATcommand1(str_aux1, OK_RESPONSE,4000,true,false))
{
get_value(response[1],1," ",get_val);
byte i = 0;
byte x = 0;
byte ind = 0;
//Serial.println(strlen(get_val));
do // Go trough chaine, one by one
{
//Serial.println(chaine[ic]);
switch(get_val[i]){
case '/': // When it read a comma, increment ind. Ind will no be egal to index and then val will not take new value.
get_val[i] = '-';
break; // return to the begin of 'do' loop and check next position of chaine
case ',':
get_val[i] = '-';
break;
case ':':
get_val[i] = '-';
break;
default:
get_val[i] = get_val[i]; // Store the desired value in val
// Serial.print(F("Def")); Serial.println(val[x]);
}
// Serial.print(F("i:")); Serial.print(i);
// Serial.print(F(", g:")); Serial.println(get_val[i]);
i++; // Go to next position of chaine
}while( i < strlen(get_val)); // As long as ic is < than the amount tof caracter in chaine, and then leave the do loop
get_val[i]='\0'; // Close val with \0
snprintf(buffer, sizeof(buffer),"20%s",get_val); // 20 first caracter of get_val
}
else
{
strcpy(buffer,"Error with time");
}
return buffer;
}
Donc si je fais
Serial.println(get_time())
Il affichera
2014-12-26-14-41-33
Voilà, maintenant je fais appelle avec ma fonction uploadfileFTP ainsi
uploadFileFTP(get_time(),"temp/", "username", "password", "www.serveur.net", "21", 1);
Voci maintenant ce qui bug!!!
Je mets le debut de cette dernier fonction avec la partie qui bug
int8_t WI908::uploadFileFTP( const char* file,
const char* path,
const char* user,
const char* passw,
const char* ftp_server,
const char* ftp_port,
uint8_t n_conf)
{
unsigned long previous = 0;
int8_t answer = 0;
uint8_t count = 10;
uint8_t ftp_retries;
long sd_size = 0;
long ftp_size = 0;
int CME_aux = 0;
// YURI DELAY
delay(100);
#ifdef DEBUG
sprintln(F("\n*CONFIG FTP*"));
#endif
Serial.println(file); // Affichage correct
// SET FTP BEARER PROFILE IDENTIFIER: AT+FTPCID=<n_conf>
strcpy_P(str_aux1, (char*)pgm_read_word(&(table_AT[26]))); //"+FTPCID="
snprintf(str_aux1, sizeof(str_aux1), "%s=%u", str_aux1, n_conf);
#ifdef DEBUG
sprint(str_aux1);
sprint(F("\t\t"));
#endif
Serial.println(file); // Affichage correct
count=10;
do{
answer=sendATcommand2(str_aux1, OK_RESPONSE, ERROR_CME,6000,true,false);
count--;
}while ((answer != 1) && (count > 0));
if (answer == 0)
{
#ifdef DEBUG
sprintln(F("KO"));
#endif
return -4;
}
else if (answer == -2)
{
#ifdef DEBUG
sprintln(F("KO"));
#endif
return -41;
}
#ifdef DEBUG
sprintln(F("OK"));
#endif
Serial.println(file); // Affiche la valeur de str_aux1 ????!!!
[... Suite du code..]
Dans ce code
Serial.println(file) va afficher le contenu de la variable str_aux1!!!!!! et non pas une heure sous ce format:2014-12-26-14-44-23
Mais pourquoi???
Je ne comprend pas car 'file' est defini comme 1er parametre de ma fonction. Donc la valeur de 'file' doit rester la meme dans cette fonction
Dans cette partie:
// SET FTP BEARER PROFILE IDENTIFIER: AT+FTPCID=<n_conf>
strcpy_P(str_aux1, (char*)pgm_read_word(&(table_AT[26]))); //"+FTPCID="
snprintf(str_aux1, sizeof(str_aux1), "%s=%u", str_aux1, n_con
f);
la valeur que va prendre str_aux1, ne doit pas avoir d'incidence sur 'file'. 'file' a deja sa valeur (constante) au debut de cette fonction.
Comment 'file' peut prendre la valeur d'str_aux1????? En plus, c'est une cosntante, donc elle devrait pas pouvoir changer de valeur, non??
Pouvez-vous m'écliarecir?
Avez-vous besoin plus de code?
Milles mercis et bonnes fetes