Skip to content

Version 1.1.28-alpha

Note

Création d'une nouvelle fonction nommé searchArray

Code

c++
/**
   * @file bras.cpp
   * @brief Communication entre l'afficheur STONE HMI, Arduino MEGA et action des casiers du B.R.A.S
   * documentation : https://docs.ks-infinite.fr/bras/
   * 
   * @author Lucas W.
   * @author Florian V.
   * @author Jessy K.
   * @version a1.1.28
   * @date 07/02/2024
   * @copyright Copyright - B.R.A.S, Kerogs Infinite, Lycée Condorcet - Stiring-Wendel
   */

#include <Bonezegei_Search.h>
Bonezegei_Search search;

#define led 2

char tampon[30];
int tamponPos = 0;
String tamponStr;

char incomingByte;

char checkString;

bool reset = false;


void setup() {
  configset();
}

void loop() {
  // éteint la led à la fin d'une trame
  digitalWrite(led, LOW);

  // boolean sequenceFound = false;
  // for (int i = 0; i < 30 - 2; i++) {
  //   if (tampon[i] == '>' && tampon[i + 1] == 'E' && tampon[i + 2] == 'T') {
  //     sequenceFound = true;
  //     break;
  //   }
  // }

  bool sequenceFound = searchArray(tampon, "ET", 2);

  if (sequenceFound) {
    Serial.println("La séquence \">ET\" existe dans le message.");
    // Faites ce que vous devez faire lorsque la séquence est trouvée
  }
}

void serialEvent3() {
  while (Serial3.available() > 0) {
    digitalWrite(led, HIGH);
    incomingByte = Serial3.read();
    tampon[tamponPos] = incomingByte;
    tamponPos++;
  }

  // Afficher la trame en ASCII
  Serial.println("+=======================+");
  Serial.print("|> ASCII : ");
  for (int i = 0; i < tamponPos; i++) {
    Serial.print(tampon[i]);
  }
  Serial.println("");

  // Afficher la trame en HEX
  Serial.print("|> HEX : ");
  for (int i = 0; i < tamponPos; i++) {
    Serial.print(tampon[i], HEX);
    Serial.print(" ");
  }
  Serial.println("");

  // Convertir le tampon en chaîne de caractères
  tampon[tamponPos] = '\0';  // Terminer la chaîne
  String tamponStr = tampon;

  Serial.print("|> tamponStr : ");
  Serial.println(tamponStr);
  Serial.println("+=======================+");

  // En attente d'un autre
  Serial.println("En attente...");
}


// configset
void configset() {
  // PC
  while (!Serial) {
    Serial.print(".");
  }
  Serial.begin(9600);
  Serial.print(".");

  // HMI
  while (!Serial3) {
    Serial.print(".");
  }
  Serial3.begin(9600);
  Serial.print(".");

  // LED
  pinMode(led, OUTPUT);
  Serial.print(".");

  // Fin chargement (ne pas supprimer)
  delay(200);
  Serial.println("Fin");
}

// Fonction pour rechercher une chaîne de caractères dans un tableau
bool searchArray(char array[], char arraySearch[], int numberCSearch) {
  bool sequenceFound = false;

  /*
    TODO : 
    Faire la  taille des buffer (30) le remplacer si possible par sizeof
    Faire le sizeoff pour le NCS
  */

  // NCS 1
  if (numberCSearch == 1) {
    for (int i = 0; i < 30 - 2; i++) {
      if (tampon[i] == arraySearch[0]) {
        sequenceFound = true;
        break;
      }
    }
  }
  // NCS 2
  if (numberCSearch == 2) {
    for (int i = 0; i < 30 - 2; i++) {
      if (tampon[i] == arraySearch[0] && tampon[i + 1] == arraySearch[1]) {
        sequenceFound = true;
        break;
      }
    }
  }
  // NCS 3
  if (numberCSearch == 3) {
    for (int i = 0; i < 30 - 2; i++) {
      if (tampon[i] == arraySearch[0] && tampon[i + 1] == arraySearch[1] && tampon[i + 2] == arraySearch[2]) {
        sequenceFound = true;
        break;
      }
    }
  }
  // NCS 4
  if (numberCSearch == 4) {
    for (int i = 0; i < 30 - 2; i++) {
      if (tampon[i] == arraySearch[0] && tampon[i + 1] == arraySearch[1] && tampon[i + 2] == arraySearch[2] && tampon[i + 3] == arraySearch[3]) {
        sequenceFound = true;
        break;
      }
    }
  }
  // NCS 5
  if (numberCSearch == 5) {
    for (int i = 0; i < 30 - 2; i++) {
      if (tampon[i] == arraySearch[0] && tampon[i + 1] == arraySearch[1] && tampon[i + 2] == arraySearch[2] && tampon[i + 3] == arraySearch[3] && tampon[i + 4] == arraySearch[4]) {
        sequenceFound = true;
        break;
      }
    }
  }
  // NCS 6
  if (numberCSearch == 6) {
    for (int i = 0; i < 30 - 2; i++) {
      if (tampon[i] == arraySearch[0] && tampon[i + 1] == arraySearch[1] && tampon[i + 2] == arraySearch[2] && tampon[i + 3] == arraySearch[3] && tampon[i + 4] == arraySearch[4] && tampon[i + 5] == arraySearch[5]) {
        sequenceFound = true;
        break;
      }
    }
  }

  return sequenceFound;
}

Documentation/code du Projet B.R.A.S présent sur ce site sous license CC BY 4.0. (pour en savoir plus rdv dans la section LICENSE)