我正在尝试使用Zebra ZP 450打印机使用以下ZPL片在标签上打印Code 128条形码:
^BY3^BCN,112,N^FO090,660^FD>;>89102100^FS
我希望条形码扫描为"9102100"。然而,当我扫描打印的条形码时,它的读数是"910210"——去掉最后一个数字。
如果我改变最后一位数字,它仍然被切断。但是如果我在末尾加上更多的数字,例如:"9102100357",条形码正确读作"9102100357"。
为什么在这种特殊情况下我"丢失"了一个数字?
^FD
块中的>;
告诉代码128条形码进入一个子集(本例中为子集C),该子集强制条形码中的数据为数字对(00 - 99)。任何没有以数字对形式提供的数据都将被忽略。如果你在这里放一个字母,它会忽略这对。在你的例子中,9102100
有奇数个数字,所以它忽略了最后一个。例如,如果您添加另一个0
,它将把所有字母放在条形码中。
将条形码放入子集C的;>
不是默认值。子集B或:>
是默认的,它将允许在条形码中编码任何字符。因此,您可以将;>
替换为:>
,或者只是完全删除;>
,它将正确打印出来。
查看ZPL编程手册中的^BC
文档,了解有关Code 128子集和数据验证的更多信息
参见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。"