Comparaison de chiffre binaire et agir en fonction

cs_Jacky7 Messages postés 63 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 22 juin 2011 - 5 juin 2008 à 19:33
cs_Jacky7 Messages postés 63 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 22 juin 2011 - 13 juin 2008 à 10:50
Bonsoir à tous,

J'ai realisé un prog qui permet de lire et de convertir la valeur du port de décimale en binaire (bit de donnés de DO à D7) toutes les 500ms.
J'effectue une première lecture et j'enregistre sa valeur (en binaire) puis 500ms plus tard je relis la valeur du port que j'enregistre également puis je fais une comparaison entre ces deux valeurs et ainsi de suite.

Mon problème est que je voudrais comparer ces deux valeurs binaires, de façon à "détecter" le ou les bits qui aurait changés pendant les 500ms et agir en fonction mais je ne sais pas comment m'y prendre ??

Par exemple  :
11111110  #(different de) 11111111
alors le bit D0 a été modifié 
Est-ce possible "d'adresser" chaque bit ci-dessus dans une variable comme par exemple le bit DO a, le bit D1 b....puis d'effectuer ensuite une comparaison de ces variables afin de retrouver quel bit a bougé ?

J'espère que ce que je raconte est compréhensible

Merci.

6 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 juin 2008 à 19:51
Salut,

Regarde ce petit exemple ^^ :

Private Sub Command1_Click()


Dim sSource As String
Dim sCompare As String
Dim iboucle As Integer


sSource = "11111111"
sCompare = "11111110"


For iboucle = 1 To Len(Text1.Text)


    ' test compare
     If Mid$(sSource, iboucle, 1) <> Mid$(sCompare, iboucle, 1) Then
        MsgBox "Changement de valeur à la position : " & iboucle
        Exit For
     End If


Next iboucle


 


End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 juin 2008 à 20:31
Re,

Enlève le : Exit For, comme çà tu parcoures toutes la chaine ^^

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 juin 2008 à 22:37
Dim a As Long, b As Long

LECTURE DANS a SANS CONVERSION STRING
ensuite idem dans b

Connaitre les bits différents:
diff = a XOR b

diff aura ses bits à 1 pour tous ceux différents de a et b.

Je n'ai aucune idée de l'existence du XOR en VB mais j'espère que si.

ciao...
BruNews, MVP VC++
0
cs_Loic34000 Messages postés 27 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 6 juin 2008
6 juin 2008 à 10:37
Salut Exploreur,

L'exemple que tu m'a fournit est vraiment ce que je voulais et je t'en remercie fortement,mais un autre problème se pose j'aimerais savoir s'il serait possible de "detecter" seulement un passage de 0 à 1 et de laisser de côté le passage de 1 à 0 ou inversement ?

Par exemple :

00000000 -> 00000001 Msgbox "le bit DO à été modifié" mais lorsque
00000001 -> 00000000 rien ne se passe ou inversement

Le but serait en fait de detecter seulement les fronts montant ou descendant du changement de bit.

Est ce que tu aurais une idée sur la façon dont je peut m'y prendre ?
Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jacky7 Messages postés 63 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 22 juin 2011 3
13 juin 2008 à 10:38
Salut Exploreur,

Je voulais savoir s'il serait possible de "détecter" la valeur du bit lors du changement de valeur à la position x. (par exemple le bit est à la valeur 0 ou 1) et agir en fonction.

Car mon problème est que je modifie cette valeur à l'aide d'un bouton poussoir, lorsque que j'appuie sur le bouton il y a 1 changement de bit (par ex bit n°1 passe de 1 à 0 et reste a zéro tant que je reste appuyé) et lorsque je relache il y a un deuxième changement (le passage du même bit de 0 à 1 qui revient à son état initial), mais je voudrais que mon prog ne voit qu'un seul changement et non deux mais je ne sais pas comment m'y prendre.

Est- ce quelqu'un aurait une idée ??

Merci d'avance.
0
cs_Jacky7 Messages postés 63 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 22 juin 2011 3
13 juin 2008 à 10:50
Re salut,

Voila en fait ce que je voudrais mais je ne sais pas comment l'écrire : 
Par exemple :

Comparaison des deux valeurs binaires

J'appuie sur le bouton poussoir :

Ssource = 11111111
Scompare = 11111110

Alors changement à la position 8
Le bit N°8 est maintenant à la valeur 0 alors action  (tant que je suis appuyé sur le bouton)

Je relache le bouton poussoir

Ssource = 11111111
Scompare = 11111111

Alors changement à la position 8
Le bit N°8 est maintenant revenu à la valeur 1 et la je ne fais rien

Est-ce que quelqu'un aurait une idée svp ?
Merci d'avance
Jack.
0
Rejoignez-nous