From 1b5171290b92b6f165cc4dc9fb28bab325a91ca1 Mon Sep 17 00:00:00 2001 From: Samuel Date: Sun, 28 Jul 2024 21:45:17 +0200 Subject: [PATCH] =?UTF-8?q?Grouper=20les=20informations=20d'un=20pas=20de?= =?UTF-8?q?=20temps=20=C3=A0=20la=20m=C3=AAme=20milliseconde=20pour=20simp?= =?UTF-8?q?lifier=20l'analyse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- .vscode/settings.json | 4 +++- Teleplot.c | 38 ++++++++++++++++++++++++++++++++++---- Teleplot.h | 4 ++++ main.c | 32 ++++++++++++++++++++++++++++---- 5 files changed, 71 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index d163863..e4d478c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -build/ \ No newline at end of file +build/ +wifi_settings.h \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index e3b121c..74edc45 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,8 @@ "trajet.h": "c", "trajectoire.h": "c", "compare": "c", - "asser_position.h": "c" + "asser_position.h": "c", + "cyw43_arch.h": "c", + "teleplot.h": "c" } } \ No newline at end of file diff --git a/Teleplot.c b/Teleplot.c index 0d214ad..b27c154 100644 --- a/Teleplot.c +++ b/Teleplot.c @@ -11,6 +11,9 @@ char teleplot_tampon[BEACON_MSG_LEN_MAX]=""; struct udp_pcb* pcb; ip_addr_t addr; +long teleplote_temps_ms; +bool teleplot_temps_fige; + int Teleplot_init(void){ if (cyw43_arch_init()) { printf("failed to initialise\n"); @@ -26,9 +29,10 @@ int Teleplot_init(void){ } else { printf("Connected.\n"); } - + pcb = udp_new(); ipaddr_aton(BEACON_TARGET, &addr); + teleplot_temps_fige = false; return 0; } @@ -66,13 +70,39 @@ void teleplot_udp_send_string(char * message){ #endif } +/// @brief Renvoi le temps en milliseconde, le temps réel ou le temps figé +/// @param +/// @return temps en millisecondes +long Teleplot_get_temps(void){ + if(teleplot_temps_fige){ + return teleplote_temps_ms; + } + return (long) (time_us_64()/1000); +} + +/// @brief Permet de "bloquer le temps" pour recevoir toutes les données datées à la même milliseconde +/// Simplifie beaucoup le traitement des données en CSV lors d'un import dans un tableur. +void Teleplot_fige_temps(void){ + teleplot_temps_fige = false; + teleplote_temps_ms = Teleplot_get_temps(); + teleplot_temps_fige = true; +} +void Teleplot_relache_temps(void){ + teleplot_temps_fige = false; +} + + +void Teleplot_envoie_tampon(void){ + teleplot_udp_send_string(teleplot_tampon); + teleplot_tampon[0]='\0'; // On "vide" le tampon +} + void Teleplot_ajout_ou_envoie_tampon(char * message){ // Si le tampon ne peut pas accueillir le prochain message // On envoie et on vide le tampon if(strlen(message) + strlen(teleplot_tampon) > BEACON_MSG_LEN_MAX){ - teleplot_udp_send_string(teleplot_tampon); - teleplot_tampon[0]='\0'; // On "vide" le tampon + Teleplot_envoie_tampon(); } // On ajoute le message au tampon strcat(teleplot_tampon, message); @@ -81,7 +111,7 @@ void Teleplot_ajout_ou_envoie_tampon(char * message){ void Teleplot_add_variable_float_2decimal(char * nom_variable, float valeur){ char tampon[100]; - sprintf(tampon, "%s:%lu:%.2f\n", nom_variable, (long)time_us_64()/1000, valeur); + sprintf(tampon, "%s:%lu:%.2f\n", nom_variable, Teleplot_get_temps(), valeur); Teleplot_ajout_ou_envoie_tampon(tampon); } diff --git a/Teleplot.h b/Teleplot.h index 5348d93..9f7caa7 100644 --- a/Teleplot.h +++ b/Teleplot.h @@ -1,5 +1,9 @@ int Teleplot_init(void); void teleplot_udp_send_string(char * message); +void Teleplot_envoie_tampon(void); void Teleplot_add_variable_float_2decimal(char * nom_variable, float valeur); void Teleplot_add_variable_int(char * nom_variable, int valeur); +void Teleplot_fige_temps(void); +void Teleplot_relache_temps(void); + diff --git a/main.c b/main.c index 409b198..dc47c92 100644 --- a/main.c +++ b/main.c @@ -31,6 +31,7 @@ #define COULEUR_JAUNE 0 void affichage(void); +void affichage_udp(void); void gestion_affichage(void); void tension_batterie_init(void); uint16_t tension_batterie_lire(void); @@ -86,7 +87,6 @@ void main(void) //multicore_launch_core1(gestion_affichage); multicore_launch_core1(gestion_VL53L8CX); - sleep_ms(5000); printf("Demarrage...\n"); @@ -155,7 +155,7 @@ void gestion_VL53L8CX(void){ VL53L8_min_distance(Results, &distance_obstacle); Trajet_set_obstacle_mm(distance_obstacle); } - affichage(); + affichage_udp(); } } @@ -168,15 +168,39 @@ void gestion_affichage(void){ } } +void affichage_udp(void){ + struct position_t position_actuelle; + position_actuelle = Localisation_get(); + Teleplot_fige_temps(); + Teleplot_add_variable_float_2decimal("dist", Trajet_get_obstacle_mm()); + Teleplot_add_variable_float_2decimal("abs", abscisse); + Teleplot_add_variable_float_2decimal("pos_x", position_actuelle.x_mm); + Teleplot_add_variable_float_2decimal("pos_y", position_actuelle.y_mm); + Teleplot_add_variable_float_2decimal("pos_angle", position_actuelle.angle_radian); + + Teleplot_add_variable_float_2decimal("con_x", point.point_xy.x); + Teleplot_add_variable_float_2decimal("con_y", point.point_xy.y); + Teleplot_add_variable_float_2decimal("con_angle", point.orientation); + + Teleplot_add_variable_float_2decimal("m1", AsserMoteur_getVitesse_mm_s(MOTEUR_A, step_ms)); + Teleplot_add_variable_float_2decimal("m2", AsserMoteur_getVitesse_mm_s(MOTEUR_B, step_ms)); + + Teleplot_add_variable_float_2decimal("m1_c", AsserMoteur_getConsigne_mm_s(MOTEUR_A)); + Teleplot_add_variable_float_2decimal("m2_c", AsserMoteur_getConsigne_mm_s(MOTEUR_B)); + + + Teleplot_envoie_tampon(); +} + void affichage(void){ /*printf(">m1:%f\n>m2:%f\n", AsserMoteur_getVitesse_mm_s(MOTEUR_A, step_ms), AsserMoteur_getVitesse_mm_s(MOTEUR_B, step_ms) ); printf(">m1_c:%f\n>m2_c:%f\n", AsserMoteur_getConsigne_mm_s(MOTEUR_A), AsserMoteur_getConsigne_mm_s(MOTEUR_B) );*/ printf(">pos_x:%.1f\n>pos_y:%.1f\n>pos_angle:%.1f\n", Localisation_get().x_mm, Localisation_get().y_mm, Localisation_get().angle_radian); printf(">distance_obstacle:%f\n",Trajet_get_obstacle_mm()); - Teleplot_add_variable_float_2decimal("dist", Trajet_get_obstacle_mm()); + printf(">abscisse:%f\n",abscisse); - Teleplot_add_variable_float_2decimal("abs", abscisse); + struct position_t position_actuelle; position_actuelle = Localisation_get();