runo
Messages postés26Date d'inscriptionmercredi 5 octobre 2005StatutMembreDernière intervention15 avril 2011
-
9 nov. 2005 à 12:57
philippe laschweng 1
Messages postés278Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention13 avril 2013
-
10 nov. 2005 à 15:44
Jai une petite question :
je lis le port parallèle de mon PC :
portD0 = Inp(PortAddress)
Avec cette fonction, je recupère la valeur du port, mais j'aimerais
savoir comment vérifier l'état d'un seul bit ? Par exemple je veux
tester si le bit 0 est à 1 ?
Idem, lorsque j'ecris sur le port, est-il possible de n'écrire que certains bits ?
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 9 nov. 2005 à 16:47
Explique moi ça Renfield stp !!!
Y'a quand même un truc que j'ai pas du piger au nivo de la manipulation binaire via les fonctions logiques!!!
Si tu pouvais me faire un petit topo voire (mais je voudrais pas te donner trop de travail), un tuto sur ce sujet pourtant si fondamentale!
Sinon, tu vas peut-être me prendre pour un lourdingue mais j'ai chercher partout, et en VB6, j'ai pas trouvé ta fonction ChrW !!! Es-tu vraiment certain que ce n'est pas d'une API dont tu parlais et si non, y'a-t-il d'autres fonctions du genre ???
Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
philippe laschweng 1
Messages postés278Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention13 avril 20132 9 nov. 2005 à 21:51
Oui il faut utiliser un masquage logique !
Mais je crois qu'en VB tu ne peux pas utiliser les fonctions logiques (AND, OR...) avec des mots binaires directement. Exemple :
0011 AND 1110 te donne en théorie 0010. Mais je crois que VB n'accepte pas directement cette écriture (pas comme du VHDL). Je me trompe peut être ... mais je crois pas. Il n'accepte que ces fonctions entre 2 bits. Mais tu peux facilement te construire une fonction pour cela.
Pour masquer des bits, tu fais en principe un ET logique avec ton octet (exemple 8 bits) et un second octet ou tu mets les bits à masquer à 0 (les autres étant à 1). Mais tu peux aussi utiliser in InStr() si tu veux isoler un bit en particulier même si ca n'est pas le plus judicieux je te l'accorde ..
Mais c'est vraie qu'en logique booléenne tu fais tout avec les opérateurs AND, OR, XOR (inverseur commandé) etc ...
philippe laschweng 1
Messages postés278Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention13 avril 20132 10 nov. 2005 à 10:33
Renfield : je sais bien que VB accepte AND et OR pour les opérations binaires mais tu as du mal comprendre ou je me suis mal expliqué. Ce que je voulais dire, peut être que je me trompe, mais je ne suis pas arrivé à faire par exemple un AND bit à bit sur un octet complet, du genre :
000011111 AND 01010101 = 00000101.
VB n'est pas capable de te donner ce résultat directement. Les opérations ne marche que bit à bit.
Ce n'est pas comme avec du VHDL (langage de description hardware) par exemple qui accepte fort heureusement ce type d'opération.
En VB pour faire l'opération du dessus, je me suis fabriqué des fonctions simples mais je n'ai pas trouvé le moyen de faire l'opération directement.
Mais je me répéte je n'affirme rien, j'ai constaté et je n'ai peut être pas trouvé la solution ...
philippe laschweng 1
Messages postés278Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention13 avril 20132 10 nov. 2005 à 11:16
Oui tu as raison en décimal cela fonctionne. Je n'avais jamais essayé en décimal car je n'y ai jamais pensé vu que mon raisonnement était binaire. Mais c'est un peu bête que VB n'accepte direct du binaire. Pareil je crois (peut être ai-je encore tout faut) qu'il n'existe pas de fonction DIRECTE pour faire des conversions classiques base16 --> base10, base10 -- > base2 ...
Ce qui veut dire que si tu veux faire un ET logique entre deux octets (par exemple), tu es obligé de convertir dans un premier temps les deux octets de b2 en b10, faire l'opération et reconvertir le résultat de b10 en b2. En plus il te faut un module pour convertir b2 en b10 et b10 en b2 (j'ai une fois trouvé un module sur le net qui fait toute les conversions dans toutes les bases).
Sinon, devant ce problème j'avais dans le passé carrément réalisé une fonction qui utilise le AND mais bit à bit pour chaque bit des deux mots binaires (en parallèle).
En tout cas meri pour tes explications, j'aime bien cherché à comprendre ce que je ne comprends pas !! lol