我使用EPL直接从Zebra打印机(更具体地说是LP 2844)打印条形码。我遇到的问题是我无法控制条形码的物理长度。
例如,即使窄条宽度、宽条宽度和内容长度设置为相同,这两行代码也将打印两个长度不同的条形码。
B134,308,0,1,4,12,160,B,"00G38EX"
B136,540,0,1,4,12,160,B,"0086150"
我知道输入内容在这里很重要,但我不能仅仅弄清楚它是如何工作的。有没有任何方法可以将条形码的长度设置为固定的,或者至少使其可控,即:给定已知的输入内容,我知道我应该期望的物理长度是多少。
你是对的-这是数据敏感的。
代码128有3个子字母。集合"A"包含所有ASCII控制码、数字、许多符号和大写字母(00H..5FH)。集合"B"包含"可打印文件"(符号、数字、两个大写字母-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。
最好编程时间尽可能长(所有字母),并接受压缩作为奖励。