Je travaille sur un projet où nous devons utiliser une imprimante zébrée pour les étiquettes de code à barres. Nous utilisons C #, et nous allons bien sur le côté impression des objets, envoyant des chaînes ZPL brus à l'imprimante (à l'aide de winspool.drv).
Cependant, nous devons également lire depuis l'imprimante et pas de chance Là. P>
Nous devons obtenir le statut de l'imprimante, qui est la sortie de la commande zpl "~ hs", afin que nous puissions dire combien d'étiquettes sont en mémoire en attente d'être imprimées. L'Enumjobs () de Winspool.Drv ne propose que des travaux sur la bobine Windows et une fois qu'ils sont envoyés à l'imprimante, ils sont passés de cette liste. Mais cela ne signifie pas que l'étiquette a été imprimée, car l'imprimante dispose d'un capteur de pelage et n'imprime qu'une étiquette à la fois, nous sommes évidemment intéressés par l'envoi de lots d'étiquettes à l'imprimante. P>
J'ai essayé quelque chose comme (à l'aide des appels winspool.drv): p> mais je ne reçois rien sur l'appel ReadPrinter. Je ne sais même pas si c'est la bonne façon d'y aller. P> Quelqu'un a-t-il abordé cela avant? p> merci. p> p>
5 Réponses :
Il y a environ 15 ans, j'ai écrit un logiciel pour imprimer des imprimantes Zebra. P>
À l'époque où nous avons communiqué avec l'imprimante sur RS-232 (? Serial Serial), qui a bien fonctionné, toutes les informations sont revenues de l'imprimante de manière rapide et précise. P>
Récemment, je voudrais travailler avec Epson Tally Imprimantes et trouver les pilotes d'imprimante Windows maladroits et inefficaces. J'ai laissé tomber un niveau et communiqué directement avec l'imprimante via GDI et tout a fonctionné à ma satisfaction. P>
Je dis sortir du Moyen-Man, si vous déposez un niveau et communiquez directement avec l'imprimante, plutôt que de communiquer via des pilotes d'imprimante Windows, vous aurez plus de succès. P>
J'espère que cela aide, p>
Je suis confronté au même problème. Avez-vous déjà géré quelque chose sur ce sujet?
Ax Perez Parra Castro, c'est comme ça que je l'ai fait: P>
- Mettez la classe RawPrinterHelper à partir d'ici -MUne imprimante (Zebra 2030) ne prend pas en charge ZPL , aussi autant que je sache que le seul moyen est d'envoyer unicode à celui-ci p> -J'ai fait une liste de caractères dont j'ai besoin, par exemple p> (obtenir ces valeurs INT de en.wikipedia.org/wiki/asciii)< -Commente la commande - par exemple -Send la commande SB.Append (ESC + ENQ + CONTERT.TOCHAR (7) .TOSTRING ()); CODE> (à partir du manuel de l'imprimante, la commande
RAWPRINTRINTHELER.SENDTRINGTROPTERIANTER (PRINTNAME, SB.TOSTRING ()); CODE> (ImprimerName dans mon cas est "Zebra TTP 2030") P> P >
@Andreasniedermair C'était il y a quelques années, alors je ne me souviens pas des détails. S'il vous plaît voir si ce projet expérimental aide Dropbox.com/s/2H6GJ0O08EKSBXU/PRINTLABLE .zip? dl = 0
ReadPrinter code> ne vous aidera pas dans cette situation. Il relirea le travail d'impression que vous avez soumis à l'imprimante et non à la réponse de l'imprimante. Toutefois, pour des raisons d'exhaustivité: Afin d'utiliser
ReadPrinter code>, vous devez ouvrir l'imprimante à nouveau em>, à l'aide de la syntaxe combinée "Nom de l'imprimante - ID de travail":
OpenPrinter("Zebra,Job 12345", ...);
ReadPrinter(hPrinter, ...);
Où sont les WrardFile CODE> et
READFILE CODE> Situé - je ne pouvais pas les trouver dans winspool.drv i> (voir
Êtes-vous sûr que vous ne pouvez pas lire des données avec .readprinter code> ?? msdn.microsoft.com/fr -US / Bibliothèque / Windows / Bureau / ... dit: "La fonction ReadPrinter récupère les données de l'imprimante spécifiée."
@Andreasniedermair YES, il récupère des données de l'imprimante, mais il s'agit des données que vous mettez dans cette imprimante vous-même (votre imprimante), et non l'imprimante de données peut générer en réponse à la version imprimée. WrardFile CODE> et
READFILE CODE> Sont des fonctions Windows d'usage général qui fonctionnent sur de nombreux objets différents, y compris des imprimantes, elles sont dans kernel32.dll.
Merci pour votre contribution. Donc, vous dites essentiellement que avec winspool.drv i> Il n'y a aucune chance de lire une réponse, mais il faut revenir à la base kernel32.dll i> (qui est la vanille USB sans aucun conducteur)?
@Andreasniedermair C'est aussi autant que je sache (vous pouvez également consulter le Question liée de la mine). Il y a un conducteur impliqué cependant, car pour l'utiliser, vous devez installer l'imprimante correctement, ce qui nécessite un conducteur.
Si vous avez la chance d'utiliser sinon il y a une solution disponible (c'est vb.net) A> (mais je ne peux pas dire si cela fonctionne avec zpl / epl / digitalprint /...- imprimantes) qui utilise kernel32.dll code> et de quitter le pilote USB-pilote-lié
winspool.srv code> Vous pouvez utiliser cette approche vanilla:
getPrinter code>
avec imprimante_info_2 code>.
Il y a aussi une traduction sur pinvoke.net disponible . P> < / p>
Hmmm! comme solution qui n'est plus disponible. Type typique de Microsoft!
J'ai utilisé la communication TCP / IP avec C ++ et j'ai pu répondre à partir du moteur d'impression. p>