Reputation: 31
I need to generate a GS1-128 barcode using ZPL. It needs to include a check digit. I do not seem to get the check digit.
Here is my code:
^BCN,088,Y,Y,Y,D^FD(00)00123456000057763^FS
The first "Y" is saying to print the human readable along with the
barcode. The third "Y" is supposed to tell it to include a check digit.
I'm not seeing the check digit in the human readable, my scanner is not
displaying a check digit, so I'm assuming it is also not in the barcode?
Here is from the spec:
SSCC Barcode Structure (20 digits)
Application Identifier = (00)
Positions of SSCC barcode:
1 = Extension Digit (0-9 assigned by Vendor)
2 = 0 if mfg id # assigned by GS1 US;
1-9 if mfg id # assigned by another GS1 MO
3 thru 8 = 6-digit mfg id #
9 thru 17 = 9-digit serial id # -must be unique for one year
18 = Modulo 10 check character
Upvotes: 3
Views: 7568
Reputation: 1212
TLDR;
^BCN,088,Y,Y,,D
^FD(00)001234560000577630^FS
The third Y does include a Checkdigit, but not the one you want (ZPL Manual, p73):
Mod 103 check digit is always there. It cannot be turned on or off. Mod 10 and 103 appear together with [the third Y] turned on.
When you use D
, it will automatically add a checkdigit(ZPL Manual, p80):
The printer automatically determines if a check digit is required, calculate it, and print it.
But more importantly, it expects you to send 18 digits :
Parentheses and spaces can be in the field data. '00' application identifier, followed by 17 characters, followed by bogus check digit place holder.
It'll strip out the 18th digit and replace it in both the barcode and the human readable part.
https://www.zebra.com/content/dam/zebra/manuals/printers/common/programming/zpl-zbi2-pm-en.pdf
Upvotes: 2