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

Visual C++ Discussion :

Impression en UNICODE sur imprimante matricielle


Sujet :

Visual C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut Impression en UNICODE sur imprimante matricielle
    Bonjour,

    J'essaie d'imprimer sur une imprimante matricielle Epson LQ2090.

    Je suis arrivé au code 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
     
    		TCHAR* endLine = _T("\n\r");
    		TCHAR* txtLine = _T("Writing on printer test");
     
    		//Strats printing in a loop untill the count upto the GUI entered value.
    	   for (cnt =0; cnt<PrntCount; cnt++)
    	   {
    		DWORD m_dwJobNumber = StartDocPrinter(hPrinter,1,(LPBYTE)&DocInfo);
    		StartPagePrinter(hPrinter);
     
    		bRet = WritePrinter(hPrinter,txtLine,_tcslen(txtLine)*sizeof(TCHAR),&written);
    		bRet = WritePrinter(hPrinter,endLine,_tcslen(endLine)*sizeof(TCHAR),&written);
     
    		EndPagePrinter(hPrinter);
    		EndDocPrinter(hPrinter);
    		Sleep(1000); //Wait for 8 seconds
    	   }
     
    		ClosePrinter(hPrinter); //Closing the printer
    Config:
    Visual C++ 6.0 (vieux projet)
    Windows XP Pro
    Imprimante Epson LQ2090 matricielle
    Impression via port réseau
    Driver Epson LQ2090 officiel et à jour.

    Test:
    1) Code compilé en mode sans unicode (option _UNICODE dans les project setting
    2) Code compilé en mode avec option unicode

    Résultat:
    1) compile, et execution ok, impression ok. Pas de problème.
    2) compile, et execution ok, par contre pas d'impression:
    problème: les jobs ont l'air d'être envoyé à l'imprimante:
    - passe par le spooler windows
    - imprimante passe en busy
    - pas d'impression.

    Pour info:
    Le soft doit tourner en UNICODE (contrainte projet).

    Observation:
    Parfois, si après le test 2, je fais un LF(linefeed) sur le bouton de l'imprimante (action manuel), alors l'imprimante imprime ce que j'avais envoyé.
    J'ai l'impression que en UNICODE, le linefeed ne passe pas, comme si l'imprimante recevait la ligne, mais attendé le LF pour imprimer.

    Tout aide est la bienvenue, doc technique, faq. suis bloqué

    Merci

  2. #2
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    D'après la doc, WritePrinter attend une chaîne de BYTE. Ca ne devrait donc même pas marcher dans le second cas.

    Pourquoi ne transforme-tu pas la chaîne au moment de l'envoyer ? A moins d'avoir des caractères non latins à imprimer ? Mais même dans ce cas, je ne pense pas que ça puisse marcher, la LQ2090 n'a qu'un nombre limité de page de caractères.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    C'est exact mais le fait est que sur une imprimante d'une autre marque toujours matricielle, cela fonctionne. En fait je soupçonne l'autre imprimante de ne pas tenir compte des bytes vide lorsque j'utilise des caractères latin codé en unicode.

    Par exemple:
    En ascii, ca envoie 1 codé sur un octet: 0x31.
    En unicode ca envoie sur deux octet 0x3100.
    Et apparament l'Epson bloque sur le 00 là où d'autre imprimante ne bloque pas.

    A moins d'avoir des caractères non latins à imprimer ?
    C'est mon cas.

    J'ai regardé la doc de plusieurs constructeur et cela reste très obscur, même leur support technique n'a pas l'air de connaître/comprendre cette problématique.

    Merci pour ta réponse

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/11/2012, 13h41
  2. Impression sur une imprimante matricielle
    Par satmbal dans le forum BIRT
    Réponses: 5
    Dernier message: 17/09/2008, 09h03
  3. Impression sur Imprimante Matricielle
    Par Cambon dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/10/2007, 21h20
  4. Procédure pour impression sur imprimante matricielle
    Par snakers13 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/10/2006, 17h55

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