最近编写ZPL指令^BQ生成二维码,使用^FN指令获取到的数据打印,总是缺少实际数据的前三位,求高人指点!
具体代码如下:
^XA
^FX 添加此行以识别后面的变量FN1(FN1通过扫码枪获取)
^DFR:ZT610.ZPL^FS
^FX 设置打印浓度和标签宽度
^MD10^PW2000
^FX 使用BQ输出FN1的二维码
^FO120,10^BQN,2,7^FN1^FS
^FX 使用BQ输出FN1的文字
^FT125,210^A0N,55,55^FN1^FS
^XZ
^XA
^FX 回调模板
^XFR:ZT610.ZPL^FS
^FX 输出
^FN1^FS
^XZ
这是生成的二维码和文字样例,扫描二维码只有 56 两位
源于ChatGPT
根据您提供的代码,可以看出在第二个标签中使用了^XFR指令回调了模板,而这个模板中又使用了^FS指令输出变量^FN1。然而,这种使用方法可能会导致问题,因为在回调模板时,^FS指令的作用范围可能会发生改变,导致变量^FN1的值不正确。
为了避免这种问题,建议将变量值先存储在缓存区中,再在模板中使用缓存区中的值。具体做法如下:
^XA
^FX 添加此行以识别后面的变量FN1(FN1通过扫码枪获取)
^DFR:ZT610.ZPL^FS
^FX 设置打印浓度和标签宽度
^MD10^PW2000
^FX 使用BQ输出FN1的二维码
^FO120,10^BQN,2,7^FN1^FS
^FX 使用BQ输出FN1的文字
^FT125,210^A0N,55,55^FN1^FS
^XZ
^XA
^FX 存储变量FN1到缓存区
^XA
^FN1^FS
^XZ
^XA
^FX 回调模板
^XG:MYTEMPLATE^FS
^FX 输出
^FN1^FS
^XZ
在上述代码中,我们将变量^FN1的值存储在了缓存区中,以便在模板中使用。具体步骤如下:
在第一个标签中,将变量^FN1的值打印出来并以^FS指令结束,这样就将该值存储在了缓存区中。
在回调模板时,使用^XG指令调用模板,并在输出变量^FN1的位置使用^FN指令引用缓存区中的值,而非直接使用^FN1^FS指令输出变量值。
这样做的好处是,缓存区中存储的变量值不会受到^FS指令作用范围的影响,确保了变量值的正确性。