簡體   English   中英

為什么發送到Zebra QLn220打印機的CPCL代碼有效,而發送到Zebra QL220的相同代碼卻不起作用?

[英]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中所示),但是無論如何,打印該打印機還是可以按需進行的(按需要打印標簽,而不僅僅是在其上打印原始命令)! ?

更新2

注意:我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM