DuinOS tâche infinie

Bonjour !

Après une petite recherche sur le forum, je n'ai pas trouvé de questions en lien, si j'ai pas vu je m'en excuse :~

Voilà mon soucis :

J'aurais besoin de passer en paramètre une variable (à savoir une variable de type EthernetClient histoire de faire simple... ). Et avec le peu de doc/exemple que je trouve et mon niveau en anglais, je me trouve bien embêté...

L'idée serait en fait que faire une tâche par client permettant de communiquer avec (tout ça, c'est prêt) mais reste le soucis de passer le client en paramètre...

Est-ce possible ? (comme un thread en C) ou non ?

Merci d'avance :)

Peut-être qu’il serait utile que tu nous mette ce que tu a déjà fait?

EthernetClient client = server.available(); //attente du client
  if (client) {  //si un client se connecte
    while(client.connected()) { //tant qu'il est connecté
      if (client.available()) { //et qu'il envoie des données
                    cmd=NULL;
                    reponse=NULL;
        while (cmd!='

Le reste du code c'est du traitement de trames et du remplissage de trames réponses...

Du coup, ce que je voudrais faire c'est créer une tâche par client entre le if(client) et le while(client.connected) qui me permettrait de prendre chaque client "a part", récupérer la trame, en extraire ce qui m'interesse et y répondre.

Du coup, je pensais faire 3/4 tâches (je dois avoir 3 clients maximum) qui permettraient de récupérer le client (si je peux dire ainsi) donc qui aurait besoin du passage de paramètres et ensuite des tâches qui seraient appelés dans les 3/4 premières si la trame demande ceci ou cela (a savoir des valeurs de capteurs).

J'espère être assez clair...

EDIT : j'ai sûrement trouvé une solution bien plus simple :grin:) { //on recupère jsuqu'au $          cmd = client.read();          reponse += cmd;        } ```

Le reste du code c'est du traitement de trames et du remplissage de trames réponses...

Du coup, ce que je voudrais faire c'est créer une tâche par client entre le if(client) et le while(client.connected) qui me permettrait de prendre chaque client "a part", récupérer la trame, en extraire ce qui m'interesse et y répondre.

Du coup, je pensais faire 3/4 tâches (je dois avoir 3 clients maximum) qui permettraient de récupérer le client (si je peux dire ainsi) donc qui aurait besoin du passage de paramètres et ensuite des tâches qui seraient appelés dans les 3/4 premières si la trame demande ceci ou cela (a savoir des valeurs de capteurs).

J'espère être assez clair...

EDIT : j'ai sûrement trouvé une solution bien plus simple :grin:

Bonjour,

Mon précédent problème est résolu mais la solution pose un nouveau problème...

Tout d'abord, voici mon code :

taskLoop(client1) {
  tacheDispo[0]=1;
  analyTrame(client, cmd, reponse);
  tacheDispo[0]=0;
}

Et :

  createTaskLoop(client1, NORMAL_PRIORITY);

Sachant :

void loop () {
        Serial.println("base");
  client = server.available(); //mise en attente d'un client
        Serial.println("attente");
void analyTrame(EthernetClient client, char cmd, String reponse) {
               Serial.println("là");
     while(client.connected()) {
               //Programme
      }
}

Je n'ai copié collé qu'une partie pour avoir ce dont j'ai besoin pour vous expliquer...

Le programme se téléverse parfaitement. Aucune erreur ni de warning.

Et quand je lance le terminal série, il ne m'affiche rien, et pour cause : le programme boucle a l'infini dans le taskLoop (donc en mettant a 1 ou 0 la case du tableau). Si je fais un serial.print dedans, il me l'affichera en boucle. J'ai 2 autres tâches identiques (sauf les variables utilisées) qui bouclent de la même façon : sans entrer dans analyTrame ni le void Loop()...

Si quelqu'un avait une idée ou une solution... Tout mes autres programmes avec DuinOS fonctionne parfaitement...

Merci d'avance !