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");
問題は、ラインプリントモードを使用する必要があるということです。