Excel vers arduino vers excel

Bonjour,

dans le cadre d'un projet je me retrouve a devoir envoyer une commande vers arduino a partir du des Données sortante du data streamer de excel et de récupérer cette commande dans excel les Données entrante de excel.

Cela me permettra de commander un arduino a partir d'excel et de recevoir les information collectées par l'arduino sur excel.

avant d'en arriver la, j'ai travailler juste sur l'arduino ce qui m'a permis a travers le port serie de l'arduino d'entrer des commande et de piloter les sortie a ma guise. Cependant le code, fonctionnel sur l'arduino, ne fonctionne plus avec le data streamer.

ainsi voici les differents codes permettant de lire les commandes que j'entre :

#include <stdio.h>
#include <string.h>

void setup() {
  Serial.begin(9600);
}

void loop() {
if (Serial.available()>0)
  {
  String Saisi = Serial.readStringUntil('\n');
  char Cmde[9];
 Saisi.toCharArray(Cmde, 9);
 Serial.println(Cmde); 
 }
}
'''

'''
const byte tailleMaxCmde = 100;
char Cmde[tailleMaxCmde + 1];
int c;
const char marqueurDeFin = '\r';

void setup() {
Serial.begin(9600);
// Serial.setTimeout(5000);
}

void loop() {
  static byte indexMessage = 0; // static pour se souvenir de cette variable entre 2 appels consécutifs. initialisée qu'une seule fois.
  boolean messageEnCours = true;

  while (Serial.available() && messageEnCours) {
    int c = Serial.read();
    if (c != -1) {
      //Serial.print(F("Octet lu: 0x")); Serial.print(c, HEX); // ici c est un entier, on affiche le code ASCII en Hexadécimal
      //Serial.print(F("\t[")); Serial.print((char) c); Serial.println(F("]"));
      switch (c) {
        case marqueurDeFin:
          // Serial.println(F("Fin de chaine"));
          Cmde[indexMessage] = '\0'; // on termine la c-string
          indexMessage = 0; // on se remet au début pour la prochaine fois
          messageEnCours = false;
          Serial.print(Cmde);
          break;
        default:
          if (indexMessage <= tailleMaxCmde - 1) Cmde[indexMessage++] = (char) c; // on stocke le caractère et on passe à la case suivante
         // else Serial.println(F("j'ignore!"));
          break;
      }
    }
  }
}

le premier etant fonctionnele avec le data streamer mais non fonctionnelle avec le code complet et le deuxieme etant fonctionnelle avec le code complet sur l'arduino mais pas sur le data streamer.

J'ai conscience que le message n'est pas claire, ainsi pour toute question n'hesitez pas a les poser j'essayerai d'y repondre le plus clairement possible.

Merci d'avance et bonne journée.

Si vous voulez comprendre comment écouter le port série (ou gérer un flux asynchrone) vous pouvez jeter un oeil à mon petit tuto sur le sujet

Tout ce qui est synchrone est risqué

Assurez vous aussi que le marqueur de fin soit bien envoyé (le \n dans votre code)

Bonsoir marcly

Ca peut t'intéresser

Cordialement
jpbbricole

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.