[VisualC++] contrôler l'imprimante

contrôler l'imprimante [VisualC++] - C++ - Programmation

Marsh Posté le 11-08-2004 à 15:47:38    

Salut,
 
Je cherche une solution en C++ (de préférence API Win32 ou MFC, mais console DOS si pas possible autrement) pour contrôler l'imprimante.
J'aimerais pouvoir comander l'avance du papier par incrément. Pour la petite histoire, j'ai modifié une imprimante epson pour pouvoir y introduire des substrats rigides (du verre), mais maintenant l'alimentation n'est bien sûr pas automatique. Il faut donc que l'utilisateur introduise lui même le substrat.  
 
Ce que je voudrais pouvoir faire : pouvoir faire avancer ou reculer le substrat ligne par ligne (donc quelle commandes utiliser?)
 
Imprimer un motif directement depuis la position actuelle du substrat, donc bypasser la phase alimentation du papier...
 
Merci beaucoup

Reply

Marsh Posté le 11-08-2004 à 15:47:38   

Reply

Marsh Posté le 13-08-2004 à 11:52:19    

Mon topic ne rencontrant pas trop de succès, je vais essayer d'expliquer les choses plus clairement. J'espère que vous pourrez m'aider :
 
J'aimerais imprimer du texte, mais sans passer par la phase d'introduction du papier dans l'imprimante.
Idéalement, j'aimerais une fonction du genre
imprime_ligne("voici une ligne" )
qui imprime une le texte passé en argument, puis avance le papier d'une ligne. J'aimerais que l'imprimante ne se soucie pas de savoir si le papier est présent ou pas  
 
C'est d'assez bas niveau, et je pense qu'il faut bypasser le driver Windows. Faut-il directement écrire sur le port parallèle??
 
Merci d'avance de l'aide précieuse que vous pourrez me donner

Reply

Marsh Posté le 13-08-2004 à 15:41:00    

C'est pour imprimer des dessins, du texte ?
Pour que la détection du papier ne soit pas une gène, faudrait la bloquer.
 
Pour commander directement via le port l'imprimante, il faudrait connaître les codes de commandes de la machine ! C'est du PCL, du xyz ?
J'ai encore mon livret de la LX80 (à ruban) mais suis pas sûr que ça corresponde.
Y a-t-il commande de recul ? A vérifier.
 
Peut-être imprimer dans fichier et regarder les commandes que le pilote envoie à la machine pour récupérer les commandes pour les adapter ?
Fait essai en imprimante la page courante dans ficheir (4,8Mo). Au début, y a  
1B40 1B40   (ESC @   ESC @)
1B285208000052454D4F544531504D02000000534E0300000001  (ESC "(" )
1B000000  (ESC 0)
1B284701   (ESC "(" )
1B, c'est ESCape.
 
Faudrait que je retrouve ma table PCL de HP Laserjet II pr voir si ça ressemble.
ESC @ c'est "réinitialisation", ESC "(" existait pas pour vieille LX80...
 
EDIT : plus loin, y a 1B5501 donc ESC "U1" qui est Activation du mode unidirectionnel permanent (pour ne pas écrire dans chaque sens de déplacement du chariot, uniquement gche -> drte))


Message édité par Carbon_14 le 13-08-2004 à 15:45:37
Reply

Marsh Posté le 14-08-2004 à 11:44:21    

Merci pour les infos. L'imprimante est une epson stylus. Je crois qu'epson utilise un language "ESC/SP2" ou un truc du genre. J'ai trouvé une liste de commandes pour ce language, il faut que j'essaye un peu.
Pour l'alimantation du papier, les quelques tests que j'ai faits montre que c'est une procédure interne à l'imprimante, et non envoyée depuis le PC, donc difficile, voire impossible à programmer. Par contre j'ai vu que si j'arrive à lui faire croire que le papier est introduit correctement, et qu'ensuite je bloque le capteur de présence du papier, alors elle ne s'inquiète plus de l'alimentation et repart d'où elle se trouve. Par contre, si je l'éteint la procédure est à reprendre...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed