Appearance
Version 1.1.26-alpha
WARNING
Seul l'ouverture des casiers peuvent vider le buffer
Note
Ajout d'une bibliothèque Bonezegei_Search.h
pour simplifier la recherche de valeur dans la trame.
Code
c++
#include <Bonezegei_Search.h>
Bonezegei_Search search;
#define led 2
char tampon[30];
int tamponPos = 0;
char tamponStr;
char incomingByte;
char checkString;
bool reset = false;
int casierAction;
void setup() {
configset();
}
void loop() {
// éteint la led à la fin d'une trame
digitalWrite(led, LOW);
// si une trame est reçu !
checkString = strstr(tamponStr, ">ET");
if (checkString != NULL) {
// returns the first word of the string
String valueString1 = search.getString(tamponStr, "name");
Serial.print("\"name\": ");
Serial.println(valueString1);
// si c'est un casier
char checkCasierOpen = strstr(tamponStr, "Casier");
if (checkCasierOpen != NULL) {
casierAction = tampon[13];
Serial.print("[CASIER OUVERT !] ");
Serial.println(casierAction);
reset = true;
}
// si c'est un fermer
char checkCasierFermer = strstr(tamponStr, "FC");
if (checkCasierFermer != NULL) {
Serial.print("[CASIER FERME !] ");
Serial.println(casierAction);
}
// Reset le tampon après action effectué !
if (reset = true) {
Serial.println("[RESET]");
tamponStr = "";
tampon[150] = "";
tamponPos = 0;
casierAction = "0";
reset = false;
}
}
}
// Serial Event 3
void serialEvent3() {
for (int i = 0; i < Serial3.available(); i++) {
while (Serial3.available() > 0) {
digitalWrite(led, HIGH);
incomingByte = Serial3.read();
tampon[tamponPos] = incomingByte;
// afficher logs
logsPC(incomingByte, i, tamponPos);
// déplace la position au prochain.
tamponPos++;
}
// tampon => tamponStr
for(int i = 0; i < sizeof(tampon); i++ ){
tamponStr += tampon[i];
}
// Afficher la trame en ASCII
Serial.println("+=======================+");
Serial.print("|> ASCII : ");
for (int i = 0; i < sizeof(tampon); i++) {
Serial.print(tampon[i]);
}
Serial.println("");
// Afficher la trame en HEX
Serial.print("|> HEX : ");
for (int i = 0; i < sizeof(tampon); i++) {
Serial.print(tampon[i], HEX);
Serial.print(" ");
}
Serial.println("");
// Afficher la trame en tamponStr
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");
}
// Logs
void logsPC(char data, int tramePos, int tamponPos) {
// // Serial.println(hexdata);
// Serial.print("[TramePos : ");
// Serial.print(tamponPos);
// Serial.print("] ");
// Serial.print("[TamponPos : ");
// Serial.print(tramePos);
// Serial.print("] ");
// Serial.print("[HEX: ");
// Serial.print(data, HEX);
// Serial.print("] [ASCII : ");
// Serial.print(data);
// Serial.print("] [");
// // Check
// if (data == 0x00) {
// Serial.println("N/A]"); // Si 0x00
// } else {
// Serial.println("]");
// }
}