FlowCode Code C

Bonjour,

J'ai fais un programme permettant d'amplifier diminuer le débit et le volume ainsi que arrêter et ouvrir l'eau.
Le programme a était fait sur Arduino et j'aimerais maintenant le mettre sur flowcode pour que mes coéquipiers puissent l'utiliser.
J'ai en effet vu qu'on pouvait mettre du C sur flowcode mais je ne sais pas comment ça fonctionne...

J'espère que vous pourrez m'aidez !

#include <EasyVR.h>
#include <Bridge.h>
#include <BridgeClient.h>


#include "Arduino.h"
#if !defined(SERIAL_PORT_MONITOR)
#error "Arduino version not supported. Please update your IDE to the latest version."
#endif

#if defined(SERIAL_PORT_USBVIRTUAL)
// Shield Jumper on HW (for Leonardo and Due)
#define port SERIAL_PORT_HARDWARE
#define pcSerial SERIAL_PORT_USBVIRTUAL
#else
// Shield Jumper on SW (using pins 12/13 or 8/9 as RX/TX)
#include "SoftwareSerial.h"
SoftwareSerial port(12, 13);
#define pcSerial SERIAL_PORT_MONITOR
#endif

#include "EasyVR.h"

EasyVR easyvr(port);

//Groups and Commands
enum Groups
{
  GROUP_1  = 1,
};

enum Group1
{
  G1_AMPLIFIER = 0,
  G1_DESAMPLIFIER = 1,
  G1_MOINS = 2,
  G1_PLUS = 3,
  G1_OUVRIR = 4,
  G1_FERMER = 5,
};


int8_t group, idx, DEB;

void setup()
{
  // setup PC serial port
  pcSerial.begin(9600);

  // bridge mode?
  int mode = easyvr.bridgeRequested(pcSerial);
  switch (mode)
  {
    case EasyVR::BRIDGE_NONE:
      // setup EasyVR serial port
      port.begin(9600);
      // run normally
      pcSerial.println(F("---"));
      pcSerial.println(F("Bridge not started!"));
      break;

    case EasyVR::BRIDGE_NORMAL:
      // setup EasyVR serial port (low speed)
      port.begin(9600);
      // soft-connect the two serial ports (PC and EasyVR)
      easyvr.bridgeLoop(pcSerial);
      // resume normally if aborted
      pcSerial.println(F("---"));
      pcSerial.println(F("Bridge connection aborted!"));
      break;

    case EasyVR::BRIDGE_BOOT:
      // setup EasyVR serial port (high speed)
      port.begin(115200);
      // soft-connect the two serial ports (PC and EasyVR)
      easyvr.bridgeLoop(pcSerial);
      // resume normally if aborted
      pcSerial.println(F("---"));
      pcSerial.println(F("Bridge connection aborted!"));
      break;
  }

  while (!easyvr.detect())
  {
    Serial.println("EasyVR not detected!");
    delay(1000);
  }

  easyvr.setPinOutput(EasyVR::IO1, LOW);
  Serial.println("EasyVR detected!");
  easyvr.setTimeout(5);
  easyvr.setLanguage(0);

  group = EasyVR::TRIGGER; //<-- start group (customize)
}

void action();

void loop()
{
  if (easyvr.getID() < EasyVR::EASYVR3)
    easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

  Serial.print("Say a command in Group ");
  Serial.println(group);
  easyvr.recognizeCommand(group);

  do
  {
    // can do some processing while waiting for a spoken command
  }
  while (!easyvr.hasFinished());

  if (easyvr.getID() < EasyVR::EASYVR3)
    easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

  idx = easyvr.getWord();
  if (idx >= 0)
  {
    // built-in trigger (ROBOT)
    // group = GROUP_X; <-- jump to another group X
    return;
  }
  idx = easyvr.getCommand();
  if (idx >= 0)
  {
    // print debug message
    uint8_t train = 0;
    char name[32];
    Serial.print("Command: ");
    Serial.print(idx);
    if (easyvr.dumpCommand(group, idx, name, train))
    {
      Serial.print(" = ");
      Serial.println(name);
    }
    else
      Serial.println();
    // beep
    easyvr.playSound(0, EasyVR::VOL_FULL);
    // perform some action
    action();
  }
  else // errors or timeout
  {
    if (easyvr.isTimeout())
      Serial.println("Timed out, try again...");
    int16_t err = easyvr.getError();
    if (err >= 0)
    {
      Serial.print("Error ");
      Serial.println(err, HEX);
    }
  }
}

void action()
{
  switch (group)
  {
    case GROUP_1:
      switch (idx)
      break;
    case G1_AMPLIFIER:
      if (DEB == 1)
      {
        easyvr.playSound(1, EasyVR::VOL_FULL);
        group = GROUP_1;
      }
      break;
       switch (idx)
    case G1_DESAMPLIFIER:
        if (DEB == 1 )
        {
          easyvr.playSound(2, EasyVR::VOL_FULL);
          group = GROUP_1;
        }
        break;
    case G1_MOINS:
      if (DEB == 1)
      {
        easyvr.playSound(1, EasyVR::VOL_FULL);
        group = GROUP_1;
      }
      break;
    case G1_PLUS:
      if (DEB == 1)
      {
        easyvr.playSound(1, EasyVR::VOL_FULL);
        group = GROUP_1;
      }
      break;
    case G1_OUVRIR:
      if (DEB == 1)
      {
        easyvr.playSound(1, EasyVR::VOL_FULL);
        group = GROUP_1;
      }
      break;
    case G1_FERMER:
      if (DEB == 1)
      {
        easyvr.playSound(1, EasyVR::VOL_FULL);
        group = GROUP_1;
        break;
      }
      break;
  }
}

Ça fonctionne dans l'autre sens... vous faites le diagramme de flux et ça génère Le code si je me souviens bien

Si c'est vraiment vous l'auteur du code ci dessus, vous n'aurez pas de mal à expliquer la logique du code à l'aide de petites boites graphiques

Bonjour

J'ai en effet vu qu'on pouvait mettre du C sur flowcode mais je ne sais pas comment ça fonctionne..

"Bloc C" dans Flowcode : Lire la doc pour découvrir la syntaxe, le passage des variables entre code C et Flowcode
Tout ça pour un code non simulable par principe !! ..... A réserver pour l'écriture en C de l'équivalent d'un bloc manquant par exemple pour piloter un composant nouveau.

Pas du tout prévu pour récupérer un programme complet , ne pas pouvoir le simuler.... puis le renvoyer à un compilateur éventuellement différent du compilateur pour lequel le code d'origine a été écrit......

Comme J.M.L je pense que :

Si c'est vraiment vous l'auteur du code ci dessus, vous n'aurez pas de mal à expliquer la logique du code à l'aide de petites boites graphiques

+Si vous êtes l'auteur du code , pourquoi l'avoir commenté en anglais ? vos coéquipiers sont anglophones ?

Je lirai bien attentivement plus tard vos messages !

Si c'est vraiment vous l'auteur du code ci dessus, vous n'aurez pas de mal à expliquer la logique du code à l'aide de petites boites graphiques

Mais pour répondre à celle-ci sachez que le code je l'ai obtenu avec le logiciel EasyCommander ce qui permet de programmer ma voix avec EasyVR 3.0 et j'ai ensuite coder toute la partie du bas !

Je me permets de faire un petit up !

Cf post #1 "Ça fonctionne dans l'autre sens... vous faites le diagramme de flux et ça génère Le code"