[Programmation] Arduino comparer String[] avec un char[]
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Arduino comparer String[] avec un char[]



  1. #1
    nodoubtman

    Smile Arduino comparer String[] avec un char[]


    ------

    Bonjour a tous.
    Ça fait 2 jours je suis en train de m'arracher les cheveux pour trouver une solution a comparer ces deux types de données.
    C'est le dernier élément qu'il me manque pour terminer mon projet d'afficheur d'appel sur écran LCD 20x4.
    Voici mon code :

    Code:
    volatile int NB_CALLER_TO_BLOCK = -1;
    String result[12];  // max : 12 no qu'on peut bloquer pour l'instant = amplement suffisant!!!
    char num[12];  // no de l'appel entrant
    
    
    void Verifie_Information_Dans_SD()
    {
     openFile(FILE_CALL_BLACKLIST);  // ouvre le fichier "blackl.txt"
      
     // compteur le nombre de lignes dans le fichier
     while(readLine()!= "")
      NB_CALLER_TO_BLOCK++;  // compte les lignes du fichier sd pour savoir combiens d'appels il faudra bloqué..
     closeFile();  // ferme le fichier
     
     openFile(FILE_CALL_BLACKLIST);  // ré-ouvre le fichier "blackl.txt"
    
     // lit toutes les lignes du fichier et les mets dans le tableau de String result[i]
     for (int i=0;i<NB_CALLER_TO_BLOCK;i++)
       result[i] = readLine();    
     closeFile();  // ferme le fichier
    
     for (int i=0;i<NB_CALLER_TO_BLOCK;i++){  
      if (String(num) == result[i]){   // compare le no de l'appel entrant avec les no bloqués qui sont inscrits dans le fichier BLACKL.txt sur la carte micro-SD
       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("NO BLOQUE!");    // il n'arrive jamais la :-(
       //delay(120000);
       break;   
      }
     }
    
    ////////////////////////////////////////////////
    bool initializeSD(){
      Serial.println(F("Initializing SD card..."));
      pinMode(CS_PIN, OUTPUT);
    
      Serial.print(F("Initializing SD card..."));
      if (!SD.begin(CS_PIN)) {
        Serial.println(F("initialization failed!"));
        return false;
      }
      Serial.println(F("initialization done."));
      return true;
    }
    
    int createFile(char filename[])
    {
      file = SD.open(filename, FILE_WRITE);
    
      if (file)
      {
        lcd.setCursor(0,0);
        lcd.print("File created!");
        Serial.println(F("File created successfully."));
        return 1;
      } else
      {
        lcd.setCursor(0,0);
        lcd.print("File not created!");
        Serial.println(F("Error while creating file."));
        return 0;
      }
    }
    
    int writeToFile(char text[])
    {
      if (file)
      {
        file.println(text);
        Serial.println(F("Writing to : "));    
        return 1;
      } else
      {
        Serial.println(F("Couldn't write to file"));
        return 0;
      }
    }
    
    void closeFile()
    {
      if (file)
      {
        file.close();
        Serial.println(F("File closed"));
      }
    }
    
    int openFile(char filename[])
    {
      file = SD.open(filename);
      if (file)
      {
        Serial.println(F("File opened with success!"));
        return 1;
      } else
      {
        Serial.println(F("Error opening file..."));
        return 0;
      }
    }
    
    String readLine(){
      String received = "";
      char ch;
      while (file.available())
      {
        ch = file.read();
        if (ch == '\n')
        {
         return String(received);
        }
        else
        {
          received += ch;
        }
      }
      return "";
    }

    -----

  2. #2
    paulfjujo

    Re : Arduino comparer String[] avec un char[]

    bonjour,


    je ne pratique pas l' Arduino
    mais il me semble qu'il pourrait y avoir probleme ici,
    vu qu'il n'y a pas reservation de memoire pour le contenu de String receiveid.. taille nulle initiale

    Code:
    String readLine(){
      String received  = "            ";  //12 maxi ?
      char ch;
      while (file.available())
      {
        ch = file.read();
        if (ch == '\n')
        {
         return String(received);
        }
        else
        {
          received += ch;
        }
      }
      return "";
    }

    pour comparer 2 strings :

    1 metre gradué si on parle de la ficelle ,
    ou
    strstr ou strcmp
    ou caractere par caractere
    Dernière modification par paulfjujo ; 22/02/2016 à 10h18.

  3. #3
    Yoruk

    Re : Arduino comparer String[] avec un char[]

    La robotique, c'est fantastique !

Discussions similaires

  1. convertir un int en char arduino
    Par kaky951357 dans le forum Électronique
    Réponses: 8
    Dernier message: 27/08/2015, 15h13
  2. problème String/Char java
    Par lepetitchimiste dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 18/05/2015, 13h20
  3. String et Char
    Par DADYCOKE dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 26/02/2013, 18h16
  4. probleme resultat avec division de signed char sur PIC18F C18
    Par inviteac751535 dans le forum Électronique
    Réponses: 15
    Dernier message: 27/02/2012, 23h01
  5. [C]-Conversion Int -> Char, Float -> Char, ...
    Par jorg1n dans le forum Électronique
    Réponses: 2
    Dernier message: 25/06/2008, 12h05
Découvrez nos comparatifs produits sur l'informatique et les technologies.