0

ユーザー設定 (選択したラベルのタイプ、および「キープ アライブ」メッセージを送信するかどうか) に基づいて、さまざまな 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では、プリンターがコマンドを受信して​​それに基づいて動作するのではなく、生のコマンドをラベルに印刷するだけです。QL220 ベルト プリンターである IOW は、コマンドをアクションまたはバーコードに変換する代わりに、次のようなものをラベルに直接印刷します。

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 を使用して "what language are you using" (getDeviceLang) コマンドを送信すると、"hybrid_xml_zpl" と応答しました。

4

1 に答える 1