0

CPCLをZebraQL220ベルトプリンターに送信するために(ラベルモードではなく)ラインプリントモードを使用する必要があることに気づき、作業コードをリファクタリングしているところです(なぜすべてが同じ行に印刷されるのですか?私はこれにcrlfsを追加していますか?):

serialPort.Write("! 0 200 200 210 1\r\n"); 

serialPort.Write(string.Format("! U1 setvar {0} {1}", "device.languages", "line_print"));
serialPort.Write("Hallo die Welt\r\n\r\n"); //Bonjour le Monde --- Hola el Mundo --- Hallo die Welt

serialPort.Write("BARCODE-TEXT 7 0 5\r\n"); 
serialPort.Write(string.Format("BARCODE 128 1 1 50 150 130 {0}\r\n\r\n", barcode));
serialPort.Write("POSTFEED 120\r\n"); // empirical observation shows 120 is about the right amount of extra tape to expel after printing
serialPort.Write("PRINT\r\n");

これにより、バーコードとその下にある人間が読める番号(「バーコード」の値)が印刷されますが、「HallodieWelt」というテキストは印刷されません。なぜだめですか?各行の後にPrintを呼び出す必要がありますか、それとも... ???

アップデート

それでも、次のコードでバーコードのみが印刷されます(「HallodieWelt」ではありません)。

serialPort.Write("! 0 200 200 210 1\r\n");
serialPort.Write("! U1 SETLP 7 0 24\r\n"); 
serialPort.Write("Hallo die Welt\r\n\r\n"); 
serialPort.Write("BARCODE-TEXT 7 0 5\r\n"); 
serialPort.Write(string.Format("BARCODE 128 1 1 50 150 130 {0}\r\n\r\n", barcode));
serialPort.Write("POSTFEED 120\r\n");
serialPort.Write("PRINT\r\n");

更新2

これは機能します(ラベルモード):

serialPort.Write("! 0 200 200 210 1\r\n");
serialPort.Write("TEXT 4 0 30 40 Hallo die Welt\r\n\r\n"); //Bonjour le Monde --- Hola el Mundo --- Hallo die Welt
serialPort.Write("BARCODE-TEXT 7 0 5\r\n"); 
serialPort.Write(string.Format("BARCODE 128 1 1 50 150 130 {0}\r\n\r\n", barcode));
serialPort.Write("POSTFEED 120\r\n"); 
serialPort.Write("PRINT\r\n");

それは印刷します:

~~~~~~~~~~~~~~~~~~~~~~~
Hallo die Welt

<barcode as a barcode>
<barcode as a number>
~~~~~~~~~~~~~~~~~~~~~~~

...しかし、これは機能しません(ラインプリントモード):

serialPort.Write(string.Format("! U1 setvar {0} {1}", "device.languages", "line_print"));
serialPort.Write("! U1 SETLP 7 0 24\r\n");
serialPort.Write("Hallo die Welt\r\n\r\n");
serialPort.Write("! U1 BARCODE-TEXT 7 0 5\r\n");
serialPort.Write(string.Format("! U1 BARCODE 128 1 1 50 150 130 {0}\r\n\r\n", barcode));
serialPort.Write("! U1 SETLP 5 2 46"); 
serialPort.Write(barcode);
serialPort.Write("! U1 PRINT\r\n");

問題は、ラインプリントモードを使用する必要があるということです。

4

1 に答える 1

1

また、すべての SGD コマンド (この場合は setvar) の後に \r\n が必要です。

そのはず

! U1 setvar "device.languages" "line_print"\r\n

また、SETVAR コマンドの 2 つのパラメーターを二重引用符で囲む必要があります。

アップデート:

ところで、プリンタが line_print モードだからといって、CPCL コードを理解できないわけではありません。したがって、上記の例のコードは CPCL コードであり、単なるライン プリントではありません。TEXT を前に置くと、うまくいくはずです

于 2013-02-11T18:13:54.960 に答える