et je voit pas comment incorporer ma machine a etat a ce code sans que j'ai un blocage : de la machine a etat .
code avec machine a etat :
#include <QApplication>
#include <QPushButton>
#include <QAction>
#include <QLabel>
#include <QPixmap>
#include "gainable.hpp"
#include "BB_DS18B20.hpp"
#include "gpioPin.hpp"
#include "lectureTemps.hpp"
#include "ecritTemps.hpp"
#include "vitesseVentilateurs.hpp"
#include "relais.hpp"
#include "commandes.hpp"
#include "affichageTerminal.hpp"
BB_DS18B20 * ds18b20;
void my_ctrl_c_handler(int s) {
desactiveTousRelais();
digitalWrite (relaiEteHiver,HIGH);
delete ds18b20;
release_gpiod();
exit (0);
}
// les autres fonctions
void fonctionsDivers () {
consigneDelta = tempExtLue - delta;
consigneVentIntCa = consigneDelta + 2;
commandeFroid();
commandeChauffage();
commandeCanicule();
hysteresisTempVitesseIntCa();
hysteresisTempVitesseExtFroid();
hysteresisTempVitesseIntFroid();
hysteresisTempVitesseExtChauf();
hysteresisTempVitesseIntChauf();
signal (SIGINT, my_ctrl_c_handler);
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget fenetre;
fenetre.setFixedSize(1200,600);
//QLabel label(&fenetre);
//label.setPixmap(QPixmap("/home/ludo/Pictures/IMG_0611.JPG"));
//label.show();
//return app.exec();
/****** ceci est le setup ******/
// les pins
pinMode (relaiEteHiver, OUTPUT);
digitalWrite (relaiEteHiver, HIGH);
pinMode (relaiComp, OUTPUT);
digitalWrite (relaiComp, HIGH);
pinMode (relaiV4V, OUTPUT);
digitalWrite (relaiV4V, HIGH);
pinMode (relaiVitesseVentExt, OUTPUT);
digitalWrite (relaiVitesseVentExt, HIGH);
pinMode (relaiPetiteVitesseInt, OUTPUT);
digitalWrite (relaiPetiteVitesseInt, HIGH);
pinMode (relaiGrandeVitesseInt, OUTPUT);
digitalWrite (relaiGrandeVitesseInt, HIGH);
pinMode (thermostats, INPUT_PULLUP);
pinMode (capteurFiltre, INPUT_PULLUP);
// pin Sondes ds18b20
int DS_PIN = 4;
pinMode (DS_PIN, OPENDRAIN_PULLUP);
ds18b20 = new BB_DS18B20 (gpioline[DS_PIN]);
// le fichier ID sur les ds18b20
loadDSConfig ("DS18B20.conf", ds_ID);
// charge info sur les ds18b20
char ficConf[654] = "DS18B20.conf";
FILE * confHan = fopen(ficConf, "r");
if (NULL == confHan) {
cout << "Le fichier de configuration \n" << ficConf << "\n doit exister\n";
return (111);
}
fclose(confHan);
loadDSConfig("DS18B20.conf", ds_ID); // protégé contre le cas où il est absent
cout << "\n configure\n";
if (ds_ID.size() < 2) {
cout << "\nVous devez avoir au moins un thermomètre\n";
return(112);
}
// créer le vecteur contenant la température des DS18b20
for (uint loop = 0; loop < ds_ID.size(); loop++)
ds_temperature.push_back (
-9999.9); // enregistre une information invalide pour commencer
/****** ceci est la loop *****/
// la loop
while (1) {
QPushButton bouton1("BoutonMenu", &fenetre); // la fenêtre est le parent du bouton
bouton1.setText("Menu"); // le nouveau texte
bouton1.setToolTip("Texte d'aide"); // info bulle
bouton1.setFont(QFont("Comic Sans MS", 14)); // nouvelle police
bouton1.setCursor(Qt::PointingHandCursor);
bouton1.setGeometry(60, 50, 180, 70);
QPushButton bouton2("BoutonValid", &fenetre); // la fenêtre est le parent du bouton
bouton2.setText("Valid"); // le nouveau texte
bouton2.setToolTip("demarage?"); // info bulle
bouton2.setFont(QFont("Comic Sans MS", 14)); // nouvelle police
bouton2.setCursor(Qt::PointingHandCursor);
bouton2.setGeometry(300, 50, 180, 70);
QPushButton bouton3("BoutonMoins", &fenetre); // la fenêtre est le parent du bouton
bouton3.setText("Moins"); // le nouveau texte
bouton3.setToolTip("Texte d'aide"); // info bulle
bouton3.setFont(QFont("Comic Sans MS", 14)); // nouvelle police
bouton3.setCursor(Qt::PointingHandCursor);
bouton3.setGeometry(700, 50, 180, 70);
QPushButton bouton4("BoutonPlus", &fenetre); // la fenêtre est le parent du bouton
bouton4.setText("Plus"); // le nouveau texte
bouton4.setToolTip("Texte d'aide"); // info bulle
bouton4.setFont(QFont("Comic Sans MS", 14)); // nouvelle police
bouton4.setCursor(Qt::PointingHandCursor);
bouton4.setGeometry(960, 50, 180, 70);
fenetre.show();
lireDS18B20();
ecritTemps();
gainable();
fonctionsDivers();
affichageTerminal();
time_t rawtime;
time ( & rawtime);
cout << ctime ( & rawtime) << endl;
return app.exec();
}
delete ds18b20;
return 0;
}