[résolu] paramétrer des SerialX.print

bonsoir à tous,

je cherche à optimiser mon code, j'ai une série importante (30 lignes) de Serial.print.... orientée soit sur le port 0 (moniteur série) soit sur le port 1 (si le bluetooth est en service)
comme ceci

if (cde [2] == LOW){
            Serial.print(F("Pluie : ")), Serial.print(hautcpluie),Serial.print(F("mm / ")),Serial.print(pluie),Serial.println(F("imp"));
            Serial.print(F("imp vent : ")), Serial.print(ventimp); //ventimp = somme imp vent en 1 mn
            Serial.print(F("  Vent moy : ")), Serial.print(ventmoy), Serial.print(F("km/h  max :  ")), Serial.print(ventmaxarch), Serial.print(F("km/h  "));
            Serial.print(F("VentCmoy : ")), Serial.println(ventcmoy);
            Serial.print(F("Lumiere : ")),  Serial.print(lumiere),    Serial.println(F(" lx")); 
            Serial.print(F("altitude: ")), Serial.print(ALTITUDE,0), Serial.print(F(" metres  "));
            Serial.print(F("temp P : ")), Serial.print(Talt,2), Serial.println(F(" deg C "));
            Serial.print(F("P abs : ")), Serial.print(Pabs,0), Serial.print(F(" mb "));
            Serial.print(F("  P rel : ")), Serial.print(Prel,0), Serial.println(F(" mb"));
            ......
            }
else { //bluetooth en service
            exactement la même chose mais avec Serial1.print...
            }

est il possible de créer une fonction ou autre qui permette d'écrire ce code une seule fois

d'avance merci

Bonjour,

If suffit de créer une fonction qui prend le 'Serial' en argument.
Par exemple avec passage d’argument par référence:

void printAll(HardwareSerial &ser)
{
  ser.print(F("Pluie : ")), ser.print(hautcpluie), ser.print(F("mm / ")), ser.print(pluie), ser.println(F("imp"));
  ser.print(F("imp vent : ")), ser.print(ventimp); //ventimp = somme imp vent en 1 mn
  // ...
}

Pour l'appel

 printAll(Serial);
  // ou
  printAll(Serial1);

merci bcp Kamill