1

これは、MotorolaMC3100ハンドヘルドで実行されているCE/CFアプリからZebraQL220ベルトプリンターで印刷されます(まだ醜いですが)。

public void PrintBarcode(string barcode, string UPC, string description, decimal listPrice)
{
    using (SerialPort serialPort = new SerialPort())
    {
        serialPort.BaudRate = 19200;
        serialPort.Handshake = Handshake.XOnXOff; 
        serialPort.DataBits = 8;
        serialPort.Parity = Parity.None;
        serialPort.StopBits = StopBits.One; // other choice is Two (see p. 14-21 in CPCL pdf)
        serialPort.PortName = "COM1:"; 

        serialPort.Open(); 

        Thread.Sleep(2500); // I don't know why this is needed, or if it really is...

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

        serialPort.Write("TEXT 4 0 30 40 Hola el Mundo\r\n"); //Bonjour le Monde --- Hola el Mundo --- Hallo die Welt
        serialPort.Write("TEXT 4 0 30 40 \r\n");

        serialPort.Write("BARCODE-TEXT 7 0 5\r\n"); 
        serialPort.Write(string.Format("BARCODE 128 1 1 50 150 10 {0}\r\n", barcode));
        serialPort.Write("TEXT 4 0 30 40\r\n");
        serialPort.Write("FORM\r\n");
        serialPort.Write("PRINT\r\n");

        serialPort.Close();
    }
}

...しかし、モッシュピットにいる半躁病の10代の若者のように、最後に印刷されたバーコードは実際には紙の最高点にあり、「HolaelMundo」と「FOIPM」のように見えます(どのようにそこに着く?!?)も。

CRLFを送信する方法ではない場合"TEXT 4 0 30 40\r\n"、何ですか?

アップデート

バーコードを印刷するために引数にタイプミスがあることに気づきました。これ:

    serialPort.Write(string.Format("BARCODE 128 1 1 50 150 10 {0}\r\n", barcode));

...これはこれであるはずです:

    serialPort.Write(string.Format("BARCODE 128 1 1 50 150 130 {0}\r\n", barcode));

...しかし、それを「修正」したとき(垂直方向の開始点を10から130に変更したとき)、印刷された結果は同じでした!フランス語すみませんが、ノースダコタ州はここで何をしているのですか?!?

更新2

気にしないでください。適切な場所に修正を追加すると、実際に機能します(「10」を「130」に変更)。今、私はそれを「スマート」にする必要があります。それは、前の印刷領域を考慮に入れ、常に開始点+前の印刷の高さより下の後続の行を印刷するという点です。

4

3 に答える 3

3

CPCLを直接プリンタに書き込んでいるように見えます。使用しているTEXTコマンドには、コマンドにx座標とy座標が含まれています。つまり、書き込んでいる「30」と「40」は、テキストの各行を常に座標30、40で印刷するようにプリンターに指示しています。印刷するテキストの後続の各行でこれらの座標を変更してみてください。私の知る限り、CPCLには「自動折り返し」機能がないため、テキストの各行に対して手動でこれを行う必要があります。

または、プリンタをラインプリントモードにすることもできます。このモードでは、プリンタは受信したテキストを単に印刷し、「\ r\n」を選択するとプリンタは次の行から印刷を開始します。次のコマンドをプリンタに送信することにより、ライン印刷モードを切り替えることができます。

!U1 setvar "device.languages""line_print"[ここに改行文字]

出典:CPCLマニュアル-http: //www.zebra.com/content/dam/zebra/manuals/en-us/printer/cpcl-pm-en.pdf

于 2013-02-11T15:55:02.240 に答える
1

原則として、System.Environment.Newlineの使用を検討してください

ただし、この場合、デバイス(Zebra QL220)がラインフィードに何を期待/必要としているかを確認する必要があるようです。

于 2013-02-08T23:19:03.633 に答える
1

Zebraプリンターへの書き込み方法はわかりませんが、次のようになります。

「テキストの開始」(TEXT 4 0 30 40)と「バーコードの開始」(BARCODE 128 1 1)のコードが表示されます。

「テキストの終わり」または「バーコードの終わり」のコードが必要ですか?

「次の行」のコードはどうですか?

于 2013-02-09T16:38:50.130 に答える