Appearance
Version 1.1.29-alpha
Note
Version capable de reconnaitre un début, une fin, et quel type de boutton casier appuyer. Mais également la fermeture et l'envoie d'un mot de passe
WARNING
Ce code n'est pas encore capable de reconnaitre ou ce situe le mot de passe dans le tampon
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.30
* @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;
// Casier Action
int casierActionNumber;
int casier1Password;
int casier2Password;
int casier3Password;
int casier4Password;
int casier5Password;
int casier6Password;
void setup() {
configset();
Serial3.print("ST<{\"cmd_code\":\"set_buzzer\",\"type\":\"system\",\"time\":1000}>ET");
}
void loop() {
// éteint la led à la fin d'une trame
digitalWrite(led, LOW);
// Début de trame
if (searchArray(tampon, "ST<", 3)) {
Serial.println("[DEBUT DE TRAME]");
// Bouton Casier appuyer
if (searchArray(tampon, "Casier", 6)) {
Serial.println("[CASIER]");
for (int i = 0; i <= 5; i++) {
String casierNumber = "Casier" + String(i);
if (searchArray(tampon, casierNumber.c_str(), 7)) {
Serial.println("[NUMERO " + String(i) + "]");
casierActionNumber = i;
break;
}
}
}
// MDP set Casier
if (casierActionNumber != 0 && searchArray(tampon, "PC", 2)) {
Serial.println("[CASIER PASSWORD [MDP]");
// if valeur casier === 4
}
// Password popup up close
if (casierActionNumber != 0 && searchArray(tampon, "FermerPopup", 11)) {
Serial.println("[PASSWORD POPUP FERMEE]");
casierActionNumber = NULL;
}
}
tamponReset();
}
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("");
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;
}
void tamponReset() {
// 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;
}
}