Zebra 2824打印机正在将ZPL命令打印为文本

时间:2014-01-20 00:47:43

标签: java swing zebra-printers

我正在编写一个Java swing应用程序,用于打印标签以标记产品。 打印机是Zebra 2824 Plus,我通过串口发送ZPL2命令来打印我想要的标签。但是,我发送到打印机的命令将以文本形式打印。

这是连接到打印机并发送要打印的标签的代码。

serialPort = (SerialPort) portId.open(app, 2000);
outputStream = serialPort.getOutputStream();

dataOutputStream = new DataOutputStream(outputStream);
String command = "^XA^FO30,30^A0N,30,30^FDqwerty^FS^FO30,70^A0N,30,30^FDqwerty^FS^XZ";
byte[] data;
data = command.getBytes(StandardCharsets.US_ASCII);
dataOutputStream.write(data);

dataOutputStream.flush();
dataOutputStream.close();
serialPort.close();

结果是 ^XA^FO30,30^A0N,30,30^FDqwerty^FS^FO30,70^A0N,30,30^FDqwerty^FS^XZ

我在Windows上运行它,连接是通过串口连接的。

你能告诉我我做错了吗?

3 个答案:

答案 0 :(得分:0)

我不太了解java,但您描述的症状似乎表明打印作业是通过Windows驱动程序而不是直接通过端口。 (Windows可以写入斑马打印机。)

在VB中,我会从一个带有原始ZLP的临时文本文件中执行filecopy命令,并将该文本文件复制到该端口。 (换句话说,我将ZPL字符串保存到文件中,然后将该文件复制到串行端口)。我确信Java可以做类似的事情。

答案 1 :(得分:0)

打印机可能处于行式打印模式。在此模式下,不处理ZPL命令(和大多数其他命令),而是直接打印到标签。此模式对于生成可能具有可变长度的收据非常有用。

您可以通过向其发送以下命令将打印机重新置于ZPL模式:

! U1 setvar" device.languages" " ZPL"

[请注意,命令必须以换行符结束,或者" \ r \ n"在Java]

来源:ZPL Manual page 709

答案 2 :(得分:0)

找到答案和解决方案here

  • 通过USB连接线将打印机连接到桌面。打开Zebra Setup Utilities,选择您的打印机,然后点击“Open Printer with Printer”。

  • 输入以下任何命令,然后按Enter键(插入回车符),然后按顶部的“发送至打印机”按钮。

    • ! U1 setvar“device.languages”“ZPL”
    • ! U1 setvar“device.languages”“line_print”

注意:启用ZPL语言支持时,您必须使用~JC命令校准打印机。 (在校准之前,必须装入打印机介质并准备好送入标签。)

使用通信窗口在ZPL校准和保存参数命令后发送以下内容。

    ~jc^xa^jus^xz 

打印机将输送标签并校准标签长度以保存值。