nom du fichier dans une variable ?

Un log shield sur carte SD avec horloge RTC et zone de prototypage à pastilles carrées

nom du fichier dans une variable ?

Message non lude gug » Sam 18 Fév 2012 15:23

Bonjour,

Je bute sur une bêtise j'en suis sur !
mais bon je bloque ...

j'essaie d'ouvrir un fichier présent sur la carte, le nom de ce fichier est stoqué dans une variable de type "String" mais y veut pas me l'ouvrir
vague insulte à mon ignorance: no matching function for call to ‘SdFile::open(String&, const uint8_t&)’
Code: Tout sélectionner
void chargeFich(void) {
  int id_fich = 1;
  int key = -1;
  int oldkey = -1;
  String Nfichier = "01";
  String Extension = ".pro";
  char* cont[6];
 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Choix fichier");
  lcd.setCursor(0,1);
  lcd.print("entre 1 et 99");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("fichier:1 ?");
  lcd.setCursor(0,1);
  lcd.print("Haut / Bas / OK");
  while(key != 4){
    key = lcd.get_key();              // read the value from the sensor & convert into key press

    if (key != oldkey)                // if keypress is detected
    {
      delay(50);      // wait for debounce time
      key = lcd.get_key();   // read the value from the sensor & convert into key press
      if (key != oldkey)            
      {         
        oldkey = key;
        if (key == 1){
          id_fich += 1;
          lcd.setCursor(8, 0);
          if (id_fich > 99){
            id_fich = 99;
          }      
          // print the key pressed:
          lcd.print(id_fich);
        }
        if (key == 2){
          id_fich -= 1;
          lcd.setCursor(8, 0);
          if (id_fich < 1) {
            id_fich = 1;
          }
          // print the key pressed:
          lcd.print("  ");
          lcd.setCursor(8, 0);
          lcd.print(id_fich);
        }
      }
    }
  }
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Chargement");
  lcd.setCursor(0,1);
  lcd.print("Fichier:");
 
  lcd.setCursor(9,1);
  lcd.print(id_fich);
  lcd.print(Extension);
    delay(2500);
  Nfichier = id_fich + Extension;
  lcd.clear();
  lcd.print(Nfichier);
 
  //open file for reading
  if (!fichier.open(Nfichier, O_READ)) {
    error(Nfichier);
  }else{
    lcd.setCursor(0,1);
    lcd.print("OK");
  }
  delay(2500);
}


je comprend bien que le type string ne lui convient pas ...
mais je trouve pas comment lui donner correctement cette info primordiale !

merci d'avance pour vos lumières.
gug
 
Messages: 4
Inscription: Jeu 20 Oct 2011 17:14

Re: nom du fichier dans une variable ?

Message non lude SesechXP » Dim 19 Fév 2012 11:35

Salut,

Effectivement c'est le type String qui ne lui plaît pas. Et c'est normal...

Le prototype de la méthode open est le suivant :
Code: Tout sélectionner
File open(const char *filename, uint8_t mode = FILE_READ);


Soit tu convertis le nom du fichier en tableau de caractères (char) pour le donner à la méthode open. Soit tu crées un pointeur de type char* qui pointe sur la chaîne puis tu le passes à la méthode open.

++
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: nom du fichier dans une variable ?

Message non lude gug » Lun 20 Fév 2012 16:14

merci !
je me lance !
gug
 
Messages: 4
Inscription: Jeu 20 Oct 2011 17:14

Re: nom du fichier dans une variable ?

Message non lude gug » Lun 20 Fév 2012 18:09

en fait la solution indiquée par SesechXP donne dans le cas de la conversion:
Code: Tout sélectionner
String Nfichier;
char file[12];
.
.
.
.
Nfichier.toCharArray(pro_file, sizeof(pro_file));
.
.
.
gug
 
Messages: 4
Inscription: Jeu 20 Oct 2011 17:14


Retourner vers Mémoire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité