+ Répondre à la discussion
Page 2 sur 2 PremièrePremière 12
Affichage des résultats 21 à 26 sur 26
  1. #21
    Rédacteur/Modérateur

    Avatar de 3DArchi
    Inscrit en
    juin 2008
    Messages
    7 636
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 7 636
    Points : 13 095
    Points
    13 095

    Par défaut

    Salut,
    Une union permet de regrouper différents champs dans un même ensemble. Un peu comme une structure mais à la différence que seul un des champs est valide à un moment donné.
    L'énumération permet de savoir quel est le champs valide.

    Au vu de ce que tu décris, j'aurais tendance à définir le type d'erreur comme unsigned long. Ce type est ensuite utilisé par tous les autres modules. Puis d'avoir une fonction de 'normalisation' de l'erreur, dépendante du driver, qui transforme l'erreur du driver dans une erreur dans ton type unsigned long.

  2. #22
    Invité de passage
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2012
    Messages : 26
    Points : 3
    Points
    3

    Par défaut

    ouai je viens de lire un petit cours sur les unions et les enums. Je comprend leurs principe, c'est vachement pratique!

    Citation Envoyé par 3DArchi
    L'énumération permet de savoir quel est le champs valide.
    Je ne comprend pas comment l'enum peut me dire quel est le champ de l'union est valide ??

    Mais du coup je peux déjà avoir une variable qui prendra le type que je lui dirai, sans en avoir 36 des variables! Et si c'est moi qui lui dit quel type prendre, je peux envoyer cette variable à une gestion qui n'aura qu'à regarder dans un champ "type" de la structure par exemple (que j'aurai instancié préalablement).
    La le traitement pourra se faire en fonction du type!
    C'est bien ça

  3. #23
    Rédacteur/Modérateur

    Avatar de 3DArchi
    Inscrit en
    juin 2008
    Messages
    7 636
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 7 636
    Points : 13 095
    Points
    13 095

    Par défaut

    Il faut renseigner les 2 champs en même temps :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    error_t make_error_u8(uint8_t err)
    {
    error_t err;
    err.type = E_u8;
    err.error.u8 = err;
    }
    
    error_t make_error_s32(int32_t err)
    {
    error_t err;
    err.type = E_s32;
    err.error.i32 = err;
    }
    etc...

  4. #24
    Invité de passage
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2012
    Messages : 26
    Points : 3
    Points
    3

    Par défaut

    Okay ouai
    donc je pense que je pourrai faire ça:

    Code C :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    error_t err;
     
    err.type = E_u8;
    err.error.u8 = ma_fonction_driver_X(data);
    ma_gestion_derreur(error_t);
     
    err.type = E_s32;
    err.error.i32 = ma_fonction_driver_Y(data);
    ma_gestion_derreur(error_t);

    Ensuite ma_gestion_derreur peut récupérer l'erreur et sont type pour pouvoir en faire ce qu'elle veut!?

  5. #25
    Modérateur
    Avatar de Bktero
    Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 2 761
    Points : 7 396
    Points
    7 396
    Billets dans le blog
    1

    Par défaut

    L'idée est pas mal, même si ça ne change pas fondamentalement la face du monde. Au lieu de donner en paramètre à la fonction de gestion d'erreur un pointeur et un char pour indiquer le type de donnée à interpréter, tu lui passes seulement la structure. A l'intérieur, tu testes la valeur du champ énuméré pour savoir comment lire le champ du code d'erreur.
    Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseignez ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

    Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

    Pour vos problèmes d'embarqué, utilisez le forum dédié !

  6. #26
    Invité de passage
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2012
    Messages : 26
    Points : 3
    Points
    3

    Par défaut

    Citation Envoyé par BKtero
    L'idée est pas mal, même si ça ne change pas fondamentalement la face du monde. Au lieu de donner en paramètre à la fonction de gestion d'erreur un pointeur et un char pour indiquer le type de donnée à interpréter, tu lui passes seulement la structure.
    Je suis tout à fait d'accord , pour le coup j'ai plusieurs solutions!
    Non, ce qui changerai la face du monde (ou pas ), ça serai de pouvoir chopper la valeur de retour des drivers sans se soucier de son type. Mais là... Ca reglera pas mal de problème en cas d'implémentation de nouveaux drivers.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •