Newer
Older
void web_setup ()
Malaurie Bernard
committed
set_theme(1);
//Create tabs
uint16_t tab1 = ESPUI.addControl(ControlType::Tab, "Configurations", "Configurations");
uint16_t tab3 = ESPUI.addControl(ControlType::Tab, "Nouvelle Seringue", "Nouvelle seringue");
uint16_t tab4 = ESPUI.addControl(ControlType::Tab, "Caracteristiques du pousse-seringue", "Caracteristiques du pousse-seringue");
//***ABOVE***//
//***Syringe-pump***//
status_syringe_pump = ESPUI.label("Etat du pousse-seringue :", ControlColor::None, "A l'arrêt");
activation_syringe_pump = ESPUI.addControl(ControlType::Switcher, "Mise en marche", "Arrêt", ControlColor::None, status_syringe_pump, activation_syringe_pump_callback, (void*)19);
//***Syringe-filled***//
status_syringe_filled = ESPUI.label("Etat de la seringue :", ControlColor::None, "Pas en place");
syringe_filled_placement = ESPUI.addControl(ControlType::Switcher, "Mise en marche", "Arrêt", ControlColor::None, status_syringe_filled, syringe_filled_placement_callback, (void*)19);
ESPUI.addControl(ControlType::Separator, "", "", ControlColor::None);
//***Initialisation***//
initialisation = ESPUI.button("Initialisation", initialisation_callback, ControlColor::None, "");
Malaurie Bernard
committed
Malaurie Bernard
committed
//Volume restant
label_remaining_volume_mL = ESPUI.label("Volume restant en mL", ControlColor::None, "Volume restant en mL");
Malaurie Bernard
committed
ESPUI.addControl(ControlType::Slider, "Distance", "0", ControlColor::None, label_remaining_volume_mL, remaining_volume_mL_callback, (void*)19);
ESPUI.sliderContinuous = true;
//TAB1 = Configurations
//Choix de la seringue 1
//ESPUI.addControl(ControlType::Separator, "Seringue 1", "", ControlColor::None, tab1);
float diametre = 10;
std::string temp = "internal diameter : " + std::to_string(diametre);
syringe_ref = ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue 1 : ", "Reférence : ? " , ControlColor::None, tab1);
syringe_brand =ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue 1 : ", "Marque : ? " , ControlColor::None, syringe_ref);
syringe_volume_mL =ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue 1 : ", "Volume total = ? mL" , ControlColor::None, syringe_ref);
syringe_diameter_mm =ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue 1 : ", temp.c_str(), ControlColor::None, syringe_ref);
choose_syringe = ESPUI.addControl(ControlType::Button, "Choisir cette seringue", "Utiliser cette seringue", ControlColor::None, syringe_selection, choose_syringe_callback, (void*)19);
ESPUI.addControl(ControlType::Separator, "", "", ControlColor::None, tab1);
//Deplacement demandé du pousse-seringue
volume_exchange_mL = ESPUI.addControl(ControlType::Number,"Choix du volume à echanger en mL", "", ControlColor::None, tab1, volume_exchange_mL_callback, (void*)19);
label_push_pull_choice = ESPUI.addControl(ControlType::Label, "Delivrer ou recupérer", "Délivrer", ControlColor::None, volume_exchange_mL);
switch_push_pull_choice = ESPUI.addControl(ControlType::Switcher, "Delivrer ou recupérer", "Délivrer", ControlColor::None, volume_exchange_mL, switch_push_pull_choice_callback, (void*)19);
ESPUI.updateSwitcher(switch_push_pull_choice, true); //pour mettre a "Delivrer" par défaut au début
//TAB3 : Nouvelle seringue
name_new_syringe_label = ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Nom de la seringue :", ControlColor::None, tab3);
name_new_syringe = ESPUI.addControl(ControlType::Text, "Nouvelle seringue", "", ControlColor::None, name_new_syringe_label, name_new_syringe_callback);
internal_diameter_mm_new_syringe_label =ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Diamètre interne de la seringue en mm :", ControlColor::None, name_new_syringe_label);
internal_diameter_mm_new_syringe = ESPUI.addControl(ControlType::Number, "Diamètre interne de la seringue en mm", "5", ControlColor::None, name_new_syringe_label, number_callback);
total_volume_mL_new_syringe_label =ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Volume total de la seringue en µL :", ControlColor::None, name_new_syringe_label);
total_volume_mL_new_syringe = ESPUI.addControl(ControlType::Number, "Volume total de la seringue en µL", "5", ControlColor::None, name_new_syringe_label, number_callback);
add_syringe_label =ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Ajouter la seringue", ControlColor::None, name_new_syringe_label);
add_syringe = ESPUI.addControl(ControlType::Button, "Ajouter la seringue", "Valider", ControlColor::None, name_new_syringe_label, add_syringe_callback, (void*)19);
//TAB4 : Configurations avancées
//Diamètre de la vis
worm_diameter_mm = ESPUI.addControl(ControlType::Number, "Diamètre de la vis sans fin", "5", ControlColor::None, tab4, number_callback);
//Sens de rotation du moteur
Malaurie Bernard
committed
clockwise_equals_push_label = ESPUI.addControl(ControlType::Label, "Sens de rotation du moteur", "Horaire = Delivrer", ControlColor::None, tab4);
clockwise_equals_push = ESPUI.addControl(ControlType::Switcher, "Sens de rotation du moteur", "Horaire =", ControlColor::None, clockwise_equals_push_label, clockwise_equals_push_callback);
ESPUI.updateSwitcher(clockwise_equals_push, true); //pour mettre a "Horaire = Delivrer" par défaut au début
set_init_style();
ESPUI.begin("ESPUI Control");
void number_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Print the value of the number controller via the serial port.
***/
{
Serial.println(sender->value);
//SPECIFIC CALLBACKS//
//***ABOVE***//
void activation_syringe_pump_callback (Control* sender, int value, void* param)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Linking the switch of the syringe pump status and the actions.
***/
Serial.println(String("param: ") + String(long(param)));
switch (value)
{
case S_ACTIVE:
syringe_pump_on();
break;
case S_INACTIVE:
syringe_pump_off();
break;
}
Serial.print(" ");
Serial.println(sender->id);
void syringe_filled_placement_callback (Control* sender, int value, void* param)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Linking the switch of the syringe filled status(placed or not) and the actions.
***/
{
Serial.println(String("param: ") + String(long(param)));
switch (value)
syringe_filled_placement_on();
break;
case S_INACTIVE:
syringe_filled_placement_off();
Serial.print(" ");
Serial.println(sender->id);
}
void initialisation_callback (Control *sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Enable the syringe-pump initialisation and change the style appropriately.
***/
{
if((type == B_UP)) {
Serial.printf("Go to zero");
syringe_filled.go_to_zero();
Serial.print("Active:");
ESPUI.print(status_syringe_pump, "En marche");
ESPUI.updateSwitcher(activation_syringe_pump, true);
style (status_syringe_pump, 1);
style (activation_syringe_pump, 1);
}
}
void volume_exchange_mL_callback (Control* sender, int value, void* param)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Enable to choose the volume that woud be exchanged.
***/
{
Serial.printf("val=%s\n", sender->value.c_str());
syringe_filled.set_exchange_volume_mL(atof(sender->value.c_str()));
}
void switch_push_pull_choice_callback (Control* sender, int value, void* param)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Change the label_push_pull_choice to display the choice.
Change the style of the controller involved.
***/
{
Serial.println(String("param: ") + String(long(param)));
switch (value)
{
case S_ACTIVE:
ESPUI.print(label_push_pull_choice, "Délivrer");
style (volume_exchange_mL, 1);
style (label_push_pull_choice, 1);
style (switch_push_pull_choice, 1);
break;
case S_INACTIVE:
ESPUI.print(label_push_pull_choice, "Recupérer");
style (volume_exchange_mL, 2);
style (label_push_pull_choice, 2);
style (switch_push_pull_choice, 2);
break;
}
Serial.print(" ");
Serial.println(sender->id);
}
void remaining_volume_mL_callback (Control* sender, int value, void* param)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Linking the display with the current volume remaining.
***/
{
}
//TAB1 = Configurations
void choose_syringe_callback (Control* sender, int value, void* param)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Print the value of the button state via the serial port.
***/
switch (value)
{
case B_DOWN:
Serial.println("Button DOWN");
break;
case B_UP:
Serial.println("Button UP");
break;
}
}
void name_new_syringe_callback(Control* sender, int type)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Print the value of the new syringe name chosen via the serial port.
***/
{
Serial.print("Text: ID: ");
Serial.print(sender->id);
Serial.print(", Value: ");
Serial.println(sender->value);
}
void add_syringe_callback (Control* sender, int value, void* param)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Print the value of the button state via the serial port.
Enable to save data in the syringe_json file.
***/
switch (value)
{
case B_DOWN:
Serial.println("Button DOWN");
syringe.write_Json();
break;
case B_UP:
Serial.println("Button UP");
break;
}
}
//TAB4 : Configurations avancées
void clockwise_equals_push_callback(Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Print the value of the convention chosen via the serial port.
Change the clockwise_equals_push_label to display the information.
***/
{
switch (value)
{
case S_ACTIVE:
Serial.print("Clockwise equals push");
ESPUI.print(clockwise_equals_push_label, "Horaire = Delivrer");
break;
case S_INACTIVE:
Serial.print("Clockwise equals pull");
ESPUI.print(clockwise_equals_push_label, "Horaire = Récupérer");
break;
}
Serial.print(" ");
Serial.println(sender->id);
}
void syringe_selection_callback(Control* sender, int value)
/***
-Argument : Pointer to the controller calling the function, integer according to the controller type.
-Return : /
-Action : Print the value of the syringe name chosen via the serial port.
***/
{
Serial.print("Select: ID: ");
Serial.print(sender->id);
Serial.print(", Value: ");
Serial.println(sender->value);
select_value = sender->value;
}
Malaurie Bernard
committed
//ON_OFF METHODS
Malaurie Bernard
committed
void syringe_pump_on_off()
/***
-Argument : /
-Return : /
-Action : Update the display of the syringe-pump status to match when the motor runs or not (so when we initialize, it stop by itself)
***/
{
if (syringe_filled.is_running())
{
ESPUI.updateControlValue(activation_syringe_pump, "1");
}
ESPUI.updateControlValue(activation_syringe_pump, "0");
}
void syringe_pump_on()
/***
-Argument : /
-Return : /
-Action : Change the status_syringe_pump label to display the information.
Change the style of the controller involved.
Causes the movement of the syringe pump.
***/
{
ESPUI.print(status_syringe_pump, "En marche");
ESPUI.updateSwitcher(activation_syringe_pump, true);
style (status_syringe_pump, 1);
style (activation_syringe_pump, 1);
syringe_filled.move();
}
void syringe_pump_off()
/***
-Argument : /
-Return : /
-Action : Change the status_syringe_pump label to display the information.
Change the style of the controller involved.
Causes the stop of the syringe pump.
***/
{
ESPUI.print(status_syringe_pump, "A l'arrêt");
ESPUI.updateSwitcher(activation_syringe_pump, false);
style (status_syringe_pump, 2);
style (activation_syringe_pump, 2);
syringe_filled.stop();
}
void syringe_filled_placement_on()
/***
-Argument : /
-Return : /
-Action : Change the status_syringe_filled label to display the information.
Change the style of the controller involved.
Disable the initialisation.
***/
ESPUI.print(status_syringe_filled, "En place");
style (status_syringe_filled, 1);
style (syringe_filled_placement, 1);
Malaurie Bernard
committed
ESPUI.setEnabled(initialisation, false);
style (initialisation, 2);
void syringe_filled_placement_off()
/***
-Argument : /
-Return : /
-Action : Change the status_syringe_filled label to display the information.
Change the style of the controller involved.
Enable the initialisation.
***/
{
ESPUI.print(status_syringe_filled, "Enlevée");
style (status_syringe_filled, 2);
style (syringe_filled_placement, 2);
Malaurie Bernard
committed
ESPUI.setEnabled(initialisation, true);
style (initialisation, 1);
}
/*************OTHER_METHODS****************/
void style (uint16_t id, int style)
/***
-Argument : The controller id and the style wanted.
-Return : /
-Action : Change style (1 is active, green; 2 is inactive, red; 3 is neutral, brown)
***/
{
switch (style)
{
case 1:
ESPUI.setPanelStyle(id, couleurs[0]);
ESPUI.setElementStyle(id, couleurs[1]);
break;
case 2:
ESPUI.setPanelStyle(id, couleurs[2]);
ESPUI.setElementStyle(id, couleurs[3]);
break;
case 3:
ESPUI.setPanelStyle(id, couleurs[4]);
ESPUI.setElementStyle(id, couleurs[5]);
break;
}
}
void set_init_style()
/***
-Argument : /
-Return : /
-Action : Set up the initial style of every controller.
Malaurie Bernard
committed
{
//***ABOVE***//
style (status_syringe_pump, 2);
style (activation_syringe_pump, 2);
style (status_syringe_filled, 2);
style (syringe_filled_placement, 2);
style (initialisation, 2);
style (volume_exchange_mL, 3);
style (label_push_pull_choice, 3);
style (switch_push_pull_choice, 3);
style (label_remaining_volume_mL, 3);
//TAB1 = Configurations
style (syringe_ref, 3);
style (syringe_brand, 3);
style (syringe_volume_mL, 3);
style (syringe_diameter_mm, 3);
style (choose_syringe, 3);
style (name_new_syringe, 3);
style (internal_diameter_mm_new_syringe, 3);
style (total_volume_mL_new_syringe, 3);
style (add_syringe, 3);
style (name_new_syringe_label, 3);
style (internal_diameter_mm_new_syringe_label, 3);
style (total_volume_mL_new_syringe_label, 3);
style (add_syringe_label, 3);
//TAB4 : Configurations avancées
style (clockwise_equals_push_label, 3);
style (clockwise_equals_push, 3);
Malaurie Bernard
committed
}
void set_theme(int theme)
/***
-Argument : Integer defining the theme wanted.
-Return : /
-Action : Change the interface theme for dark, light of colorful theme.
***/
Malaurie Bernard
committed
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
{
if (theme ==1)
{
//Creation des différents styles
//Les verts pour la mise en mrche de la seringue
sprintf(couleur1, "background-color: #%06X;", (unsigned int) 0xb2dbbf);
sprintf(couleur2, "background-color: #%06X;", (unsigned int) 0x5a8668);
//Le rouge pour la seringue a l'arrêt
sprintf(couleur3, "background-color: #%06X;", (unsigned int) 0xc97064);
sprintf(couleur4, "background-color: #%06X;", (unsigned int) 0x762419);
//Les marrons pour la config des seringues
sprintf(couleur5, "background-color: #%06X;", (unsigned int) 0xce9f6f);
sprintf(couleur6, "background-color: #%06X;", (unsigned int) 0x926448);
//Pas utilisé pour le moment
sprintf(couleur7, "background-color: #%06X;", (unsigned int) 0x0a7477);
sprintf(couleur8, "background-color: #%06X;", (unsigned int) 0x052a38);
sprintf(couleur9, "background-color: #%06X;", (unsigned int) 0x044365);
sprintf(couleur10, "background-color: #%06X;", (unsigned int) 0x58b8c3);
}
}
void select_syringe_maj(uint16_t tab)
/***
-Argument : The page on which the info must display.
-Return : /
-Action : Read the syringe_json file so it get/recover all the syringe models registered.
***/
{
syringe_selection = ESPUI.addControl(ControlType::Select, "Choix de la seringue :", "", ControlColor::None, tab, syringe_selection_callback);
JsonObject root = syringe.get_syringe_database_object();
for (JsonPair kv : root)
{
ESPUI.addControl(ControlType::Option, kv.key().c_str(), kv.key().c_str(), ControlColor::None, syringe_selection);
}
style (syringe_selection, 3);
}
//bool switchi = syringe.isRunning();
//bool a = syringe.isRunning();
if(millis() > last_time + 500) {
//ESPUI.updateSlider(slider, syringe_filled.current_position());
last_time = millis();
//on_off();
if (syringe_filled.is_running())
syringe_pump_on();
else
syringe_pump_off();
}