Skip to content

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("]");
  // }

}

Documentation/code du Projet B.R.A.S présent sur ce site sous license CC BY 4.0. (pour en savoir plus rdv dans la section LICENSE)