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

Embarqué Discussion :

Comment récupérer des erreurs pour les traiter ?


Sujet :

Embarqué

  1. #21
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    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
    Membre à l'essai
    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 : 36
    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 : 10
    Points
    10
    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
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Il faut renseigner les 2 champs en même temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre à l'essai
    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 : 36
    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 : 10
    Points
    10
    Par défaut
    Okay ouai
    donc je pense que je pourrai faire ça:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    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.

  6. #26
    Membre à l'essai
    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 : 36
    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 : 10
    Points
    10
    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.

Discussions similaires

  1. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 07/03/2010, 23h22
  2. Réponses: 5
    Dernier message: 11/10/2008, 00h21
  3. Comment récupérer des infos sur les connections
    Par dalidasoul dans le forum Connexions aux bases de données
    Réponses: 11
    Dernier message: 24/04/2008, 10h04
  4. Comment fixer des règles pour les Jtext
    Par fabou3377 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 04/02/2008, 13h50
  5. [SQL-SEVER2005] Gestion des erreurs pour les requêtes
    Par eagleleader dans le forum MS SQL Server
    Réponses: 22
    Dernier message: 16/10/2007, 09h59

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