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 = ESPUI.label("Volume restant en mL", ControlColor::None, "Volume restant en mL");
ESPUI.addControl(ControlType::Slider, "Distance", "0", ControlColor::None, label_remaining_volume, remaining_volume_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 =ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue 1 : ", "Volume total = ? mL" , ControlColor::None, syringe_ref);
syringe_diameter =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 = ESPUI.addControl(ControlType::Number,"Choix du volume à echanger en mL", "", ControlColor::None, tab1, volume_exchange_callback, (void*)19);
label_push_pull_choice = ESPUI.addControl(ControlType::Label, "Delivrer ou recupérer", "Délivrer", ControlColor::None, volume_exchange);
switch_push_pull_choice = ESPUI.addControl(ControlType::Switcher, "Delivrer ou recupérer", "Délivrer", ControlColor::None, volume_exchange, 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_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_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_new_syringe_label =ESPUI.addControl(ControlType::Label, "Nouvelle seringue", "Volume total de la seringue en µL :", ControlColor::None, name_new_syringe_label);
total_volume_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
Malaurie Bernard
committed
worm_diameter = 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_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 (label_push_pull_choice, 1);
style (switch_push_pull_choice, 1);
break;
case S_INACTIVE:
ESPUI.print(label_push_pull_choice, "Recupérer");
style (label_push_pull_choice, 2);
style (switch_push_pull_choice, 2);
break;
}
Serial.print(" ");
Serial.println(sender->id);
}
void remaining_volume_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);
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
style (label_push_pull_choice, 3);
style (switch_push_pull_choice, 3);
style (label_remaining_volume, 3);
//TAB1 = Configurations
style (syringe_ref, 3);
style (syringe_brand, 3);
style (syringe_volume, 3);
style (syringe_diameter, 3);
style (choose_syringe, 3);
style (name_new_syringe, 3);
style (internal_diameter_new_syringe, 3);
style (total_volume_new_syringe, 3);
style (add_syringe, 3);
style (name_new_syringe_label, 3);
style (internal_diameter_new_syringe_label, 3);
style (total_volume_new_syringe_label, 3);
style (add_syringe_label, 3);
//TAB4 : Configurations avancées
style (worm_diameter, 3);
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
517
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
{
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();
}