如何仅使用原始ZPL在Code128条形码中编码TAB字符



过去,我们使用ZPL创建Code39条形码,中间使用类似于以下内容的TAB字符编码:

*USERNAME$IPASSWORD*

中间的$I被我们使用的条形码扫描仪翻译成TAB。

现在我们需要做同样的事情,但使用Code128。使用Code39,所有文本都需要大写(除非使用支持小写字母的Code39Extended(。由于将要编码的一些数据将是小写的,因此我们需要对大多数条形码使用Code128B,切换到中间的Code128A对TAB字符进行编码,然后返回到Code128B对最后部分进行编码。

透过";ZPL II编程指南";,它应该像一样简单

>:username>7{TAB}>6PA55w0rd

>:在开始时将子集设置为B;7将子集改变为A;6将子集改回B。我遇到的问题(经过近一周的搜索仍未找到解决方案(是:如何仅使用文本对TAB字符进行编码?

在字段数据之前立即使用^FH(字段十六进制编码(命令。基于您的示例:

^FH_^FD>:username>7_09>6PA55w0rd^FS

其中下划线"_"用作转义符,09是tab的十六进制值。

还要注意,如果所选的转义符出现在用户名或密码中,您也需要对其进行转义。

我尝试了Mark Warren的建议,但不幸的是,它没有起作用。然而,它确实让我回顾了ZPL II编程指南,我发现了以下内容,我以前忽略了这些内容:

Code 128, Subsets A and C are programmed in pairs of digits, 00 to 99, in the field data string.
...
In Subset A, each pair of digits results in a single character being encoded in the bar code...

因此,由于73相当于子集a中的TAB,我尝试了以下方法:

>:username>773>6PA55w0rd

它成功了!

最新更新