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