Bonjour,
Tout d'abord, petite précision, je développe avec Eclipse dans une VM avec Linux.
Je viens d'utiliser un utilitaire pour transformer une dbc en un .h. Dans ce .h je me retrouve avec des structures que j'ai quelques difficultés à manipuler:
Je souhaiterai changer la valeur de ExternalTemperature dans différentes fonctions mais tous mes essais echouent. Voici une de mes fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 /** * Name: HPCM_Status_2 * Comment: <<empty>> */ static struct DBC_HPC_BB_V3_MSG_HPCM_Status_2 { const uint32_t ID; const uint8_t IDE; const uint8_t DLC; const struct { signal_positioned ExternalTemperature; } getSig; struct __attribute__((packed)) DBC_HPC_BB_V3_MSG_HPCM_Status_2_getSigVal { uint16_t ExternalTemperature : 16; } *getSigVal; } DBC_HPC_BB_V3_MSG_HPCM_Status_2 __attribute__((unused)) = { .ID = 0x18FEF500, .IDE = CAN_ID_EXT, .DLC = 8, .getSig = { .ExternalTemperature = { .position = 24, .attributes = &DBC_HPC_BB_V3_SIG_ExternalTemperature } }, .getSigVal = 0 };
Et voici le dernier essai que j'ai fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void CANDATATYPES_InitHPCMStatus2Struct (struct DBC_HPC_BB_V3_MSG_HPCM_Status_2_getSigVal* HPCMStatus2Struct) { HPCMStatus2Struct->ExternalTemperature = 5; }
Lorsque j’exécute la fonction CANDATATYPES_InitHPCMStatus2Struct, HPCMStatus2Struct->ExternalTemperature prends bien la valeur 5, mais au retour, c'est DBC_HPC_BB_V3_MSG_HPCM_Status_2.getSigVal qui a la valeur 5 et non pas DBC_HPC_BB_V3_MSG_HPCM_Status_2.getSigVal->ExternalTemperature.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CANDATATYPES_InitHPCMStatus1Struct (&DBC_HPC_BB_V3_MSG_HPCM_Status_2.getSigVal);
Je m'arrache les cheveux depuis plusieurs heures maintenant, je ne sais pas par quel bout le prendre et comment le tourner pour y arriver.
Merci d'avance pour votre aide.
Partager