Appearance
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;
}