为什么Zebra QLn220打印机在发送更新某些设置的命令后会忽略发送给它的前几个命令?

我正在向Zebra QLn220发送命令,以便它(自然地)打印标签。 不过,我也有代码为某些打印机设置分配值,例如:

const string quote = "\""; string keepPrinterOn = string.Format("! U1 setvar {0}power.dtr_power_off{0} {0}off{0}", quote); string advanceToBlackBar = string.Format("! U1 setvar {0}media.sense_mode{0} {0}bar{0}", quote); string advanceToGap = string.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); } 

这有效 – 在运行了检查了radbtnBar的代码之后,这些设置现在(通过在Zebra Setup Utilities应用程序中运行“ !U1 getvar”allcv“ ”看到):

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

问题是,在通过上面的代码设置这些值,然后尝试打印标签(经过至少20秒后,并且测试时间超过一分钟)之后,第一次尝试无声地打印标签失败(没有错误的消息,只是没有打印)。 在第三次尝试时,标签打印出来。 为什么设置这些值会导致打印机暂时“失聪”,并且在编程应用这些设置之后,我可以采取哪些措施将其恢复到清醒状态,以便立即打印?

一旦QLn220最终重新获得响应,它将继续在应用程序的后续执行中立即打印,没有延迟; 只有在发送这些命令(“power.dtr_power_off”和“media.sense_mode”)之后,打印机才会在一个赛季中被淘汰出局。 真正的斑马永远不会像这样的mule子一样顽固。

UPDATE

Banno的想法很明显(显然是将crlfs(“\ r \ n”)附加到命令来设置打印机变量)。

所以似乎发生的事情是这样的:

命令1被发送到打印机以设置val(没有crlf)。

命令2被发送到打印机设置另一个val(也没有crlf)

然后试图打印标签; 它没有打印。 然而,看到它确实有一个crlf,打印机似乎说,“哦,你终于给了我一个你欠我的crlfs!但你不是那么容易 – 你还欠我一个!”

打印标签的第二次尝试导致打印机实际上说:“好吧,那么,你已经支付了你的债务;从现在开始,我会听你发送的命令(只要你用它们终止它们)我很贪婪地渴望。“

更新2

有时它仍然无效(行为不一致); 我发现我必须“戳它”才能让它退出它的梦游; 请参阅我需要设置哪些Zebra QLn220设置(以及设置为“粘贴”的值[s])?

将“\ r \ n \”附加到每个命令