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

本文关键字:命令 几个 打印机 QLn220 Zebra 更新 为什么 设置 | 更新日期: 2023-09-27 18:14:45

我正在向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后运行代码,这些设置现在(通过运行"!U1 getvar "allcv""在斑马设置实用程序应用程序):

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

问题是,在通过上面的代码设置这些值之后,然后尝试打印标签(在至少20秒之后,并且已经测试了超过一分钟),前几次打印标签的尝试静默失败(没有错误消息,只是没有打印发生)。第三次尝试时,标签打印出来。为什么设置这些值会导致打印机暂时"失聪",我是否可以做些什么来在程序化应用这些设置后将其摇回唤醒状态,使其立即打印?

一旦QLn220最终恢复响应,它将继续在应用程序的后续执行中立即打印,没有延迟;只有在发送了这些命令("电源。Dtr_power_off "answers"media.sense_mode")表示打印机离开运行轨道一段时间。真正的斑马绝不会像骡子这样固执。

更新

Banno的想法成功了,显然(在命令后面附加crlfs ("'r'n"))来设置打印机变量。

所以看起来发生的事情是这样的:

命令1发送给打印机设置一个val(没有crlf)。

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

然后尝试打印标签;它没有打印出来。然而,看到确实有一个卷轴,印刷工似乎在说:"哦,你终于把欠我的一个卷轴给了我!"但你不能这么轻易就脱身——你还欠我个人情呢!"

第二次尝试打印标签导致打印机说,实际上,"好吧,那么,你已经还清了你的债务;从现在起,我将听从你发出的命令(只要你用我如此渴望的crf终止它们)。"

更新2

有时它仍然不工作(不一致的行为);我发现我必须"戳它"才能让它停止梦游;请参阅我需要设置哪些Zebra QLn220设置(以及设置为什么值[s])才能获得"粘贴"设置?

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

在每条命令后添加"'r'n'"