Variable objet pour serial (1, 2, 3)

Bonjour amis arduinien, :smiley:

(Hors sujet) j’viens de remarquer que les emodjs les plus faciles d’accès sont soit énervés soit étonnés.
J’espère que ça ne reflète pas les emodjis les plus utilisés de ce forum… :grin: :grin:

Trêve de plaisanterie,
Je viens vous voir car je souhaite réaliser une mini fonction qui retourne les valeurs des ports séries sur une carte méga (qui contient 3 ou 4 ports séries).
Ci dessous la fonction en question.
Mon but est de pouvoir switch d’un port à l’autre avec un paramètre de fonction :
Bon là le code c’est du n’importe quoi mais c’est pour vous montrer l’exemple que je souhaite faire.
Pouvoir appeler la fonction avec le serial1 ou le serial2 ou …

En vous remerciant pour votre aide : :-* :kissing:

for(byte i = 1; i <= 3; i++){FSerial_Lie(Serial+i)}

String FSerial_Lie(FSerial_Lie_Port){
  // -------------------------------------------
  // - Description :
  //    Permet de lire le port serie
  // - Variables :
  //    FSerial_Lie_Port = Objet du port série
  // - Retourne :
  //    Valeur
  // -------------------------------------------
  if(FSerial_Lie_Port.available() == 0){return ("");}
  String FSerial_Lie_Return = "";
  byte FSerial_Lie_Temp01 = 0;
  while(FSerial_Lie_Port.available()){
    while(FSerial_Lie_Port.available()){
      FSerial_Lie_Temp01 = FSerial_Lie_Port.read();
      if(FSerial_Lie_Temp01 < 128 && FSerial_Lie_Temp01 > 31){FSerial_Lie_Return += (char) FSerial_Lie_Temp01;}
    }
    delay(500);
  }
  Serial.print("Info PortSerie : ");
  Serial.println(FSerial_Lie_Return);
  return (FSerial_Lie_Return);
}

Bonjour,

Il faut que tu passes le port serie par référence

String FSerial_Lie(HardwareSerial &FSerial_Lie_Port)
{
  // -------------------------------------------
  // - Description :
  //    Permet de lire le port serie
  // - Variables :
  //    FSerial_Lie_Port = Objet du port série
  // - Retourne :
  //    Valeur
  // -------------------------------------------
  if(FSerial_Lie_Port.available() == 0){return ("");}
  String FSerial_Lie_Return = "";
  byte FSerial_Lie_Temp01 = 0;
  while(FSerial_Lie_Port.available()){
  ...

pour l’appel:

  String ret=FSerial_Lie(Serial1);

Il faut bien sur que tu initialises les serial dans le setup

Omg ca fonctionne. :o :o

Ps : voila surement pok les emodjis étonnés sont si accessibles : :grin: :grin:

Humm… etonnant cette facon de faire :

Je connaissais les parmetres ou variables avec ces déclarations string int ect…
Je connaissais les pointeurs avec la ptite étoile *FSerial_Lie_Port
Mais ta référence… Je vais essayer de potasser dessus, car je ne comprends pas du tout.

En tout cas, un grand merci a toi. :kissing: :kissing:

ReBonjour,

Par contre, si je souhaite le définir hors des paramétrés de la fonction, Pour le moment je ne sais pas comment m'y prendre :

HardwareSerial &FSerial_Lie_Port = Serial1;

Dododu01: ReBonjour,

Par contre, si je souhaite le définir hors des paramétrés de la fonction, Pour le moment je ne sais pas comment m'y prendre :

Je ne comprends pas bien ta question. Tu appelles la fonction comme je te l'ai indiqué en lui passant en paramètre Serial1 (par exemple)

Cool, merci a vous deux,

C'est bon Kamill, pepe a répondu a ma question. ;)

Bonjour, merci pepe,

Tu es au top ;)