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

Turbo Pascal Discussion :

[TP]Gestion d'un port quelconque ??


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Par défaut [TP]Gestion d'un port quelconque ??
    Coucou,

    Cette fois ci j'ai un problème de port !!!

    Je voudrait savoir quelle sont les procedure a ecrire pour gerer un port !!
    par exemple si contact à telle broche il ya alors tu déclenche le chrono !!!

    Et aussi quelle prot me conseiller vous d'utiliser ???

    J'ai penser au port parallèle ou au port souris

    Bie

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Bon dans l'ordre :
    - pour écrire et lire sur les ports, il faut utiliser ( en turbo pascal ) les tableaux port et portW, qui fonctionnent comme des tableaux normaux. Le premier tableau port n'accepte que des bytes et portW n'accepte que des words. La lecture et l'écriture sur ports se fait aussi en assembleur avec les instructions IN et OUT.
    - Pour le port à utiliser, ca dépend de ce que tu veux faire. Le port parallèle et le port série sont très utilisés ( de moins en moins ... ) pour le tranfert de fichiers ou plus simplement de données ( ils sont désormais remplacés par l'USB ). Quant au port souris, son usage est exclusivement réservé à la souris ( et tu ne devrais pas y toucher à moins que tu souhaite faire un driver pour ta souris ).
    Voilà
    a+

  3. #3
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Par défaut
    Ok

    Mais avec ça je suis pas très avance ;

    Comment utiliser ton tableau avec les instructions Port / PortW ;

    Sachant que c'est pour gérer le déclenchement d'un chronomètre artisanale ( infrarouge ) ;

    Ex je veux que quand on franchisse la barrière du chrono ... l'ordi reçoit une instruction et fait quelquechose !!!

    C'est possible

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    J'utilise l'accès direct aux ports avec la fonction Port du pascal.
    Cette fonction me permet de choisir l'état de chaque pins du port.
    Niveau haut=5V, Niveau bas=0V.
    L'adresse de base varie en fonction des configs, il faut donc vérifier l'adresse:
    $378 pour LPT1,
    $278 pour LPT2,
    $3F8 pour COM1,
    $2F8 pour COM2.

    Ensuite pour accèder à chaque broches du port //, j'utilise ce tableau:


    Pour comprendre l'accès, je prend l'exemple des broches D0 à D7 (sorties):
    Port[$378]:=0 met D0 à D7 au niveau bas.
    Port[$378]:=1 met D1 au niveau haut, le reste au niveau bas.
    Port[$378]:=2 met D2 au niveau haut, le reste au niveau bas.
    Port[$378]:=3 met D1 et D2 au niveau haut, le reste au niveau bas.
    Ainsi de suite...
    D0=1, D1=2, D2=4, D3=8, D4=16, D5=32, D6=64, D7=128.
    Par exemple, si je veux mettre au niveau haut les broches D1, D5, D6 et D7:
    2+32+64+128=226 donc Port[$378]:=226.

    Pour lire les entrées, c'est l'inverse -> x:=Port[$378];

    Attention! Un court-circuit ou mauvais branchement peut détruire le port // et/ou la carte mère! Il faut donc bien savoir ce que l'on fait avant de bricoler avec ce port...
    ----------------------------------------------------------------------------------------------
    Pour le port série, c'est un peu différent: Déjà les tensions sont différentes! C'est -12V pour le niveau haut et +12V pour le niveau bas. Ces tensions peuvent varier en fonction du PC, par exemple sur un portable, c'est -5V et +5V. Pour convertir ces signaux, il faut passer par un circuit intégré comme un MAX232. Avec ce composant électronique, on obtient alors +5V pour le niveau haut et 0V pour le niveau bas. Si tu as le choix, je te conseil d'utiliser le port // plutôt que le port série pour t'éviter l'ajout du convertisseur MAX232.

    Pour plus de détails, me demander, à+


  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    C'est plus clair comme ça ?
    Sub0, ton explication était vraiment superbe !!
    a+

    P.S. #1 : pour utiliser les tableaux, regarde l'aide.
    P.S. #2 : je ne reponds plus aux messages dont la réponse est dans l'aide ( je ne vais plus répondre à beaucoup de message mais bon ... )

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Merci wormful_sickfoot, c'est sympa!

    Tu as raison de ne plus répondre aux posts déjà posés. Personnellement, ça me dérange pas de donner de l'aide, sinon je ne le ferais pas du tout! Le moteur de recherche du forum est très performant - J'ai fait une petite recherche avant avec le mot "LPT1" sur le forum Pascal et Delphi, mais je n'ai pas trouvé grand chose, et toi? Pour l'utilisation des tableaux, ça n'explique pas le côté hardware qui est à mon avis, plus important que le software -> Il faut déjà comprendre comment fonctionne le port avant de vouloir le programmer, sinon il risque de bouziller sa carte mère!

    ----------------------------------------------------------------------------------------------------
    Lavaud, si tu souhaite seulement envoyer une information logique (0 ou 5V) au PC, tu peux utiliser le port parrallèle. Il faudra rajouter une résistance de protection sur la ligne, et être sûr et certain d'avoir un signal de 5V au maximum! - Le port // peut détecter une tension inférieure à 5V, jusqu'à 3V je crois. Utilise par exemple la broche n°10 qui est une entrée (ACK). Tu brancheras donc le signal positif sur cette broche, et la masse sur une broche GND (18..25). Si ton signal n'est pas une tension, mais qu'il sagit plutôt d'une résistance, tu peux soit rajouter un petit transistor en se servant d'une sortie du port pour alimenter ce transistor, soit utiliser le port Joystick...

    Attention! En aucun cas, le port parrallèle ne pourra alimenter un montage électronique nécessitant un courant supérieur à 20 mA! Si ton montage n'a pas d'alimentation externe (transformateur, pile, accu), et que tu ne sais pas comment mesurer l'intensité, demande-moi.

    Une fois tout ça au point, tu récupéres l'information de ton détecteur sur l'entrée ACK, en programmant quelque chose comme ça:
    IF(Port[$378+1]>63)THEN contact:=True ELSE contact:=False;

    Encore un détail, si tu veux faire un programme pour Windows, l'accès direct aux ports ne fonctionne pas avec les systèmes d'exploitation XP/NT/2000. Dans ce cas, il faudra rajouter un pilote spécial dans ton programme. Cela dit, le principe reste le même...

    Demande-moi si tu as besoin de précisions, à+


  7. #7
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Une question : est-ce que le port parallèle ( ou série ) peut servir d'alimentation pour un circuit électrique, si les conditions d'utilisation sont réunies ( tension, intensité résistance ) ?
    a+

  8. #8
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Oui! Par exemple, tu peux brancher directement des leds aux sorties si tu rajoutes des résistances. Certain montage ne nécéssite que très peu de courant, et dans ce cas, on peut se passer d'une alim externe. Les ingénieurs informaticiens l'ont bien compris, c'est pour ça qu'il ont intégré une alim au port USB! Pour connaître se que consomme un montage, il faut le brancher à une alim externe, et mesurer le courant avec un multimètre branché en série, si il ne dépasse pas 20 mA à plein régime, ya moyen de se servir d'une sortie pour l'alimenter, à+

  9. #9
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Ok merci beaucoup pour cette précision !!
    Donc on peut par exemple brancher un petit moteur sur le port parallèle... intéressant !!
    a+

  10. #10
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    NON !! Tu ne pourras pas brancher directement de petit moteur sur une sortie du port //. Je t'explique pourquoi: Si par hasard tu bloque le rotor ou qu'il est freiner, le courant augmentera dangereusement et dépassera les 20mA ! Tu peux éventuellement, ajouter un régulateur de courant pour protéger la sortie contre cette surcharge... En fait quand tu ne connais pas l'intensité maximale utilisée par ton montage, le mieux est de la mesurée! à+

Discussions similaires

  1. gestion de plusieurs ports série
    Par kouedic dans le forum Windows
    Réponses: 1
    Dernier message: 15/02/2008, 09h10
  2. gestion de plusieurs ports série
    Par kouedic dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 15/02/2008, 08h58
  3. 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
  4. Gestion de deux ports COM
    Par chourmo dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 15/12/2005, 15h03
  5. Routines de gestion des ports sous Windows XP
    Par wiccanhelios dans le forum Windows
    Réponses: 2
    Dernier message: 14/11/2003, 08h02

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