6

我正在尝试使用以下 ZPL 和 Zebra ZP 450 打印机在标签上打印 Code 128 条形码:

^BY3^BCN,112,N^FO090,660^FD>;>89102100^FS

我希望条形码扫描为“9102100”。但是,当我扫描打印的条形码时,它显示为“910210”——截去最后一个数字。

如果我更改最后一位数字,它仍然会被切断。但是,如果我在末尾添加更多数字,例如“9102100357”,则条形码正确读取为“9102100357”。

为什么在这种特殊情况下我“丢失”了一个数字?

4

2 回答 2

12

块的>;内部^FD告诉代码 128 条码进入一个子集(在本例中为子集 C),它强制条码中的数据为数字对 (00 - 99)。任何未以数字对形式提供的数据都将被忽略。如果你把一个字母放在那里,它会忽略那对。在你的情况下9102100有奇数个数字,所以它忽略最后一个。例如,如果您添加另一个0,它将把所有字母放在条形码中。

;>条码放在子集 C 中的不是默认设置。子集 B 或是:>默认值,它将允许在条形码中编码任何字符。因此,您可以将 替换为;>:>或者完全删除;>,它会正确打印出来。

查看^BCZPL 编程手册中的文档以获取有关 Code 128 子集和数据验证的更多信息

于 2013-01-09T14:15:38.363 回答
0

请参阅ZPL 编程指南的第 92 页。

此问题可能已在固件更新中修复,请参见下文:

示例:这是一个将 mode 参数设置为 D* 的示例:

^XA
^PON
^LH0,0
^BY2,2.5,145
^FO218,343
^BCB,,Y,N,N,D
^FD(91)0005886>8(10)0000410549>8(99)05^FS
^XZ

D* — 尝试打印具有奇数个字符的最后一个应用程序标识符时,使用模式 D 打印 EAN128 条码时存在问题。该问题已在固件版本 V60.13.0.6 中得到修复。

于 2017-01-06T04:34:05.633 回答