Skip to content

Version 1.1.29-alpha

Note

Mise à jours de la fonction searchArray pour la rendre plus compacte. Ajout de la détection du casier1, ainsi que le début d'une trame et ajout de la réinitialisation du buffer lorsqu'une fin de trame est détecté via >ET

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.29
   * @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);

  // Début de trame
  searchArray(tampon, "ST<", 3) ? Serial.println("[DEBUT DE TRAME]") : 0;

  // Si casier 1
  searchArray(tampon, "Casier1", 7) ? Serial.println("[CASIER 1]") : 0;

  // fin de trame
  if (searchArray(tampon, ">ET", 3)) {
    Serial.println("[FIN DE TRAME]");
    for (int i = 0; i < sizeof(tampon); i++) {
      tampon[i] = 0;
    }
    tamponPos = 0;
  }
}

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;

  for (int i = 0; i < 30 - numberCSearch + 1; i++) {
    bool match = true;
    for (int j = 0; j < numberCSearch; j++) {
      if (tampon[i + j] != arraySearch[j]) {
        match = false;
        break;
      }
    }
    if (match) {
      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)