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 :

Bits dans byte pour mettre a jour label


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut Bits dans byte pour mettre a jour label
    Bonjour

    Je souhaiterais avoir quelques petits renseignements sur une implémentation en c#, deux en fait :

    Ma Form se compose d’un flowlayoutpanel contenant des labels. Pour chaque label, je souhaite affecter une valeur (lue par un port série) convertie en Text.

    Mes données lues sont stockées dans un tableau de bytes.
    Chaque bit d’un byte permet de mettre à jour un label.

    Une solution consiste à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Tableau de données lues par la liaison série
    private static byte[]  _COM_Data = new byte[ _N ];    
     
    // Pour chaque label      
    long  maj_label = _COM_Data[0] & (byte)MASK; // avec MASK =1,2,4,8,16,32,64,128
    lbl_Value.Text = Convert.ToString(maj_label);
    …
    Mais cela n’est pas tres générique.

    Est’il possbile d’avoir une référence sur les labels contenus dans le flowlayoutpanel et de l’incrémenter à chaque valeur (bit dans un byte) ?
    J’ai cherché mais je sèche …

    Connaissez-vous une méthode pour isoler un bit dans un byte (librairie)?
    Je viens du C et la … en c# c’est plus délicat.

    Merci d’avance de votre support

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bool Le_bit_i_est_a_1 = 
       new System.Collections.Specialized.BitVector32(Mon_Byte)[i] ;

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Comme dit Graffito, tu peux utiliser la classe BitVector32, conçue pour ce genre de choses.

    Sinon, tu peux facilement faire une méthode GetBit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static bool GetBit(byte value, int bitNumber)
    {
        byte mask = (byte)(1 << bitNumber);
        return (value & mask) != 0;
    }
    (le bit 0 étant bien sûr le bit de poids faible)

    Tu peux aussi récupérer les bits sous forme de liste ou de tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static bool[] GetBits(byte value)
    {
        bool[] bits = new bool[8];
        for(int i = 0; i < 8; i++)
        {
            bits[i] = (value & 1) != 0;
            value = (byte)(value >> 1);
        }
        return bits;
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut
    Merci pour vos réponses et votre aide !

    C'est bon çà marche bien !!

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

Discussions similaires

  1. Code pour mettre a jour un sous-formulaire
    Par nianko dans le forum Access
    Réponses: 1
    Dernier message: 07/10/2010, 13h08
  2. Réponses: 3
    Dernier message: 14/11/2009, 09h26
  3. Réponses: 3
    Dernier message: 06/05/2008, 14h32
  4. Réponses: 2
    Dernier message: 03/05/2008, 09h07
  5. Réponses: 5
    Dernier message: 23/04/2008, 12h07

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