2016-01-20 57 views
0

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

硬编码工作得很好,我得到一个QR与 'FOO [TAB] BAR' 编码:

^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 

:当我创建的打印机上存储格式

^XA 
^FO50,50 
^BQN,2,10^FH^FDQA,FOO_09BAR^FS 
^PQ1,0,1,Y 
^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',并在文本字段打印'FOO_09BAR'时仅扫描'_09BAR'。

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

我一直追逐我的尾巴在这一天没有进步,所以我想知道是否有任何人在这里比我更能体会到这个问题。

我的两个问题是:

  1. 为什么QR码下探的前三个字符?
  2. 如何使用XML中的变量数据 将[TAB]字符嵌入到QR代码中?
+0

我没有支持XML的Zebra,但我建议'QR_CODE'中的下划线可能会引起混淆。我想提出的另一个建议是将'FOO'和'BAR'作为两个单独的字段并将标签插入到标签格式中。 – Magoo

+0

我猜测变量名中的下划线不是问题,因为大多数传递给我们标签的变量名都包含下划线。这只是QR给我的问题。尽管如此,值得一试。我以前曾尝试将两个变量放入同一个标签字段中,但未取得成功。 Zebra需要将变量名称与字段号相关联,例如,^FN1。我们无法将字段编号与两个xml变量相关联,或者无法在同一字段中使用两个字段编号。 –

+0

所以'^ BQN,2,10^FN1^FH^FDQA,$$ FOO_PART $$ _ 09 $$ BAR_PART $$^FS'不能治愈吗?对不起 - 我没有支持XML的打印机,所以我无法实验...... :( – Magoo

回答

0

为了其他人试图解决同样问题的好处,这里是我到达的解决方案。不幸的是,Zebra的支持毫无帮助,因为他们所能做的就是不断地从我已有的手册中发送页面。他们无法给我一个工作的例子。

该解决方案包括两个部分:

  1. 选择什么斑马所谓的“8位字节模式”。模式已设置,并且在数据字段中设置了指示要打印的字符数的参数。手册规定它被设置为Bxxxx,其中“xxxx =数据字符数由两个字节的BCD码表示”。实际上,作品是一个格式为4位数的整数,即26个字符使用B0026。
  2. 第二件要知道的事情是,传递的变量必须包含落在“^ FD”和“^ FS”之间的所有数据,包括参数。

存储在打印机上的格式如下:

^XA 
^DFE:QR_TEST.ZPL 
^MCY 
^FO50,50 
^BQN,2,10^FN1^FH^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$$">QM,B0007FOO[TAB]BAR</variable> 
</label> 
</labels> 

变量$$ QR_CODE $$分解为:

  • Q =纠错等级高
  • M =手册字符模式
  • B = 8位字节模式
  • 0007 =七数据字符跟随
  • FOO [TAB] BAR =汉字在QR码进行编码。注意,[TAB]是 字面制表符,ASCII字符09

提供变量值必须提供所有上述的SQL,但是这是非常简单的。到目前为止,这已经完美地结合了我目前测试的物品和批号的组合,长度从10到25个字符。如果我遇到任何困难或学习新东西,我会更新这篇文章。