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 :

buf[3] = m_iComPort|0x30 : ligne de code incomprise


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut buf[3] = m_iComPort|0x30 : ligne de code incomprise
    salut à tous,

    Est ce que quelqu'un pourrait m'expliquer la signification de la partie en rouge de cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    buf[3] = m_iComPort|0x30;
    Cette ligne se trouve dans la fonction d'ouverture du port série, je vous envoie une partie du code pour que vous compreniez le contexte dans le code la ligne que je ne comprend pas est utilisée :
    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
    void l_serie::InitComPort(int iComPort) 
    { 
    	
    char buf[] = "COM1";
    if(iComPort!= NULL)
    m_iComPort = iComPort;
    if(m_iComPort == 1 || m_iComPort == 2)
    buf[3] = m_iComPort|0x30;
    else throw Err::ErrSeriePrtNmb();
    
    //////Création du fichier/////////
    
    m_hCom= CreateFile (buf,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
    cout<<buf<<endl;
    ....
    Merci bp pour votre aide et très bonne journée

  2. #2
    Membre éprouvé Avatar de nicO1077
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Par défaut
    Citation Envoyé par sanatou
    salut à tous,

    Est ce que quelqu'un pourrait m'expliquer la signification de la partie en rouge de cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    buf[3] = m_iComPort|0x30;
    Cette ligne se trouve dans la fonction d'ouverture du port série, je vous envoie une partie du code pour que vous compreniez le contexte dans le code la ligne que je ne comprend pas est utilisée :
    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
    void l_serie::InitComPort(int iComPort) 
    { 
    	
    char buf[] = "COM1";
    if(iComPort!= NULL)
    m_iComPort = iComPort;
    if(m_iComPort == 1 || m_iComPort == 2)
    buf[3] = m_iComPort|0x30;
    else throw Err::ErrSeriePrtNmb();
    
    //////Création du fichier/////////
    
    m_hCom= CreateFile (buf,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
    cout<<buf<<endl;
    ....
    Merci bp pour votre aide et très bonne journée
    Bonjour,
    Le |0x30 c'est un masque qui est fait sur ce que contient m_iComPort
    Va voir la signification des masques, tu en as du genre | et avec &, qui ont tout les deux leur spécification !!

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    ce sont des opérateurs binaires ("|" == OU, "&" == ET), c'est a dire que ça fait un OU bit à bit entre m_iComPort et 0x30.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut
    Salut Nicco 1077,
    Merci bp de m'avoir répondu mais je ne trouve pas de documentations concernants les masques...
    Tu connaittrais pas des liens ou des sites où je pourrais trouver des renseignements...

    Merci bp...

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut
    salut Faiche,
    Merci pour la réponse, mais que veut dire justement le "ou 0x30" dans ce cas...

    Merci de m'aider...

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    0x30 est un nombre hexadécimal. Ca représente 00110000 en notation binaire.

    L'instruction "buf[3] = m_iComPort|0x30;" n'est effectuée que si m_iComPort est égal à 1 ou 2 (soit 00000001 ou 00000010 en binaire).

    m_iComPort|0x30; est égal à 00110001 si m_iComPort égale 1 et à 00110010 si m_iComPort égale 2.

    En gros tu pourrais remplacer ces deux lignes par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(m_iComPort == 1)
        buf[3] = 49;
    if(m_iComPort == 2)
        buf[3] = 50;
    Edit : pas tout à fait, j'avais pas vu qu'il y avait un else

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 117
    Par défaut
    Merci pour ces éclaircissements...ça m'aide bp...
    Mais ce que je ne comprend pas c'est pourquoi on utilise ce masque!!!!!!

    Merci de m'aider sur ce point et très bonne journée à vous.....

Discussions similaires

  1. Lignes de code incomprises
    Par miss_angel dans le forum Débuter
    Réponses: 4
    Dernier message: 24/08/2012, 16h47
  2. ~var; ligne de code incomprise
    Par sanatou dans le forum C++
    Réponses: 5
    Dernier message: 20/11/2006, 15h00
  3. Réponses: 3
    Dernier message: 08/11/2006, 09h54
  4. lignes de code incomprises
    Par sanatou dans le forum C++
    Réponses: 2
    Dernier message: 25/10/2006, 21h28
  5. Calculeur de ligne de code
    Par Bernybon dans le forum Autres éditeurs
    Réponses: 9
    Dernier message: 05/03/2004, 16h29

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