Bonjour,
C'est (très) bien Arduino, mais on commence par faire clignoter une led, et on se retrouve à se poser des questions métaphysiques sur la programmation...
J'utilise une carte Due, car j'ai besoin d'utiliser plusieurs ports série. Les ports séries sont configurables via une "IHM" : écran LCD et boutons poussoirs. Quand je dis configurables c'est baudrate, nb bits, parité, nb de stops.
Tout cela fonctionne mais je cherche à optimiser mon code. Aujourd'hui j'ai une fonction par port série. Efficace, mais gourmand en place et pas élégant. Or ces fonctions sont toutes les mêmes hormis le nom de la classe (Serial1, Serial2, Serial3). Exemple:
void serial1Config (boolean state)
{
if (!state)
{
Serial1.end();
Serial.println("\nArret du port serie 1");
}
else
{
if ( serial1Status == 1 )
{
Serial1.end();
Serial.println("\nArret du port serie 1");
Serial1.init( baudRate[baudRateChoix] , config);
Serial.println("Demarrage du port serie 1");
}
else
{
serial1Status = 1;
Serial1.init( baudRate[baudRateChoix] , config);
Serial.println("\nDemarrage du port serie 1");
}
}
}
Comment faire pour passer le nom de la classe en argument, et avoir ainsi une fonction unique de type
void serialConfig (classe, état) ?
J'ai lu ici et là qu'il me faudrai déclarer une classe (par ex PortSerie), y déclarer des objets (par ex init()), dire que ces objets sont équivalents aux mêmes objets de la classe Serial (ou Stream?), et enfin utiliser un pointeur vers la classe (PortSerie *pointeur;).
J'ai récemment compris comment passer le nom d'un array en argument, mais là, pour moi c'est trop. C'est du Chinois Plus Plus
.
Est-ce quelqu'un saurait m'expliquer comment faire (pas nécessairement la solution toute prête, chercher m'aide à comprendre) ?