Bonjour à toutes et à tous,
Je suis en train de développer un système de distribution automatisée pour aquarium.
Dans ce cadre là, je dois pouvoir faire des distributions de produit à des moments donné, et reprogrammer cet événement X temps après (ça dépend de la fréquence).
J'ai codé ceci :
if (((now.year()) == tab_programmation[i].annee) && ((now.month()) == tab_programmation[i].mois) && ((now.day()) == tab_programmation[i].jour) && ((now.hour()) == tab_programmation[i].heure) && ((now.minute()) == tab_programmation[i].minutes)) //test pour savoir si un des événements programmé doit se faire
{
//Si c'est le cas
//Action moteur tab_programmation[i].action A FAIRE
//Enregistrement de l'action dans le log A FAIRE
//Puis modification de la date
DateTime futur;
int rep = tab_prod[tab_moteur[tab_programmation[i].action].numero_produit].repetition_distribution; //1 pour jour, 2 pour semaine, 3 pour mois
switch (rep)
{
case 1: //journalier
futur = (now + TimeSpan (0,1,0,0)); //on ajoute un jour
tab_programmation[i].annee = futur.year();
tab_programmation[i].mois = futur.month();
tab_programmation[i].jour = futur.day();
tab_programmation[i].heure = futur.hour();
tab_programmation[i].minutes = futur.minute();
break;
case 2: //hebdo
futur = (now + TimeSpan (0,7,0,0)); //on ajoute une semaine
tab_programmation[i].annee = futur.year();
tab_programmation[i].mois = futur.month();
tab_programmation[i].jour = futur.day();
tab_programmation[i].heure = futur.hour();
tab_programmation[i].minutes = futur.minute();
break;
case 3: //mensuel
futur = (now + TimeSpan (1,0,0,0)); //on ajoute 1 mois
tab_programmation[i].annee = futur.year();
tab_programmation[i].mois = futur.month();
tab_programmation[i].jour = futur.day();
tab_programmation[i].heure = futur.hour();
tab_programmation[i].minutes = futur.minute();
break;
/*default:
// if nothing else matches, do the default
// default is optional
break;*/
}
}
Mon tablea tab_programmation contient 4 éléments de type structure :
/*Structure Programmation des dates*/
struct PROG_PROD {
int annee;
int mois;
int jour;
int heure;
int minutes;
int action; //sur quel moteur agir
};
et initialisé comme ceci :
ST_PROG_PROD tab_programmation[4] = {{21, 11, 2016, 8, 55, 1}, {21, 11, 2016, 19, 0, 3}, {26, 11, 2016, 8, 50, 0}, {26, 11, 2016, 8, 40, 2}};
Si j'ai bien codé, l'action qui devrait se dérouler le 21/11/2016 à 8h55 devrait se répéter le 22/11/2016 à 8h55 et donc mon tableau devrait ressembler à ça :
ST_PROG_PROD tab_programmation[4] = {{22, 11, 2016, 8, 55, 1}, {21, 11, 2016, 19, 0, 3}, {26, 11, 2016, 8, 50, 0}, {26, 11, 2016, 8, 40, 2}};
Vous pensez que ça fait ce que je veux ?
Merci de votre aide, j'utilise TimeSpan pour la première fois et les structures DateTime aussi...
Je précise que le code compile...
Pas encore reçu mon matériel pour tester...