Appearance
Version 1.1.25-alpha
Utilisation
Version partiellement utilisable
Note
Mise en commentaire de la partie ``logsPC()```afin de clarifier lors des débugs.
Reconstruction total de la partie de la réception des données et changement du tampon[30]
et rajout d'une version non tableua pour les valeurs récupéré. La version Tableau et la version String seront utilisé.
Rajout de nouvelle Logs qui ne renvoie que les valeurs récupéré. En hex
et ASCII
Légère amélioration de la fonction configset()
afin de permettre d'éviter plus de bug.*
Rajout d'un système de détection de fin de trame via strstr()
Code
c++
#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) {
incomingByte = Serial3.read();
tampon[tamponPos] = incomingByte;
// afficher logs
logsPC(incomingByte, i, tamponPos);
tamponStr += tampon[i];
// déplace la position au prochain.
tamponPos++;
}
// 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("");
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("]");
// }
digitalWrite(led, HIGH);
}