Zebra存储格式 - 来自XML的[TAB]字符的QR

时间:2016-01-20 16:40:54

标签: zebra-printers

我们正处于Oracle ERP实施阶段,我的任务是重新设计我们的标签以使用新系统。我们的产品标签需要包含以[TAB]字符分隔的项目和批号编码的QR码。 Oracle将向打印机发送包含可变数据的XML文件,以便与打印机上存储的格式一起使用。

硬编码工作正常,我得到一个用'FOO [TAB] BAR'编码的QR:

^XA
^FO50,50
^BQN,2,10^FH^FDQA,FOO_09BAR^FS
^PQ1,0,1,Y
^XZ

当我在打印机上创建存储格式时会发生奇怪的事情:

^XA
^DFE:QR_TEST.ZPL
^MCY
^FO50,50
^BQN,2,10^FN1^FH^FDQA,$$QR_CODE$$^FS
^FO50,350
^AON,30,30^FN1^FD$$QR_CODE$$^FS
^XZ

并发送以下XML文件:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE labels SYSTEM "label.dtd">
<labels _FORMAT="QR_TEST.ZPL" _QUANTITY="1" _PRINTERNAME="" _JOBNAME="TEST">
<label>
<variable name="$$QR_CODE$$">FOO_09BAR</variable>
</label>
</labels>

有趣的是,没有文本字段定义,标签不会打印。添加文本字段后,标签会打印,但生成的QR代码会丢弃'FOO'并且只扫描'_09BAR'而文本字段会打印'FOO_09BAR'。

令人困惑的是,如果我将'_09'从$$ QR_CODE $$变量定义中删除,则文本字段按预期打印'FOOBAR'但QR码扫描为'BAR',因此无论出于何种原因QR正在删除数据的前三个字符。

我一直在追逐我的尾巴一天没有进展,所以我想知道是否有任何人在这里有更多的经验而不是我可以解决这个问题。

我的两个问题是:

  1. 为什么QR码会丢掉前三个字符?
  2. 如何使用可变数据在[...]代码中嵌入[TAB]字符 来自XML?

1 个答案:

答案 0 :(得分:1)

为了其他任何试图解决同样问题的人的利益,这是我到达的解决方案。不幸的是,Zebra的支持没有任何帮助,因为他们所能做的只是继续从我已经拥有的手册中发送页面。他们无法向我发送一个有效的例子。

解决方案涉及两件事:

  1. 选择Zebra称之为“8位字节模式”。设置模式,并在数据字段中设置指示要打印的字符数的参数。手册指出它被设置为Bxxxx,其中“xxxx =数据字符数由两个字节的BCD代码表示”。在实践中,有效的是一个格式为4位的整数,即26个字符使用B0026。
  2. 要知道的第二件事是传递的变量必须包含介于“^ FD”和“^ FS”之间的所有数据,包括参数。
  3. 打印机上存储的格式如下所示:

    itterations

    将以下XML文件发送到打印机:

    ^XA
    ^DFE:QR_TEST.ZPL
    ^MCY
    ^FO50,50
    ^BQN,2,10^FN1^FH^FD$$QR_CODE$$^FS
    ^XZ
    

    变量$$ QR_CODE $$分解为:

    • Q =纠错级别高
    • M =手动字符模式
    • B = 8位字节模式
    • 0007 =要遵循七个数据字符
    • FOO [TAB] BAR =要在QR码中编码的字符。请注意,[TAB]是一个 文字制表符,ASCII字符09

    提供变量值的SQL必须提供上述所有内容,但这非常简单。到目前为止,这已经完成了我迄今为止测试的项目和批号组合的完美工作,长度从10到25个字符不等。如果我遇到任何困难或学习任何新内容,我会更新这篇文章。