Pourquoi une imprimante Zebra QLn220 ignorerait-elle les premières commandes envoyées après lui avoir envoyé une commande pour mettre à jour certains parameters?

J’envoie des commandes à un Zebra QLn220 pour qu’il puisse imprimer des étiquettes (naturellement). J’ai aussi un code, cependant, qui atsortingbue des valeurs à certains parameters de l’imprimante, tels que:

const ssortingng quote = "\""; ssortingng keepPrinterOn = ssortingng.Format("! U1 setvar {0}power.dtr_power_off{0} {0}off{0}", quote); ssortingng advanceToBlackBar = ssortingng.Format("! U1 setvar {0}media.sense_mode{0} {0}bar{0}", quote); ssortingng advanceToGap = ssortingng.Format("! U1 setvar {0}media.sense_mode{0} {0}gap{0}", quote); PrintUtils.SendCommandToPrinter(keepPrinterOn); if (radbtnBar.Checked) { PrintUtils.SendCommandToPrinter(advanceToBlackBar); } else if (radbtnGap.Checked) { PrintUtils.SendCommandToPrinter(advanceToGap); } 

Cela fonctionne – après avoir exécuté ce code avec radbtnBar vérifié, ces parameters sont maintenant (comme indiqué dans ” ! U1 getvar” allcv “ ” dans l’application Zebra Setup Utilities):

 power.dtr_power_off : off , Choices: on,off media.sense_mode : bar , Choices: bar,gap 

Le problème est qu’après avoir défini ces valeurs à l’aide du code ci-dessus, puis tenté d’imprimer des étiquettes (après un délai d’au moins 20 secondes et après avoir testé plus d’une minute), les deux premières tentatives d’impression silencieuse d’une étiquette fail (il n’y a pas d’erreur msg, c’est juste qu’aucune impression n’a lieu). À la troisième tentative, l’étiquette est imprimée. Pourquoi définir ces valeurs provoque-t-il temporairement la «sourdine» de l’imprimante et puis-je faire quelque chose pour la remettre en éveil après l’application programmée de ces parameters afin qu’elle imprime immédiatement?

Une fois que le QLn220 a retrouvé sa réactivité, il continue d’imprimer immédiatement lors des exécutions ultérieures de l’application sans aucun délai; ce n’est qu’après l’envoi de ces commandes (“power.dtr_power_off” et “media.sense_mode”) que l’imprimante est sortie de son orbite pendant une saison. Un vrai zèbre ne serait jamais aussi têtu qu’un mulet comme celui-ci.

METTRE À JOUR

L’idée de Banno s’est avérée efficace, apparemment (en ajoutant crlfs (“\ r \ n”)) aux commandes permettant de définir les vars de l’imprimante.

Il semble donc que ce qui se passait ressemblait à ceci:

La commande 1 a été envoyée à l’imprimante pour définir un val (sans crlf).

La commande 2 a été envoyée à l’imprimante pour définir un autre val (également sans crlf)

Une étiquette a ensuite été essayée pour être imprimée; ça n’a pas été imprimé. Voyant qu’il y avait bien un fichier crlf, cependant, l’imprimeur sembla dire: “Oh, vous m’avez finalement donné un des fichiers crlfs que vous me devez! Mais vous ne vous en tirez pas si facilement, vous m’en devez toujours un!”

Une deuxième tentative d’impression d’une étiquette a amené l’imprimeur à dire en fait: «d’accord, alors vous avez payé votre dette crlf; à partir de maintenant, j’écoute les commandes que vous envoyez (tant que vous les terminez avec le mot crlf, j’ai tellement envie de le faire). ”

MISE À JOUR 2

Parfois, cela ne fonctionne toujours pas (comportement incohérent); J’ai trouvé que je devais “le pousser” pour le faire sortir de son somnambulisme; reportez-vous à la section Quels parameters du Zebra QLn220 dois-je définir (et à quelle valeur [s]) pour obtenir un paramètre à “coller”?

ajoute “\ r \ n \” à chaque commande