début du code de réception des données côté device

This commit is contained in:
Samuel 2025-09-13 21:25:52 +02:00
parent 148d53fa86
commit 0b492e91af
3 changed files with 91 additions and 26 deletions

View File

@ -1,5 +1,7 @@
{ {
"files.associations": { "files.associations": {
"stdio_usb.h": "c" "stdio_usb.h": "c",
"error.h": "c",
"messagerie.h": "c"
} }
} }

View File

@ -11,7 +11,9 @@ set(PICO_EXAMPLES_PATH ${PROJECT_SOURCE_DIR})
pico_sdk_init() pico_sdk_init()
add_executable(Modele_RPiPico add_executable(Modele_RPiPico
communication.c
main.c main.c
messagerie.c
) )
target_link_libraries(Modele_RPiPico target_link_libraries(Modele_RPiPico

111
main.c
View File

@ -5,13 +5,18 @@
*/ */
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include "communication.h"
#include "messagerie.h"
void stdio_usb_out_chars(const char *buf, int length); void stdio_usb_out_chars(const char *buf, int length);
#define NB_MORCEAUX 100 #define NB_MORCEAUX 100
absolute_time_t envoie_nb_char(int nb_char); absolute_time_t envoie_nb_char(int nb_char);
char message[10000]; char chaine_envoie[10000];
void envoie_donnees(char * donnees, u_int16_t length){ void envoie_donnees(char * donnees, u_int16_t length){
for (int i=0; i<length; i++){ for (int i=0; i<length; i++){
@ -19,12 +24,47 @@ void envoie_donnees(char * donnees, u_int16_t length){
} }
} }
void envoie_structure(const void * donnees, size_t size){
const unsigned char *byte;
for ( byte = donnees; size--; ++byte )
{
printf("%02X ", *byte);
}
putchar('\n');
}
void main(void) void main(void)
{ {
absolute_time_t measured_time_us; absolute_time_t measured_time_us;
absolute_time_t temps_moyen, temps_max, temps_m[NB_MORCEAUX]; absolute_time_t temps_moyen, temps_max, temps_m[NB_MORCEAUX];
absolute_time_t current_time_us, start_time_us; absolute_time_t current_time_us, start_time_us;
absolute_time_t temps_message_detection;
struct message_t message;
struct message_requete_t message_requete_detection;
unsigned char message_binaire[100];
unsigned char message_requete_detection[10];
message_requete_detection.type = 'r';
message_requete_detection.id_carte = 'D';
message_requete_detection.adresse_registre = 0;
message_requete_detection.taille_donnees = 19;
message_requete_detection.fin_de_message = 0;
message_binaire[0]='r';
message_binaire[1]='A';
message_binaire[2]= 0;
message_binaire[3]= 5;
message_binaire[4]= 'a';
message_binaire[5]= 'b';
message_binaire[6]= 'c';
message_binaire[7]= 'd';
message_binaire[8]= 'e';
message_binaire[9]= 0;
for(int i=0; i<10000; i++){ for(int i=0; i<10000; i++){
@ -32,30 +72,51 @@ void main(void)
if(j>25){ if(j>25){
j=0; j=0;
} }
message[i]= j + 'a';*/ chaine_envoie[i]= j + 'a';*/
message[i]= i%26 + 'a'; chaine_envoie[i]= i%26 + 'a';
} }
int nb_ech = 10; int nb_ech = 10;
int taille_morceau = 60; int taille_morceau = 60;
stdio_init_all(); stdio_init_all();
while(1){ gpio_init(PICO_DEFAULT_LED_PIN);
temps_moyen = 0; gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
temps_max = 0; gpio_put(PICO_DEFAULT_LED_PIN, 0);
for(int i = 1; i < NB_MORCEAUX; i++){
temps_moyen = 0;
temps_max = 0;
start_time_us = get_absolute_time();
temps_m[i] = envoie_nb_char(taille_morceau);
//temps_m[i] = i;
current_time_us = get_absolute_time();
sleep_ms(1);
}
for(int i = 1; i < NB_MORCEAUX; i++){
printf(">temps:%d:%lld#us\n", i, temps_m[i]);
}
printf(">temps_d:%lld\n", current_time_us - start_time_us);
temps_message_detection = get_absolute_time();
while(1){
if(get_absolute_time() - temps_message_detection > MESSAGE_TIMEOUT_US){
envoie_structure(&message_requete_detection, sizeof(message_requete_detection) );
temps_message_detection = get_absolute_time();
}
start_time_us = get_absolute_time();
envoie_donnees(message_binaire, 10);
current_time_us = get_absolute_time();
printf(">temps:%lld\n", current_time_us - start_time_us);
start_time_us = get_absolute_time();
communication_reception_message();
while(messagerie_message_disponible()){
message = messagerie_get_message();
if(message.type == 'r'){
if(message.id_carte == 'D'){
if(message.donnees[1] > 0 && message.donnees[1] < 30){
gpio_put(PICO_DEFAULT_LED_PIN, 1);
}else{
gpio_put(PICO_DEFAULT_LED_PIN, 0);
}
}
}
}
current_time_us = get_absolute_time();
putchar('\n');
printf(">temps:%lld\n", current_time_us - start_time_us);
sleep_ms(50); sleep_ms(50);
} }
} }
@ -66,14 +127,14 @@ absolute_time_t envoie_nb_char(int nb_char) {
if (nb_char == 0){ if (nb_char == 0){
return 0; return 0;
} }
message[nb_char - 1] = '\n'; chaine_envoie[nb_char - 1] = '\n';
message[nb_char] = '\0'; chaine_envoie[nb_char] = '\0';
start_time_us = get_absolute_time(); start_time_us = get_absolute_time();
printf("%s", message); printf("%s", chaine_envoie);
envoie_donnees(message, strlen(message)); envoie_donnees(chaine_envoie, strlen(chaine_envoie));
current_time_us = get_absolute_time(); current_time_us = get_absolute_time();
message[nb_char - 1] = 'a'; chaine_envoie[nb_char - 1] = 'a';
message[nb_char] = 'a'; chaine_envoie[nb_char] = 'a';
return current_time_us - start_time_us; return current_time_us - start_time_us;
} }