12
votes

Statut de lecture de l'imprimante Zebra

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à.

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.

J'ai essayé quelque chose comme (à l'aide des appels winspool.drv): xxx

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.

Quelqu'un a-t-il abordé cela avant?

merci.


0 commentaires

5 Réponses :


0
votes

Il y a environ 15 ans, j'ai écrit un logiciel pour imprimer des imprimantes Zebra.

À 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.

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.

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.

J'espère que cela aide,


0 commentaires

3
votes

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:

- Mettez la classe RawPrinterHelper à partir d'ici http://support.microsoft.com/kb/322091

-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

-J'ai fait une liste de caractères dont j'ai besoin, par exemple xxx

(obtenir ces valeurs INT de en.wikipedia.org/wiki/asciii)<

-Commente la commande - par exemple SB.Append (ESC + ENQ + CONTERT.TOCHAR (7) .TOSTRING ()); (à partir du manuel de l'imprimante, la commande <7> doit obtenir la version du micrologiciel)

-Send la commande RAWPRINTRINTHELER.SENDTRINGTROPTERIANTER (PRINTNAME, SB.TOSTRING ()); (ImprimerName dans mon cas est "Zebra TTP 2030")


1 commentaires

@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



1
votes

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, ...);


5 commentaires

Où sont les WrardFile et READFILE Situé - je ne pouvais pas les trouver dans winspool.drv (voir msdn.microsoft.com/en-us/library/windows/desktop/ ... )


Êtes-vous sûr que vous ne pouvez pas lire des données avec .readprinter ?? 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 et READFILE 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 Il n'y a aucune chance de lire une réponse, mais il faut revenir à la base kernel32.dll (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.



0
votes

Si vous avez la chance d'utiliser kernel32.dll et de quitter le pilote USB-pilote-lié winspool.srv Vous pouvez utiliser cette approche vanilla: xxx

sinon il y a une solution disponible (c'est vb.net) (mais je ne peux pas dire si cela fonctionne avec zpl / epl / digitalprint /...- imprimantes) qui utilise getPrinter avec imprimante_info_2 .
Il y a aussi une traduction sur pinvoke.net disponible . < / p>


1 commentaires

Hmmm! comme solution qui n'est plus disponible. Type typique de Microsoft!



0
votes

J'ai utilisé la communication TCP / IP avec C ++ et j'ai pu répondre à partir du moteur d'impression.


0 commentaires