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

Windows Discussion :

Ecriture / Lecture sur le port parallèle


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Ecriture / Lecture sur le port parallèle
    Bonjour à tous

    Je dois développer une application permettant d'envoyer des commandes PJL (langage d'impression des imprimantes laser) et lisant les informations qui doivent revenir en retour et tout cela à travers le port LPT1.

    EN fait je dois lire le PAGECOUNT de l'imprimante. Actuellemnt je ne vois que cette possibilité mais si vous avez d'autres bonnes idées je suis preneur.

    Merci à tous

    Steeray

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut
    Si j'ai compris tu veut coder un petit programme pour communiquer avec le port LPT1, si c'est la cas tu devrait poster ton message dans la section du language approprié.

    Ci dessous un lien qui explique le fonctionnement du port parallèle LPT1
    http://www.progzone.free.fr/basniveau/portp/portp.htm

    Je sais pas si windows ne bloque pas le port LPT1, une fois j'avais fait un petit programme en turbo pascal et il a fallut que je démarre en mode DOS REEL pour faire marcher le tout. Ca doit être tout a fait possible de faire ça sous windows mais il y peut être une manip a faire....
    Peut être je me trompe ça fait un bon moment de cette histoire, je croi que c'était sous Windows NT4.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Donc après moultes recherches et différents retards dans les développements, j'ai trouvé les infos suivantes.
    J'ai le choix entre utiliser WinIO ou InpOut32 pour pouvoir envoyer des données vers le port parallèle.

    Actuellement je n'arrive pas à envoyer un fichier PCL/PJL vers l'imprimante
    Et pourtant je pense avoir tout fait comme il faut. Auriez vous une idée ?
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <stdlib.h>
    #include <windows.h>
    #include "winio.h"
    #include <time.h>
    #include <conio.h>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	char LszNbArgc[2];
    	bool bResult;
    	string LszPathFile;
    	ifstream FilePJL;
    	unsigned char Char1; 
    		
    	cout << "RECUPERATION INFORMATIONS IMPRIMANTE" << endl;
    	LszPathFile = argv[1];
    
    	cout << "LOADING WINIO ..." << endl;
    	bResult = InitializeWinIo();
    	if (bResult)
    	{
    		cout << "WINIO LOADED" << endl;		
    		FilePJL.open(LszPathFile.data(), ios_base::binary); 
    		FilePJL.seekg(0, ios_base::beg);
    		do{
    			FilePJL.read(reinterpret_cast<char*>(&Char1), 1);
    			_outp(888, Char1);
    			//SetPortVal(0x378, Char1, 1);
    		} while (!FilePJL.eof());
    		FilePJL.close();
    		
    		ShutdownWinIo();
    		cout << "WINIO UNLOADED" << endl;
    		cin>>LszNbArgc;
    		return 0;
    	}
    	else
    	{
    		cout<<"Error during initialization of WinIo."<<endl;
    		return -1;
    	}
    	cin>>LszNbArgc;
    }

  4. #4
    Blue_Strike
    Invité(e)
    Par défaut
    salut,
    j'ai qques fonction de lecture et ecriture que j'aimerai vs présenter :
    Fonctions pour lire ou écrire sur le port //:

    fonction entrée/sortie

    en fait sur le port parallele, on peut:
    - lire et écrire à l'adresse 0x37A (=890d)
    - que écrire à l'adresse 0x378 (=888d)
    - que lire à l'adresse 0x379 (=889d)

    //Lecture:
    unsigned short commande;
    commande=_inp(890); /* Registre de commande */
    donc on peut utiliser ce registre comme entrée

    //écriture:
    void ecritPRN(int bit)
    {
    _outp(888,bit);
    }
    et on peut utiliser ce registre comme sortie

    @+ Blue_Strike

    bon!
    tout d'abord les adresses que j'utilise sont en hexa or je les ai utilisé
    en décimal: (0x378)=(888)d et (0x379)h=(889)d et (0x37A)h=(890)d
    vous pouvez le vérifier sur la calculette de win.
    sinon
    la fonction ecritprn(int bit) permet d'écrire sur le adresse 0x378 correspondant aux 8 bits d'entrée/sorties
    du port parallele: donc si vous voulez mettre a un les bits DO et D1 par exemple
    vous devez écrire _inp(888,3) : 3 = 1 + 2
    je joins un tableau des signaux et de leurs points binaires.
    attention si vous voulez mettre à zéro un bit n'oubliez pas
    de laisser à un les autres bits qui étaient à un et à zéro ceux qui l'étaient et que vous ne voulez pas changer

    en ce qui concerne les librairies,ceux sont les fichiers :winio.* (4 au total) il faut les mettre dans le meme dossier que ton executable créé
    par le compilateur. vous devez compiler une fois d'abord et la seconde fois (si vous utilisez VB6 C++ par exemple) vous faites ajouter fichier au projet en mettant l'extention .lib et valider
    ensuite vous recompilez et certaines erreurs seront enlevées.et surtout laisser ces fichiers avec l'exec pour vos applications divers.
    ensuite les biblios qui sont dans le dossiers DLL il faut les mettre avec vos autres *.h (tous bien sur) c'est ce qui permet de dire à win xp laisse moi écrire sur ce port de m... :-)
    et il faut dans votre fichier source du code d'appeler en include pour le c/c++ le fichier"winio.h".
    voila je crois que j'ai tout dit sinon n'hésitez pas à me redemander des infos.

    Remarque : j'ai testé ces fonctions sous WinXP !
    @+ Blue_Strike
    Dernière modification par Eric Sigoillot ; 26/07/2006 à 21h37.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par steeray
    Actuellement je n'arrive pas à envoyer un fichier PCL/PJL vers l'imprimante
    C'est à dire ?
    Il y a une erreur ? Laquelle ?
    Sinon, merci de préciser ce qui se passe (ou pas).
    Un problème correctement exposé est résolu à 50%.
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  6. #6
    Blue_Strike
    Invité(e)
    Par défaut
    salut,
    non ! j'ai pas eu une erreur en compilant ce code, je veux juste dire que j'ai utilisé winXP pour le tester, et ça bien marché!

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par Blue_Strike
    salut,
    non ! j'ai pas eu une erreur en compilant ce code, je veux juste dire que j'ai utilisé winXP pour le tester, et ça bien marché!
    Alors si ça marche, cliques sur
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  8. #8
    Blue_Strike
    Invité(e)
    Par défaut
    re,
    désolé, mais j'ai pas trouvé ce bouton "resolu" pour y cliquer dessus!!

  9. #9
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557
    Par défaut
    C'est à l'auteur du message de mettre le tag et non aux participants du thread (ce qui est logique). A ce que j'ai pu lire, il n'indique nulle part qu'il a solutionné son problème
    Avant de poster, merci de consulter les règles du forum

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Ah, mince ! C'était un imposteur !
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  11. #11
    Blue_Strike
    Invité(e)
    Par défaut
    salut,
    David, j'espère que tu as bien compris l'efficacité du bouton "Résolu" et son mode de marche!!
    ++

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par Blue_Strike
    salut,
    David, j'espère que tu as bien compris l'efficacité du bouton "Résolu" et son mode de marche!!
    ++
    C'est malin.
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

Discussions similaires

  1. Ecriture et lecture sur un port serie
    Par douezz dans le forum VB.NET
    Réponses: 6
    Dernier message: 01/06/2011, 10h27
  2. Communication sur le port parallèle
    Par zekicker dans le forum MFC
    Réponses: 1
    Dernier message: 11/12/2005, 13h39
  3. Réponses: 1
    Dernier message: 29/11/2005, 10h10
  4. Comment écrire sur le port parallèle ?
    Par trax44 dans le forum Assembleur
    Réponses: 11
    Dernier message: 21/08/2005, 22h53
  5. [Kylix] Lecture sur le port série en C++
    Par MD Software dans le forum EDI
    Réponses: 1
    Dernier message: 08/05/2004, 12h52

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