Skip to content

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

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)