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++Builder Discussion :

precision sur le pilotage du port parallele


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut precision sur le pilotage du port parallele
    bonjour.

    j'utilise le composant TDLportio tres bien fait d'ailleur.

    j'ai besoin de quelques précisions.

    Lorsque que l'on écrit une donnée sur le port parallele de D0 a D7 et que apres on envoie par exemple une impulsion sur le strobe pin 1.
    Est ce que la donnée D0 à D7 est effacer ou pas ?

    pour ecrire un hexa sur le port il est dit que le format doit etre :
    unsigned __int8

    est il possible d'envoyer un format unsigned char

    ou existe -t- il un transtypage entre ces deux formats?

    merci

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    une nouvelle version de ce copmposant est en test actuellement
    ce nouveau composant apporte de nouvelle fonctionalité et fonctionne maintenant sous Window2000 et XP
    la version actuelle 1.xx ne fonctionne pas sous win2000
    car la procédure de détection de port ne supporte pas le Plug and Play
    encore un peu de patience et ce composant sera disponible
    une version Beta est actuellement téléchargable à l'adresse suivante

    http://djmsoftware.developpez.com/Pr...ort/DLPOrt.zip


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Ecriture sur le Port (TDlPrinter)
    // simplement
    // le composant se nomme Dl
    Dl->Port[Dl->LptBasePort]=0x55;
     
    Lecture
    int Value=Dl->Port[Dl->LPTBasePort]&255;
    long ValLong=Dl->Port[Dl->LPTBasePort]&255;
    short ValS=Dl->Port[Dl->LPTBasePort]&255;
    unsigned char ValCahr=Dl->Port[Dl->LPTBasePort];
    comme tu peux le constater cela fonctionne avec m'importe quelle type de données non signée de 8 bits ou signées ou non signées de 16 et 32 bits avec l'application d'un masque

    Cordialement

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    bonjour,

    merci de ta réponse.

    J'est actuellemnt des problemes pour tester ce composant car je n'ai pas les versions de windows a dequate.
    J'attends donc ce nouveau composant avec impatience.
    merci de me tenir au courant a ce sujet :francoisbranciard@netcourrier.com.
    a bientot
    françois.

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 208
    Points : 11 686
    Points
    11 686
    Par défaut
    D'ailleur j'en profite pour m'excuser du retard (car je suis le testeur) et je suis un peu débordé en ce moment mais je vais reprendre les tests du composant au plus vite.

  5. #5
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    J'est actuellemnt des problemes pour tester ce composant car je n'ai pas les versions de windows a dequate.
    ce Composant est compatible avec les versions de Windows suivantes
    • Windows 95,98,Me
      Windows NT 4
      Windows 2000
      Windows XP


    si ta version de Windows ce trouve dans la liste ci-dessus le composant
    fonctionne parfaitement
    tu peux le télécharger à l'adresse suivante
    http://djmsoftware.developpez.com/Pr...ort/DLPOrt.zip
    les sources sont livrées avec
    tu peux compiler directement ce composant si tu dispose de
    • C++ Builder 5
      C++ Builder 6

    si tu dispose d'une version antérieure tu dois simplement recréer un nouveau paquet

    Cordialement

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    merci pour le temps que tu passes pour tes cours qui sont trés bien fait et tres utile et bon courage pour la suite.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    ok merci je vais essayer!!

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Au niveau du fichier dlport.zip
    Ayant c++ builder 6, dans le repertoire apres dezipage il ya 3 repertoires:
    -DlIoPOrt
    -DlPortOcx
    -OCX contenant lui meme deux autres repertoires DLIoPortOcx et DlPrinterPortOcx

    chaque repertoire contenant des fichier pouvant etre compiler pour installer le composant .

    Lequel faut-il compiler pour installer le composant correctement?

    bon j'ai reussie a installer le composant apres plusieurs essais mais je nesuis passur qu'il soit bien installé.
    Des lors il possede deux icones differentes une qui s'appelle :
    DLPortIO (je crois)
    et une autre DLPrinterPortIO je crois aussi.

    (lequel est a utilisé?)

    Mais quand je regarde les fonctions de ces deux icones je ne retrouve pas toutes les fonctions qui étaient accessible avec la version précedente par exemple la fonction SetPin est introuvable.

    Cela vient-il du fait que ce composant n'est pas dans sa version définitive ou que j'ai mal installé.

    excusez moi de mon manque de vecu c++ builder qui me donne pas mal de difficultés.

    francois.

  9. #9
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    Ayant c++ builder 6, dans le repertoire apres dezipage il ya 3 repertoires:
    -DlIoPOrt
    -DlPortOcx
    -OCX contenant lui meme deux autres repertoires DLIoPortOcx et DlPrinterPortOcx
    DLIoport est un composant descendant de TComponent
    DlPortOcx est Un composant descendant de TCustomControl servant à générer les composants OCX utilisables depuis un autre outils de Developpement(delphi,Visual Basic etc)

    suivant l'usage que tu veux faire tu compile soit l'un ou l'autre des composants

    les composants OCX sont livrés dans le fichier zip

    DlportIO est un composant servant a manipuler directement le port d'imprimante
    il dispose de méthode et propriété permettant d'écrire et de lire directement sur les différents Ports
    ex :
    lecture sur le Port Lpt1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DlportIo->OpenDriver();// chargement de la DLL d'accès
    int value=DlportIo->Port[DlportIo->GetLPTBasePort(1)];// lecture sur le Port LPT1;
    DlportIo->Port[DlportIo->GetLPTBasePort(1)]=55;// ecriture dans le Port LPT1
    DlportIo->CloseDriver();//
    DlPrinterPortIo est un composant permettant de contrôler directement une imprimante connectée sur un Port Ou de placer directement chaque Pin du port sans un état défini

    la grande différence par rapport à DlportIO est que le chargement respectivement de la DLL d'accès au Port est automatique
    pour placer une Pin dans un état désiré il suffit simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // set
    DlPrinterPortIo->Pin[7]=1;
    // Lecture
    bool Pin7= DlPrinterPortIo->Pin[7];

  10. #10
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 208
    Points : 11 686
    Points
    11 686
    Par défaut
    Citation Envoyé par fransouik
    Mais quand je regarde les fonctions de ces deux icones je ne retrouve pas toutes les fonctions qui étaient accessible avec la version précedente par exemple la fonction SetPin est introuvable.
    C'est parce que DjmSoftware a réorganisé le composant, balayé l'inutile et il et beaucoup plus claire maintenant. C'est tout ça que je n'ai pas eu encore le temps de tester ni de mettre à jour dans mon tutoriel.

    Je commence à voir mon projet se terminer mais pas encore tout à fait ! Ensuite je testerai et mettrai à jour tout ça.

  11. #11
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    les composants OCX ne permettent pas l'utilisation de Property de Type Tableau Indicés
    ex Pin[4]=5;

    j'ai effectué un modification permettand de rendre visible les méthodes
    GetPin et SetPin dans la version TCustomControl de ce composant

    la nouvelle version aura comme numéro : 2.0.2 elle sera disponible en téléchargement à la fin de la semaine 6

    Cordialement

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Merci des précision.
    J'ai pu tester le composant et cela fonctionne bien.

    Je me demandait si vous aviez une idée des temps d'execution et de propagations des signaux lorsque les fonctions sont appellées.
    Par exemple lorsque le prgramme execute une mise a 0 sur un bit du port ; la mise a 0 volt (physiquement) n'est pas instantané. Y a t il un temps aproximatif a considérer?

    Mon projet étant de programmer un EEPROM par port parallele, je me demandait si cela deavit etre pris en compte pour assuré un bon enchainement des instructions ou bien si tout cela pouvait étre négliger.

    Sinon c'est pas grave je ferais des essais.

    J'attends donc patiemment les mises a jour en vous souhaitant bon courage.

    francois

  13. #13
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    salut,
    les OS NT4,9xx,2000,XP ne sont pas des système temps réel
    suivant la priorité donnée a ton process tu ne peux pas descendre en dessous de ~3ms
    c'est a dire qu'une impulsion sur un des ports de sortie aura 3ms pour la partie Haute et 3 ms pour la partie basse

    ci c'est dans tes temps pour la programmation de ton EEprom pas de problème

    2 solutions possibles
    Travailler sous DOS
    implémenter un peu plus d'éléctronique qui sera chargée de la fabrication des différents signaux nécesseaire à la programmation de tes EEPROM

    Cordialement

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    bonjour

    Ayant besoin de faire :
    ->du control bit a bit du port pour certaines sorties comme la Pin 16 et 14.
    ->du control par octets en envoyant une valeur hexadecimal sur les données (Pin 2 à 9).

    (les deux acces devant etre independant les uns des autres)

    Je me doit donc d'utiliser et les fonctions de Dlportio avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DlPrinterPortIo->Pin[14]=1;
    et celles de dlprinterportio avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    unsigned char hexa;
     hexa=0x24;
    DlportIo->Port[DlportIo->GetLPTBasePort(1)]=hexa; //ecriture sur pin 2à9 de la valeur hexa
    Le probleme c'est que quand je fait l'acces bit a bit apres avoir envoyer un octet. L'acces bit a bit met l'octet a FFh.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     unsigned char hexa;
     hexa=0x24;
    DlportIo->Port[DlportIo->GetLPTBasePort(1)]=hexa;
    DlPrinterPortIo->Pin[14]=1;
    int value=DlportIo->Port[DlportIo->GetLPTBasePort(1)];
    Edit1->Text=IntToHex(value,2);//l'octet n'est plus 0x24 mais 0xFF
    Ceci doit etre normal, mais est ce que je peut faire ce que je veux avec un seul des 2 composants. (Avec des fonctions que je n'aurais pas vu ).
    Ou alors faut -il que j'attende la mise a jour...
    merci
    francois

  15. #15
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    l'accès au pin depuis la version TComponent(TDLPrinterPortIO) se fait avec la property Pin en écriture et en lecture
    l'accès au Port se fait avec la property Port en écriture et en lecture

    l'accès au Pin depuis la version TCustomControl(TDlPrinterPortIox)
    en Lecture GetPin
    En Ecriture SetPin

    l'accès au Port
    en Lecture ReadPort
    En Ecriture WritePort



    la version 2.02 est disponible sur l'URL précédamment postée


    Cordialement

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    D'un point de vue logiciel tout marche parfaitement: lorsque j'écris ou lit sur le port ou une pin je trouve bien ce que je voulait; Mais quand je regarde electriquement le port Je ne trouve pas la meme chose.
    C'est comme si j'avais acces a des registres dans lesquels je lisait et écrivait normalement mais cela n'entraine aucun controle electrique.

    Le plus surprenant c'est que la patte 1 le strobe lui fonctionne tres bien electriquement par rapport aux instructions données ainsi que la patte 16 et 17 init et selectin.

    Pour les autres par exemple je met la patte 2 a 0 lorsque je lit la patte 2 je trouve bien 0 mais electriquement la patte reste dans son etat initiale.

    Auncune erreur est signalée

    J'ai Windows Xp familliale et j'ai essayer le port en EPP ou ECP.
    Dans les proriétées du LPT1 j'ai cocher "Utiliser toutes les interuptions atribuée au port". Mais rien ne se passe.

    J'ai essayer avec le TComponent(TDLPrinterPortIO) et le TCustomControl(TDlPrinterPortIox) il se passe la meme chose.

    Faut il configurer le port de la façon suivante avant d'ecrire (comme indiqué dans le tutorial de Vincent Petit)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parallele1->WritePort(0x37A,0x00); // Configuration du port en sortie
    Quel en est votre avis ?
    merci
    francois

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    meme probleme sous windows 95 avec BCB6

  18. #18
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    précison importante sur le port parallèle, assure toi qu'il est vraiment bidirectionnel pour cela tu peux effectuer le petit programme suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    // TDLPrinterPortIO *dlp 
    // int PortBase
    //int PortStatus
    //int PortControl
     
    //dans le constructeur de ta form
    PortBase=dlp->LPTBasePort;
    PortStatus=PortBase+1;
    PortControl=PortBase+2;
     
    // lecture des data sur les Pins 2 à 8 (d0 d7)
    // on place d'abord le Port Actif en mode lecture
    dlp->Port[PortControl]=dlp->Port[PortControl]|0x20;// bit 5=1
    int PortValue;//Valeur Lue sur le Port en entrée
    PortValue=dlp->Port[PortBase]&0xff;
     
    // pour écrire sur le port
    //on le place d'abord en mode de sortie
    unsigned char WriteValue;
    dlp->Port[PortControl]=dlp->Port[PortControl]&0xDF; // bit 5 =0;
    dlp->Port[PortBase]=WriteValue;
     
    // remarque si l'on veut lire de manière séquentielle des valeurs sur le Port il faut agir de la manière suivante
    dlp->Port[PortControl]=dlp->Port[PortControl]&0xDF;// on met le port en sortie
    dlp->Port[PortBase]=0;// on le met à 0
    dlp->Port[PortControl]=dlp->Port[PortControl]]|0x20;// on met le port en lecture
    PortValue=dlp->Port[PortBase]&0xff;// lecture du port
    ce code fonctionne parfaitement sur mon laptop qui dispose d'un port bidirectionnel

    cordialement

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup c'est fois c'est la bonne. Tout marche !!
    C'etait bien la configuration du port en entree ou en sortie avant d'ecrire ou lire qui manquait.
    je te remercie de ton aide précieuse.
    francois

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

Discussions similaires

  1. Lire en continue sur le port parallele
    Par bob74500 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2008, 19h25
  2. Réponses: 4
    Dernier message: 20/09/2006, 14h08
  3. Byte de sortie sur port parallele non maitrisé
    Par BECHE dans le forum Web & réseau
    Réponses: 15
    Dernier message: 10/03/2006, 23h06
  4. Lire le status d'une imprimante sur le port parallèle
    Par narmataru dans le forum Linux
    Réponses: 16
    Dernier message: 21/11/2005, 14h43
  5. Réponses: 3
    Dernier message: 10/10/2005, 18h30

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