![](/img/trans.png)
[英]Why does the Zebra QL 220 printer shut off in the middle of my talking to it?
[英]Why would CPCL code sent to a Zebra QLn220 printer work, whereas the same code does NOT work when sent to a Zebra QL220?
根據用戶首選項(所選標簽的類型以及是否發送“保持活動”消息),將不同的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
QL220和QLn220之間關於CPCL協議是否有所更改,還是... ???
好吧,這很奇怪。 奇怪的是,我添加了以下代碼:
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的端口)。 當我使用Zebra Setup Utils向其發送“您正在使用哪種語言”(getDeviceLang)命令時,它回復為“ hybrid_xml_zpl”
混合zpl結合了CPCL和ZPL打印命令。
收據打印機(imz,em220等)最初是在工廠以行打印模式設置的。 一些較舊的QL220也是如此。 最好將它們設置為“混合”,並且應該沒有問題。
布倫特箭頭公司-斑馬ISV
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.