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

MFC Discussion :

[MFC] port parallèle (LPT1)


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut [MFC] port parallèle (LPT1)
    bonjour à tous,

    je dois envoyer et recevoir des données sur le port parallèle LPT1. Comment faire avec les MFC?

    merci?

  2. #2
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    regarde ce lien : http://www.lvr.com/parport.htm
    Sinon, je crois qu'il faut utiliser CreateFile...

  3. #3
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Pour simplement envoyer / recevoir des données, à priori le CreateFile devrait suffire. Tente d'ouvrir un CFile sur "LPT1".

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Par défaut [MFC] port parallèle (LPT1)
    Salut,

    Si tu fais ca sous 2000 ou XP, je te conseille d'aller voir un site :

    http://www.beyondlogic.org/porttalk/porttalk.htm

    Tu trouveras ce qu'il faut pour ne plus avoir les problemes de privileges.

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    c'est vite dit. Ca utilise un driver pour pouvoir écrire sur les ports, donc il faut être administrateur pour charger ce driver...
    CreateFile, s'il te suffit, fonctionnera tout le temps.

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    à tous,

    j'ai réussi avec CreateFile. J'arrive à envoyer des données (avec la fonction WriteFile()). Mais maintenant, comment en recevoir??
    Mon problème est le suivant:
    quand j'envoie un requête, la réponse peut mettre assez longtemps à venir (30 secondes maxi). Dois-je créer un thread qui attend la réponse? Car si je fais un ReadFile() et que la réponse n'est pas encore arrivée, ça ne va pas marcher.

    encore merci

  7. #7
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    ReadFile doit échoué car il y a timeout de lecture. Tu peux régler le tiemout avec SetCommTimeouts et doit pouvoir attendre qu'un évènement arrive (reception de données...) avec WaitCommEvent.

  8. #8
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    ok.

    Je ne comprends pas bien la structure COMMTIMEOUTS qui définit les temps d'attente. En particulier, je ne vois pas la différence entre les trois premiers champs: ReadIntervalTimeout, ReadTotalTimeoutMultiplier et ReadTotalTimeoutConstant.

    Si quelqu'un connait cette structure, j'accepte volontiers quelques explications


  9. #9
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Faut lire la doc...
    C'est le premier qui t'intéresse, les 2 autres tu peux les mettre à 0. Tu lui met le nombre de ms à attendre avant de considérer que t'as rien reçu.

  10. #10
    tut
    tut est déconnecté
    Membre éclairé
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par défaut
    et vérifie dans le Bios que ton port parallèle est bien bi-directionnel, ce n'est pas toujours le cas.

  11. #11
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tut
    et vérifie dans le Bios que ton port parallèle est bien bi-directionnel, ce n'est pas toujours le cas.
    ça c'est bon, il est bien bidirectionnel. Le câble aussi.

    Sinon, j'ai une erreur que je ne parviens pas à corriger:
    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
    m_hFile = CreateFile(...);				
    if (m_hFile==INVALID_HANDLE_VALUE)
    {
    	MessageBox("INVALID_HANDLE_VALUE");
    	return;
    }
    if (0==WriteFile(m_hFile,...))
    {
         MessageBox("cannot write");
    }
    [...]
    COMMTIMEOUTS cto;
    cto.ReadIntervalTimeout = 20000;
    cto.ReadTotalTimeoutMultiplier = 0;
    cto.ReadTotalTimeoutConstant = 0;
    cto.WriteTotalTimeoutMultiplier = 0;
    cto.WriteTotalTimeoutConstant = 0;
    DWORD toto = GetLastError();  //->toto=0
    SetCommTimeouts(m_hFile, &cto);
    toto = GetLastError();//->toto=87:the parameter is incorrect
    Donc, visiblement, un des paramètres de SetCommTimeouts est incorrect. Cependant, m_hFile est bon car:
    1/ m_hFile!=INVALID_HANDLE_VALUE
    2/ le WriteFile fonctionne parfaitement
    Donc c'est mon COMMTIMEOUTS qui doit être erroné, mais là, je ne vois pas.

    Une idée?

  12. #12
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    SetCommTimeouts() te renvoie FALSE ?

  13. #13
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    SetCommTimeouts() te renvoie FALSE ?
    oui

    P.S: je ne trouve pas beaucoup de chose sur le sujet sur la toile. J'ai trouvé un sujet qui en parle: http://www.dotnetmonster.com/Uwe/For...-LPT-port-in-C
    mais j'ai beaucoup de mal à tout comprendre, surtout qu'il parle de Parité/ByteSize/StopBits, je croyais que c'était pour le port série ça...

  14. #14
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    erf, je n'y comprends plus rien. Maintenant, SetCommTimeouts me renvoie l'erreur:"Fonction Incorrecte"!!! Alors que je n'ai pas modifé mon code!!
    Je ne comprends vraiment pas...

  15. #15
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    J'ai essayé sans les timeouts, et j'obtiens un comportement des plus étranges:

    - parfois je parviens à lire ce qui arrive sur LPT1
    - parfois j'ai une "unknown i/o error"
    - parfois j'ai l'erreur: "ne peux pas accéder au fichier LPT1"

    J'ai également essayé avec CFile.Open(), et ça marchait presque...

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. [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
  3. Port parallèle et ou logique
    Par declencher dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2004, 19h02
  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