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

VB 6 et antérieur Discussion :

Lecture de bits


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Par défaut Lecture de bits
    Bonjour,

    Je vais vous expliquer mon problème,

    Alors voila, j'ai une carte d'entrées/sorties relié au PC via RS232, je m'amuse à lire les ports A,B,C et D qui sont sur 8 bits.

    Je recupere donc une trame de 8 bits et ensuite je dispose d'un panneau de "LED" (en fait ce sont des cercles coloriés sous VB) et je souhaiterai allumer la LED correspondante au bit.

    J'ai trouvé uné méthode mais elle est relativement longue à réaliser, je convertis la valeur du port en décimal (1111 1111 = 255) et ensuite je regarde si mon nombre peut avoir 255, si oui j'allume une led si non je prends le bit suivant. (Le programme devient une usine à gaz avec tous les if imbriqués pour que tous les cas soient traités)

    J'aimerai savoir s'il y a une façon plus efficace ou plus rapide de réaliser cette petite application, merci !

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Benji59 Voir le message
    et ensuite je regarde si mon nombre peut avoir 255..
    tu fais comment pour "regarder"...?

    Utilise un AND ..?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     Dim bPort As Byte
     Dim bNumbit As Byte
     
     bPort = 254
     bNumbit = 0
     
     If (bPort And 2 ^ bNumbit) Then
        MsgBox "le bit " & bNumbit & " dans " & bPort & " Et à TRUE"
      Else
        MsgBox "le bit " & bNumbit & " dans " & bPort & " Et à FALSE"
     End If

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Par défaut
    En fait lorsque je lis le port choisi, j'ai une instruction qui me permet d'avoir la valeur du port en décimal et à partir de là je soustrais les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    A7 = A - 255
    if A7>=0 then 
    'allume la led
           A6 = A7 - 128
    else A<0
           A6 = A - 128
    end if
    et ainsi de suite

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    255 ..? c'est tout les bits à 1..?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Par défaut
    Oui 255 ca correspond à 1111 1111, je me suis trompé, c'est 128 et non 255 pour tester le MSB

    En fait lorsque je lis le port choisi, j'ai une instruction qui me permet d'avoir la valeur du port en décimal et à partir de là je soustrais les valeurs.

    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
    17
    A7 = A - 128
    if A7>=0 then 
    'allume la led A7
           A6 = A7 - 64
           if A6 >=0 then
                'allume la led A6
                A5= A6 - 32
           else A6<0
           A5 = A7-32
    else A7<0
           A6 = A - 64
           If A6 >=0 then
               'allume la led A6
                A5 = A6-32
           else A6<0
                 A5 = A - 32
    end if
    et ainsi de suite

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    j'ai pas tout compris ce que tu veux faire sur tes bits. .. mais le AND ne te convient'il pas pour tester l'état d'un bit...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 17
    Par défaut
    Desolé, je débute en VB

    Peut être que le AND me suffirait mais comment ca fonctionne et comment je dois l'utiliser ?

    C'est comme le masque & du langage C ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lecture de bit dans WinCC
    Par polen27 dans le forum Automation
    Réponses: 6
    Dernier message: 15/04/2008, 12h37
  2. [WinCC-VBScript] lecture de bit
    Par ren973 dans le forum Automation
    Réponses: 7
    Dernier message: 12/07/2007, 16h07
  3. [WinCC-VBScript] lecture de bit
    Par ren973 dans le forum VBScript
    Réponses: 5
    Dernier message: 11/07/2007, 20h48
  4. Lecture de bits
    Par la_praline dans le forum C
    Réponses: 13
    Dernier message: 22/05/2007, 17h01
  5. Réponses: 5
    Dernier message: 03/06/2005, 14h06

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