Bonsoir,
je patauge depuis hier avec ce code qui est destinné à tourner sur un microcontrolleur. Et je ne suis pas sûr si cela est une erreur de codification (fortement probable compte tenu des difficultés que j'ai avec les pointeurs et les tableaux
) ou un problème d'environnement de développement (MPLAB IDE de microchip). Voici le code en question :
Code :
- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- using namespace std;
- typedef struct {
- char *Rx_buffer; // RX buffer
- } RS_232;
- RS_232 Polarimetre;
- char UART5_Buffer_Rx[32];
- unsigned char MesurerRotation(char * cBuffer) {
- char tem[15] = "je suis labas";
- char *jj;
- char i;
- Polarimetre.Rx_buffer = &UART5_Buffer_Rx[0];
- jj = &UART5_Buffer_Rx[0];;
- for (i = 0; i < 15; i++)
- UART5_Buffer_Rx[i] = tem[i];
- cBuffer = Polarimetre.Rx_buffer;
- cBuffer = &UART5_Buffer_Rx[0];
- cBuffer = jj;
- return 1;
- }
- int
- main(void) {
- char Reponse[20] = {0};
- char *Rep2;
- unsigned char I;
- I = MesurerRotation(&Reponse[0]);
- I = MesurerRotation(Rep2);
- return 0;
- }
|
Exécuté avec code blocks, je n'ai pas de problème jusqu'à la fin de la fonction MesurerRotation(&Reponse[0]); où la variable cBuffer pointe bien vers UART5_Buffer_Rx[0].
Mais lors du retour dans le main(), la valeur du pointeur est perdue. Et ceci de la même façon pour le deuxième appelle (ce qui est assez logique).
mais je ne comprends pas ce qui cloche... c'est probablement ce qui explique le comportement de la fonction MesurerRotation lorsque je l’exécute avec MPLAB : cBuffer ne change pas de valeur lors de l’exécution des lignes
- cBuffer = Polarimetre.Rx_buffer;
- cBuffer = &UART5_Buffer_Rx[0];
- cBuffer = jj;
Bref, je deviens vert, rouge....
Toute aide sera plus que la bien venue !
Jean-Marie