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

Langage Delphi Discussion :

Port parallèle et ou logique


Sujet :

Langage Delphi

  1. #1
    Membre actif Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Points : 251
    Points
    251
    Par défaut Port parallèle et ou logique
    Bonjour,

    J'aurai une question peut être stupide à propos de la manipulation des bits du port paralluèle mais la voici :

    Je voudrai modifier la valeur d'un bit du registre de controle mais sans modifier les autres. Et je ne voudrai pas faire de bêtise comme cramer le port par exemple

    Il est possible d'utiliser l'opérateur "ou logique" ou quelque chose comme ça ?

    Merci pour vos conseils. Je joue avec les bits de données donc je n'ai pas eu à me poser ce type de question jusqu'à présent.

  2. #2
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    partout du fait que tu obtiens un octet en provenance de l'interface. Ce que tu veux c'est changer un bit de cet octet et renvoyer le tout.

    un octect c'est 8 bits.
    donc en binaire ça va de 0000 0000 à 1111 1111, en décimal de 0 à 255.
    chaque bit occupe une puissance de 2 : 0000 0010 = 2 décimal, 0000 0100 = 4 décimal etc.
    pour modifier un bit il suffit donc de faire un calcul en utilisant des puissances de 2.
    pour manipuler les 8 bits d'un octet tu utilises donc les valeurs décimales 1,2,4,8,16,32, 64 et 128 pour les bits 1 à 8 respectivement.
    Quelle opération effectuer ? tout dépend du résultat souhaité :-)
    si tu veux placer le bit 5 à 1, il faudra utiliser un OR (ou logique) entre l'octect et l'une des valeurs listée plus haut. Donc pour le bit 5 : 16 décimal. Le calcul devient ainsi : MonOctect := MonOctect OR 16;
    si c'est le 8eme bit que tu veux changer tu utilises 128 au lieu de 16. etc.
    Pour effacer un bit, c'est le même type de calcul mais on utilise le AND et le NOT de la liste ci-dessus...
    Si je veux placer le 2eme bit à 0, il faut que que je fasse un AND entre l'octet et un nombre qui possède un 0 en 2de position, comme ça, c'est sur, que dans l'octet il y ait un 1 ou un 0, 1 AND 0 = 0, 0 AND 0 = 0 ...
    Mais pour ne pas modifier les autres bits avec le AND ce sont des 1 qu'il faut mettre ailleurs et non plus des 0 comme avec OR.
    Donc pour mettre à zéro le 2 bit il faut utiliser un nombre = 1111 1101
    comme tu le constate c'est exactement l'inverse de 0000 0010 utilisé avec OR pour mettre le 2d bit à 1..
    donc pour effacer le bit de position :
    MonOctet := MonOctet AND (NOT 2)
    etc..

  3. #3
    Membre actif Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Points : 251
    Points
    251
    Par défaut
    Merci pour l'explication, je en savais plus comment on faisait un "ou" bit à bit en Delphi. Ce que je voudrai savoir si est que je suis obligé de passé par une lecture de ce registre pour ensuite faire mon "ou" où bien il exist une syntaxe qui permette de dire que seul une valeure de bi va changer ?

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

Discussions similaires

  1. Gestion du port paralléle sous 2000
    Par kardex dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/01/2006, 19h47
  2. Port paralléle
    Par Otacon81 dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 26/10/2004, 19h42
  3. [C#] Communication avec les ports parallèle et RS232
    Par jejerome dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/07/2004, 22h57
  4. ecriture vers le port parallèle
    Par Luther13 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 19/03/2004, 22h46
  5. Port Parallèle EPP ou ECP, hardware vs software ?
    Par TONIAPEL dans le forum Assembleur
    Réponses: 3
    Dernier message: 21/08/2003, 01h39

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