我正在使用EPL从Zebra打印机直接打印条形码(LP 2844更具体)。我遇到的问题是我无法控制条形码的物理长度。
例如,即使窄条宽度,宽条宽度和内容长度设置为相同,这两行代码也将打印2个不同长度的条形码。
B134,308,0,1,4,12,160,B,"00G38EX"
B136,540,0,1,4,12,160,B,"0086150"
我知道输入内容在这里很重要,但我不能弄清楚它是如何工作的。有没有办法设置条码的长度是固定的,或至少使其可控,即:给定一个已知的输入内容,我知道我应该期望的物理长度。
答案 0 :(得分:3)
你是对的 - 它对数据非常敏感。
Code 128有3个子字母。设置“A”包含所有ASCII控制代码,数字,多个符号和大写字母(00H..5FH)。设置“B”包含'printables`(符号,数字,双字母 - 20H..7FH)。代码“C”包含数字对(00..99)。
起始码选择要使用的字母表,并且可以通过适当插入START-A,START-B或START-C来切换使用中的设置。
可悲的是,固件不允许强制代码(根据文档),并通过分析要打印的字符串打印最短的条形码。
所以 - 在你的情况下,代码应该是 START-A / 0/0 / G / 3/8 / E / X / STOP = 7个数据元素 START-C / 00/86/15 / START-A / 0 / STOP = 5个数据元素
对于7个字符的数据,代码永远不会比第一个更长,也不会短于第二个代码(让我们不能进入控制字符的可能性......)
将选择哪一个取决于要打印的单个序列。我敢肯定它可以解决 - 两位数的序列需要1个额外元素,但可以节省1个; 4位数的成本为1但保存2 - 如果序列位于字符串的一端或另一端。
最好为最长的(全部alpha)编程并接受压缩作为奖励。