IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Tramsmission de parametres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut Tramsmission de parametres
    Bonjour a tous!

    Voila, j'essaye de faire passer un tableau de parametre d'un µC a un autre.

    Dans un 1er temps, j'ai reussi a transmettre un tableau de 16 caracteres via SPI.

    Dans un 2nd temps, je souhaite transmettre 16 parametres d'un tableau, et ce de la facon suivante:

    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
     
    struct parameter_structur
    {
            volatile int min;
            volatile int value;
            volatile int max;
    };
     
    struc parameter_structur param [16]= 
    {
    {0,1,15},
    {0,1,3},
    ...
    {0,4,7},
    {0,2,8},
    }
    ensuite j'essaie de faire passer les valeur d'un µC a un autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void sendvalue (void)
    {
    int i;
    for (i=0; i < 16; i++)
     
       {
         param[i].value = DisplayData[i];
     
       }
    }
    mais quand je compile, j'obtiens pour message:
    "error: request for member 'value' in something not a structure or union"

    Est ce que vous auriez une idee d'ou provient le probleme?

    En vous remerciant d'avance!

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struc parameter_structur param [16]= ...
    struc ?

  3. #3
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct parameter_structur param [16]= 
    {
    {0,1,15},
    {0,1,3},
    ...
    {0,4,7},
    {0,2,8},
    };

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut
    Desole, je ne me suis pas relu avant de poster...


    Quoiqu'il en soit, le message d'erreur persiste et je ne comprends ce qu'il sous-entend.

    Pensez vous que le probleme est dans cette Boucle?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void sendvalue(void)
    {
    int i;
    for (i=0; i < 16; i++)
     
       {
         param[i].alpha=DisplayData[i];
     
       }
    }

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    param[i].alpha=DisplayData[i];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    param[i].value = DisplayData[i];
    ?

  6. #6
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut

    Je vais y arriver!

    Le code c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    param[i].value = DisplayData[i];
    Le "DisplayData[i]" est là, juste pour verifier sur un LCD si les Valeurs " param[i].value" ont bien etaient transmis.

    NB: DisplayData[i] & param[i].value sont en gras car la mise en forme Italique est gene par le [i]. Ce pour que vous n'interpretiez pas cela comme une exclamation...

  7. #7
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le compilateur dit que param[i] dans sendvalue() n'est pas une structure ou une union. Donc que param n'est pas un tableau de structure ou d'union.

    Pourquoi ? tout dépend comment ton code complet est écrit, parce que si on groupe les portions de code que tu donnes (après les diverses corrections) , param est parfaitement reconnu.

    Est-ce le seul message d'erreur (ou au moins le premier) ? y a t-il des warnings ? le message d'erreur correspond t-il bien à cette ligne de sendvalue() ? param n'est-il pas redéfini quelque part ?

  8. #8
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut
    Je finis par resoudre mon Probleme de la facon suivante:

    1. j'ai retire ma Structure de mon param.c, et je l'ai mise dans une En-tete param.h
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
       
      #ifndef PARAMETER_H
      #define PARAMETER_H
       
      struct parameter_structur
      {
              volatile int min;
              volatile int value;
              volatile int max;
      };
       
      #endif
    2. ensuite j'ai defini mon Tableau et mes differents Parametres dans param.c
      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
       
       
      #include <p30fxxxx.h>
      #include "param.h"
       
      unsigned int DisplayData[16];
       
      struct parameter_structur param[]=
      {
      {0,1,15},
      {0,1,3},
      ...
      {0,4,7},
      {0,2,8},
      };
    3. Et pour finir, j'ai redefini mes differents Parametres et mon Tableau dans mon dans mon fichier sendviaspi.c

      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
       
      extern struct parameter_structur param[];
      unsigned extern int DisplayData[];
       
      ...
      void sendvalue (void)
      {
      int i;
      for (i=0; i < 16; i++)
       
         {
           param[i].value = DisplayData[i];
       
         }
      }


    Et voila, CQFD!

    Pourquoi j'ai du definir ma Structure dans une En-tete je sais pas?
    Si qqn a la Reponse, je le remercie d'avance.

  9. #9
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut
    Citation Envoyé par diogene Voir le message
    Le compilateur dit que param[i] dans sendvalue() n'est pas une structure ou une union. Donc que param n'est pas un tableau de structure ou d'union.

    Pourquoi ? tout dépend comment ton code complet est écrit, parce que si on groupe les portions de code que tu donnes (après les diverses corrections) , param est parfaitement reconnu.

    Est-ce le seul message d'erreur (ou au moins le premier) ? y a t-il des warnings ? le message d'erreur correspond t-il bien à cette ligne de sendvalue() ? param n'est-il pas redéfini quelque part ?
    1. Est-ce le seul message d'erreur (ou au moins le premier) ?
      Non, c'etait bien le seul message d'erreur

    2. y a t-il des warnings ?
      Aucun Warning n'est apparu pendant la compilation

    3. le message d'erreur correspond t-il bien à cette ligne de sendvalue() ?
      Oui, c'est pourquoi j'ai change de nom de variable (une fois "value", une fois "alpha") pour pouvoir identifier le probleme

    4. param n'est-il pas redéfini quelque part ?
      Apparament, je me suis (ou le compilateur) emmele les pinceaux, car j'ai "defini" ma structure en tant qu'extern struct parameter_structur param[]; dans sendviaspi.c
      par contre lui ne faisiat pas le lien ac ma struct param[] de param.c, t'en penses quoi?


    En tout cas, Merci pour ton aide!

  10. #10
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Je suppose que tu as inclus param.h dans sendviaspi.c pour qu'il obtienne le type de parameter_structur.

    Si param n'est pas défini en extern dans sendviaspi.c (ou dans un fichier inclus par sendviaspi.c) , il n'y a aucune chance qu'il trouve la définition de param. Dans ce cas, le message d'erreur était peu clair et ne montrait pas qu'il n'avait pas de déclaration pour param.

  11. #11
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut
    En effet j'ai inclus param.h dans sendviaspi.c pour qu'il obtienne le type de parameter_structur.

    Mais tout au debut, param etait deja defini en tant extern struct param dans sendviaspi.c.

    En tout cas le compilateur de Microchip est un pseudo freeware, car le compilateur C pour µControlleur est sous licence. Donc il marche plus ou moins bien.

    Ma foi, merci pour ton aide en tout cas!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-W] [AUTOMATION]Liste Fonctions/Paramètres
    Par Sunny dans le forum VBA Word
    Réponses: 2
    Dernier message: 05/12/2002, 16h35
  2. [VB6] Transférer ".picture" en paramètre
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/11/2002, 08h43
  3. [VB6] [ADO] Procedure stockée : spécifier les paramètres
    Par adepdoom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 10h45
  4. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59
  5. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo