Copie du message dans une structure semble fonctionnel - simplifié
This commit is contained in:
parent
3439300b0d
commit
c558152993
@ -3,6 +3,8 @@ Projet modèle pour le Rpi Pico (RP2040)
|
||||
|
||||
Code pour travailler sur la communication USB, côté device.
|
||||
|
||||
Nous commençons à stocker les données reçues dans des structures pour simplifier l'interprétation des données.
|
||||
|
||||
Méthode de test
|
||||
---------------
|
||||
* Ouvrir un terminal pour lire les données reçues en désactivant l'écho
|
||||
@ -26,4 +28,3 @@ Difficultés rencontrées
|
||||
-----------------------
|
||||
|
||||
En testant avec Linux, le terminal peut manger certains caractères lorsqu'il les reçoit (0x11, 0x12 et 0x13).
|
||||
Le type message_t contient trop de champs, il faut supprimer les champs inutiles en s'assurant qu'il n'y a pas d'utilisation de ces champs.
|
||||
@ -2,7 +2,6 @@
|
||||
#include <stdio.h>
|
||||
#include "communication.h"
|
||||
#include "messagerie.h"
|
||||
#include "tusb.h"
|
||||
|
||||
#define TAMPON_TAILLE 1020
|
||||
|
||||
|
||||
23
main.c
23
main.c
@ -92,15 +92,10 @@ void main(void)
|
||||
int nb_ech = 10;
|
||||
int taille_morceau = 60;
|
||||
int nb_message=0;
|
||||
float f;
|
||||
|
||||
stdio_init_all();
|
||||
sleep_ms(5000);
|
||||
|
||||
printf(">Device 1 - demarrage\n");
|
||||
printf("struct float:%d\n", sizeof(f));
|
||||
printf("struct message applicatif:%d\n", sizeof(message_applicatif));
|
||||
|
||||
|
||||
gpio_init(PICO_DEFAULT_LED_PIN);
|
||||
gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
|
||||
gpio_put(PICO_DEFAULT_LED_PIN, 0);
|
||||
@ -140,27 +135,13 @@ void main(void)
|
||||
// données[2]: 1er registre
|
||||
// données[3 à tailles_données -1]: valeurs
|
||||
|
||||
printf("type:%d %c\n", message.type, message.type);
|
||||
printf("id_carte:%d %c\n", message.id_carte, message.id_carte);
|
||||
for(int i=0; i< 4;i++){
|
||||
printf("%x ", message.donnees[i]);
|
||||
}
|
||||
printf("\n");
|
||||
memcpy(&message_applicatif, message.donnees, message.taille_donnees);
|
||||
|
||||
printf("id_carte:%d %c\n", message_applicatif.id_carte, message_applicatif.id_carte);
|
||||
printf("commande:%d %c\n", message_applicatif.commande, message_applicatif.commande);
|
||||
printf("add_reg:%d\n", message_applicatif.adresse_registre);
|
||||
printf("taille_donnee:%d\n", message_applicatif.taille_donnees);
|
||||
|
||||
if(message_applicatif.id_carte == USB_ID_PROPULSION){
|
||||
printf("registre:%d\n", message_applicatif.adresse_registre);
|
||||
if(message_applicatif.adresse_registre == REG_PROPULSION_POSITION){
|
||||
if(message_applicatif.id_carte == USB_ID_PROPULSION && message_applicatif.adresse_registre == REG_PROPULSION_POSITION){
|
||||
printf("x:%x, y:%x, rot:%x\n", message_applicatif.donnees_applicative.msg_propulsion_position.position_x_mm,
|
||||
message_applicatif.donnees_applicative.msg_propulsion_position.position_y_mm,
|
||||
message_applicatif.donnees_applicative.msg_propulsion_position.orientation_rad);
|
||||
}
|
||||
}
|
||||
|
||||
id_carte = message.donnees[1];
|
||||
registre = message.donnees[2];
|
||||
|
||||
11
messagerie.h
11
messagerie.h
@ -3,14 +3,10 @@
|
||||
|
||||
#define MESSAGE_TIMEOUT_US 2000
|
||||
|
||||
// Attention l'ordre de déclaration est important !! On fait de la copie de donnée en faisant confiance à cet ordre !
|
||||
struct message_t{
|
||||
uint8_t type; // 'd' pour demande, 'r' pour une réception de données, 'w' pour écrire des données, '>' pour des logs
|
||||
uint8_t id_carte; // Identifiant de la carte (on reprend les adresses I2C)
|
||||
uint8_t adresse_registre; // Adresse du registre lu
|
||||
uint8_t type; // 'b' pour binaire, '>' pour des logs
|
||||
uint8_t taille_donnees;
|
||||
uint8_t donnees[255];
|
||||
|
||||
};
|
||||
|
||||
struct message_requete_t{
|
||||
@ -21,9 +17,9 @@ struct message_requete_t{
|
||||
};
|
||||
|
||||
struct message_applicatif_t{
|
||||
uint8_t commande;
|
||||
uint8_t commande; // 'r' : réception de données, 'd' : demande de données
|
||||
uint8_t id_carte; // Identifiant de la carte (on reprend les adresses I2C)
|
||||
uint8_t adresse_registre; // Adresse du registre lu
|
||||
uint8_t adresse_registre; // Adresse du registre lu ou écrit
|
||||
uint8_t taille_donnees;
|
||||
union{
|
||||
#ifdef MESSAGE_PROPULSION_H
|
||||
@ -34,7 +30,6 @@ struct message_applicatif_t{
|
||||
|
||||
};
|
||||
|
||||
|
||||
bool messagerie_message_disponible();
|
||||
struct message_t messagerie_get_message();
|
||||
void messagerie_put_message(struct message_t message);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user