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 :

variable 16 bits ?


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Par défaut variable 16 bits ?
    Bonjour,

    Quelle sont les variables que l'on peux mettre sous builder sous 16 bits ?
    J'ai entendu parler de short int, est-ce une 16 bits ?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    En général oui mais tu peux faire le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(sizeof(short int) == 2)
    {
    ...
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    short int tableau[1] = {0x0000}
    ComPort1->Write(tableau, 1);
    J'ai fait le test avec ça et malheureusement ça ne marche pas mais je sais pourquoi.. mon port série est configuré en 8 bits, ne peut-on pas le mettre en 16 ?

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    En général, un port série est utilisé pour envoyer des octets (donc 8 bits). Je ne connais pas de ports série sur lequel tu peux envoyer des words (2 octets)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Je n'ai jamais utilisé de port série mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    short int tableau[1] = {0x0000}
    ComPort1->Write((char*)tableau, sizeof(short int)*1);
    ça revient pas au même?

    Sinon, quand on veut un type codé sur un certain nombre de bits ce n'est pas une bonne idée de faire des suppositions sur le types normaux, ils sont susceptibles de changer quand on bascule vers une autre archi/un autre os/voire même un autre compilo. Il existe des typedefs pour ça dans un grand nombre de biblios y compris dans la biblio standard (si elle est suffisamment à jour). Dans ce dernier cas, le header à inclure est <stdint.h>.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Par défaut
    en effet, ça reviens au même mais bon but était d'envoyer un signal de 16 bits. Bref ce n'est pas possible.

    Autre question, peut-on mettre le port TX au niveau logique 1 ou 0 ? (sans avoir de trames, bit de start ou bit de stop...)

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Peut être en jouant avec les signaux RTS/CTS et DTR/DSR. Il existe une notion de BREAK, il faut voir comment le signal TX est positionné lors d'un break.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Par défaut
    j'ai cherché un peu ce qu'il y avait sur le break mais rien de très intéressant, disons qu'il n'influe pas sur le TX.

    Bon malheureusement je vais devoir me résoudre à acheter un adaptateur usb - dmx... Je pensais pouvoir le faire avec une simple trame rs-232 mais ce 88us me fou tout en l'air !

    merci pour tout

  9. #9
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 637
    Par défaut
    Salut,

    Si tu veux jouer avec des bits, peut être devrais tu te tourner vers... la classe bitset... tout simplement

    Tu verra, elle est particulièrement utile pour la gestion des bits
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #10
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Par défaut
    bitset ?? c'est la première fois que j'en entend parler !
    Aurait-tu un tuto, une page sur laquelle on en parle ?
    J'ai regardé sur le net.. pas grand chose

  11. #11
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155

  12. #12
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Par défaut
    oula je ne comprend pas tout ! A quoi peut service ce bitset ? Pour ma part j'aimerais juste enlever un bit de stop au début de ma trame qui fou sa me***.

  13. #13
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    N'est-ce pas plutôt un bit de start que tu veux retirer, s'il est au début?
    Attention, l'UART fait la différence : Y'en a un des deux qui est plus ou moins réglable, l'autre non...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par ram_0000 Voir le message
    En général oui mais tu peux faire le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(sizeof(short int) == 2)
    {
    ...
    }
    Pas tout à fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (std::numeric_limits<short>::digit == 16)
    {
    }
    Permet d'être plus sûr, étant donné que sizeof() renvoie un nombre de byte, et que le nombre de bits d'un byte n'est pas défini (et vous n'avez certainement pas eu le plaisir de bosser avec des bytes de 32 bits...)

    Quoi qu'il en soit, la taille d'un short n'est pas définie par le standard C++: elle peut donc varier d'une configuration à l'autre. Seule la relation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (sizeof(char) == 1) <= sizeof(short) <= sizeof(int) <= sizeof(long)
    est définie.

    Si ton compilateur est compatible avec le standard C99 (ce n'est pas le cas de Visual C++ .Net 2005), tu peux utiliser les types intN_t (int8_t, int16_t, ...) et uintN_t (uint8_t, uint16_t) définis dans <stdint.h>. La prochaine norme C++ définira aussi ces types (ce qui n'est pas le cas dans la version 2003 du standard).

    Sinon, tu peux aussi décider de te limiter à un compilateur que tu connais, et vogue la galère. Une fois le programme compilé, la taille des types ne change pas, donc si elle est connue au moment de la compilation, tout est ok.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  15. #15
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    tibo7: En clair, tu cherches à communiquer par port série avec un truc qui n'est pas compatible RS232 ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Pas tout à fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (std::numeric_limits<short>::digit == 16)
    {
    }
    Chez moi std::numeric_limits<short>::digit vaut 15 et n'a peu de rapport avec la taille d'un type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (sizeof(short)*CHAR_BIT == 16)
    {
    }

  17. #17
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 637
    Par défaut
    C'est exactement la raison pour laquelle on déconseille de faire la moindre supposition sur la taille des types de base...

    C'est aussi la raison pour laquelle je proposais d'utiliser un bitset.

    Ainsi, si tu crée un bitset d'une taille de... 16 bits en l'occurrence, tu place les différents bits à la valeur qui t'intéresse, puis il ne te reste "plus qu'à" les envoyer dans l'ordre dans lequel ils sont attendus
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  18. #18
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Sylvain Togni Voir le message
    Chez moi std::numeric_limits<short>::digit vaut 15 et n'a peu de rapport avec la taille d'un type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (sizeof(short)*CHAR_BIT == 16)
    {
    }
    Manque le bit de signe. De toute façon, la valeur de digits dépends des implémentation. La "solution": passer par le même type, mais non signé.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2011, 21h22
  2. [Débutant] Type variable 64 bits
    Par crimetime dans le forum C
    Réponses: 8
    Dernier message: 04/06/2010, 17h50
  3. déclaration de variables de 16, 32 et 128 bits
    Par samipate dans le forum C++
    Réponses: 10
    Dernier message: 30/12/2004, 22h33
  4. tester l'état d'un bit d'une variable
    Par jphi5 dans le forum C
    Réponses: 5
    Dernier message: 15/09/2003, 13h17
  5. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25

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