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 :

Langage c programmation


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 3
    Par défaut Langage c programmation
    Bonjour,

    J'ouvre cette discussion car j'ai un problème sur la partie software d'un poste de lecture à corde vibrante CCV qui a priori n'arrive pas à lire dans un certain mode qui s'appelle mode entretenu dont j'envoie la documentation se rapportant à ce mode.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Bonsoir

    Vous postez un fichier .h qui ne contient pas de code mais des appels de fonctions.
    Au niveau débug, est-ce que vous avez un minimum investigué ? Si oui poster le code de la fonction (et non pas tout un fichier).

    Pour la forme le titre du post
    Langage c programmation
    sur un forum de programmation en langage C.... cela ne va pas aider à retrouver le post dans un an.

    Cordialement

  3. #3
    Membre très actif

    Homme Profil pro
    Apprenti Langage C, pratiquant OpenOffice et Poo
    Inscrit en
    Février 2015
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Apprenti Langage C, pratiquant OpenOffice et Poo
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 229
    Par défaut
    Bonsoir,

    Selon cette description http://https://c.developpez.com/cours/bernard-cassagne/node116.php :

    Définition de type structure

    Lorsqu'on donne un nom à un type structure par typedef, l'utilisation est beaucoup plus aisée. En effet, si on déclare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct personne
       {
       ...
       }
    les déclarations de variables se feront par :

    alors que si on déclare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct
       {
       ...
       } PERSONNE;
    les déclarations de variables se feront par :

    on voit que la seconde méthode permet d'éviter d'avoir à répéter struct.

    De la même manière, en ce qui concerne les pointeurs, il est plus difficile d'écrire et de comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct personne
       {
       ...
       };
    struct personne *p1,*p2;       /*   p1 et p2 pointeurs vers des struct   */
    que la version suivante qui donne un nom parlant au type pointeur vers struct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct
       {
       ...
       } PERSONNE;
     
    typedef PERSONNE *P_PERSONNE;   /*   P_PERSONNE type pointeur vers struct */
     
    P_PERSONNE p1,p2;               /*   p1 et p2 pointeurs vers des struct   */
    la définition de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Compute the gain target to reach the voltage order
    int lccv_GainController( ST_GAIN_CONTROL* aGainData );
    ne me semble pas correcte ou il manque le type dans la parenthèse. A confirmer.

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 773
    Par défaut
    Hello,

    D'abord, ce n'est pas une définition, c'est une déclaration.

    Ensuite, c'est correct: il s'agit d'une fonction qui s'appelle lccv_GainController, qui renvoie un int et qui reçoit en paramètre un pointeur sur une donnée de type ST_GAIN_CONTROL . Le type ST_GAIN_CONTROL est surement défini dans un .h de la bibliothèque utilisée.

    Enfin, je ne suis pas d'accord avec le cours que tu cites: on ne cache jamais un pointeur derrière un typedef. C'est une source d'emm....

  5. #5
    Membre très actif

    Homme Profil pro
    Apprenti Langage C, pratiquant OpenOffice et Poo
    Inscrit en
    Février 2015
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Apprenti Langage C, pratiquant OpenOffice et Poo
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 229
    Par défaut
    Bonsoir,

    Je ne te contredirai pas, je n'ai pas l'expérience nécessaire, mais :

    1/ ST_GAIN_CONTROL est défini dans la même bibliothèque, au-dessus il me semble, et ne comporte pas de variable "aGainData" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Gain control data structure
    typedef struct {
     
        float previousDeviation;
        float currentDeviation;
        float targetGain;
        float previousTargetGain;
        float amplitude;
        float frequency;
        float deviation[MODE4_PHASE2_DEV_SAVINGS];
        int mostRecentDeviationIdx;
        float maxGain;
    } ST_GAIN_CONTROL;
    2/ s'il s'agit d'un pointeur, pourquoi l'étoile * n'est pas sur aGainData comme ceci ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int lccv_GainController( ST_GAIN_CONTROL *aGainData);
    Sinon, peux-tu développer l'emm. ? Je ne connais pas cette commande.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 3
    Par défaut Aide programmation poste de lecture
    Bonjour,

    Je suis actuellement en stage et je dois m'occuper de la programmation d'un poste de lecture qui a priori fonctionne très bien, également au niveau du build et de la compilation, le souci 1 est que je ne peux pas tout envoyer (le site bug), 2 gérer le problème pourrait s'avérer compliqué, 3 il fut bien comprendre avant de coder. J'ai envoyé en pj 2 rapports de ma discussion avec le directeur de thèse et l'ingénieur qui a travaillé dessus (nicolas monge). Il y a bien entendu bien d'autres programmes associés à ce poste de lecture et de la documentation en plus.
    À noter qu’en mode entretenu, la fréquence de lecture est anormale, elle ne correspond pas avec celles du mode amorti, le mode entretenu étant plus important car:

    ●Mode Amorti : simplicité théorique de la mesure : la fréquence est celle directement liée à l’oscillation de la corde mais c’est un phénomène d’amplitude décroissante.
    ●Mode Entretenu : la fréquence d’oscillation n’est pas la fréquence propre de la corde ; la mesure fait intervenir la fonction de transfert de l’ampli opérationnel
    ( système en boucle fermée : compteur, conditionneur d’entretien, capteur équipé de deux électroaimants)
    Fichiers attachés Fichiers attachés

  7. #7
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 773
    Par défaut
    source d'emm...., c'est "source d'emmerdement"

    aGaindata n'a pas besoin d'être un membre de la structure, c'est le nom d'un pointeur sur une donnée de type ST_GAIN_CONTROL

    Quand à la position de l'étoile, elle importe peu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ST_GAIN_CONTROL *stgc;
    ST_GAIN_CONTROL* stgc;
    ST_GAIN_CONTROL*                                      stgc;
    ST_GAIN_CONTROL         *                 stgc;
    ST_GAIN_CONTROL                    *stgc;
    tout ça c'est kif kif bourricot tam tam.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 3
    Par défaut Réponse
    Citation Envoyé par louxor13 Voir le message
    Bonjour,

    J'ouvre cette discussion car j'ai un problème sur la partie software d'un poste de lecture à corde vibrante CCV qui a priori n'arrive pas à lire dans un certain mode qui s'appelle mode entretenu dont j'envoie la documentation se rapportant à ce mode.
    Citation Envoyé par Bayard Voir le message
    Bonsoir

    Vous postez un fichier .h qui ne contient pas de code mais des appels de fonctions.
    Au niveau débug, est-ce que vous avez un minimum investigué ? Si oui poster le code de la fonction (et non pas tout un fichier).

    Pour la forme le titre du post sur un forum de programmation en langage C.... cela ne va pas aider à retrouver le post dans un an.

    Cordialement
    Malheuresement je n'ai pas pu tout envoyer,car le site bug il faudrait corriger ce problème, ensuite voici la différence entre les deux modes :
    ●Mode Amorti : simplicité théorique de la mesure : la fréquence est celle directement liée à l’oscillation de la corde mais c’est un phénomène d’amplitude décroissante.
    ●Mode Entretenu : la fréquence d’oscillation n’est pas la fréquence propre de la corde ; la mesure fait intervenir la fonction de transfert de l’ampli opérationnel
    ( système en boucle fermée : compteur, conditionneur d’entretien, capteur équipé de deux électroaimants)

    Le programme marche très bien en compilation, ce n'est pas une erreur mais une modification du programme qu'il faudrait faire.
    En mode entretenu la lecture de la fréquence de résonnance est loin d'être bonne

    Cordialement
    Fichiers attachés Fichiers attachés

  9. #9
    Membre très actif

    Homme Profil pro
    Apprenti Langage C, pratiquant OpenOffice et Poo
    Inscrit en
    Février 2015
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Apprenti Langage C, pratiquant OpenOffice et Poo
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 229
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    source d'emm...., c'est "source d'emmerdement"

    aGaindata n'a pas besoin d'être un membre de la structure, c'est le nom d'un pointeur sur une donnée de type ST_GAIN_CONTROL

    Quand à la position de l'étoile, elle importe peu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ST_GAIN_CONTROL *stgc;
    ST_GAIN_CONTROL* stgc;
    ST_GAIN_CONTROL*                                      stgc;
    ST_GAIN_CONTROL         *                 stgc;
    ST_GAIN_CONTROL                    *stgc;
    tout ça c'est kif kif bourricot tam tam.
    C'était de l'humour, j'éviterai à l'avenir. Merci pour l'info sur le pointeur.

    L'explication la plus simple que j'ai trouvé sur le type, ici alias de type :
    Les alias de type peuvent être utilisés pour réduire la longueur des noms de types longs ou déroutants, mais ils sont les plus utiles comme outils pour extraire des programmes des types sous-jacents qu’ils utilisent. Par exemple, en utilisant un alias d’int pour se référer à un type particulier de paramètre au lieu d’utiliser int directement, il permet de remplacer facilement le type par long (ou un autre type) dans une version ultérieure, sans avoir à changer chaque instance où il est utilisé.

Discussions similaires

  1. [Questions]Le langage de programmation Binaire existe t-il ?
    Par Nasky dans le forum Langages de programmation
    Réponses: 30
    Dernier message: 16/11/2012, 09h09
  2. [Archive] Quel est votre langage de programmation préféré ? (2004..2008)
    Par Idelways dans le forum Débats sur le développement - Le Best Of
    Réponses: 403
    Dernier message: 04/02/2009, 00h56
  3. Qui a inventé le concept de "langage de programmation?
    Par Biane dans le forum Langages de programmation
    Réponses: 10
    Dernier message: 11/02/2004, 10h11
  4. Création d'un langage de programmation
    Par liquid_stone dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 09/11/2003, 16h44
  5. Nombre de langage de programmation total
    Par Adrael dans le forum Langages de programmation
    Réponses: 16
    Dernier message: 22/07/2003, 00h06

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