根据用户偏好(所选标签的类型,以及是否发送"保持活动"消息),将不同的CPCL命令从手持设备发送到Zebra QL [n] 220带式打印机。这段代码:
const string quote = "\"";
string keepPrinterOn = string.Format("! U1 setvar {0}power.dtr_power_off{0} {0}off{0}", quote);
string shutPrinterOff = string.Format("! U1 setvar {0}power.dtr_power_off{0} {0}on{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);
...适用于(较新的)QLn220打印机,但在(较旧的)QL220上,而不是接收命令并对其进行操作的打印机,它只是将原始命令打印到标签上。 IOW,QL220皮带打印机,而不是将命令转换为动作或条形码,它直接在标签上打印这样的东西:
0 200 200 241 1
RIGHT
TEXT 4 3 0, 0 0.75
LEFT
TEXT 5 0 0 90 DRPEPPER (7X2) = 14
CENTER
BARCODE UPCA 1 1 50 0 137 054900000295
FORM
PRINT
对于CPCL协议,QL220和QLn220之间有什么变化,或者...... ???
string getDeviceLang = string.Format("! U1 getvar {0}device.languages{0}", quote);
string setDeviceLangZPL = string.Format("! U1 setvar {0}device.languages{0} {0}ZPL{0}", quote);
. . .
String deviceLanguage = PrintUtils.GetSettingFromPrinter(getDeviceLang);
MessageBox.Show(deviceLanguage);
if (deviceLanguage.Equals("line_print"))
{
PrintUtils.SendCommandToPrinter(setDeviceLangZPL);
}
...虽然对GetSettingFromPrinter()的调用返回一个空字符串(如MessageBox.Show中所示),但是打印那里的东西仍然按照需要工作(它根据需要打印标签,而不是仅仅打印原始命令他们)!?
注意:我的QLn220 Zebra打印机 有一个usb端口(较旧的QL220,导致问题的那个,没有)。当我发送它时,您正在使用哪种语言" (getDeviceLang)命令使用Zebra Setup Utils,它回复了," hybrid_xml_zpl"
答案 0 :(得分:2)
Hybrid zpl结合了CPCL和ZPL打印命令。
收据打印机(imz,em220等)最初是在工厂中以行打印模式设置的。一些较旧的QL220也是如此。最好将它们设置为Hybrid,你应该没有问题。
布伦特 Arrowhead Corp - Zebra ISV