GS1-128 barcode parsing - barcode

Scanner Model :- Motorola- DS4208-HC
We need to parse the GS1-128 barcode. We know they are going to use GTIN(01), lot number(10), Expiration date(17), serial number (21).
Input String:- (01)07612345678900(17)100503(10)AC3453G3(21)455777
The problem is that barcode reader outputs a string, the format is like this:
01076123456789001710050310AC3453G321455777
Since there is not a separator and both serial number and lot number are a variable length according to GS1 standard, we have trouble to identify the segments.
There should be a FNC1 character at the end of a variable-length field that is not filled to maximum; so that FNC1 will appear between the G3 and the 21. what I have read is NC1 is invisible to humans but can be detected by scanners and will be reproduced in the string reported by the scanner. Simply send the string directly to a text file and examine the text with a hex reader. The FNC1 should be obvious. But we are still not able to read FNC1 in the reader.

Motorola Solutions Enterprise Business has been acquired by Zebra Technologies, so you can find support and developer forums on Zebra website Launchpad.
DS4208-HC support is available here. However seems that most of the documentation/software are only available under the model DS4208 support page
To configure the scanner you can use the 123Scan2 utility or the Scanner User Guide where you can find the configuration barcodes to enable/disable GS1 decoding (page 9-27).
Discalimer: I work for Zebra Technologies.

Related

Prove separation method of GS1 structured datamatrix

I work with barcodes professionally so usually dive fairly deep into the specs.
But I have one thing that I have not been able to do so far. A datamatrix GS1 structured code may be separated by FNC1 or GS. The most common in professional label software is FNC1.
Two versions of the same code is below, encoding GS1 structure (01)03041094787443(21)5Qbag!(93)Zjqw
My question is to prove which separator is used, preferably using code (python or other, that's not very important).
I have tried using the free version of BCTester, but as specification goes, I get "GS" (0x1d) returned for both versions. Every mobile scanner same result, or no technical information at all. Data scans the same for both.
FNC formatted
GS formatted (created by zintQt)

How to read a specific prefix information from gs1 barcode, with scanner?

I am working with products that contains gs1 barcodes where are many application identrifiers (AI) or prefix, like (01)....(17).....(10).... . The scanner I 've got its called honeywell ms5145 and when I scann the barcode it prints as output the numbers of (01) identifier and ends before the AI (17). After a bit of searching I found some configuration barcodes where one of them is for usb full speed. When I scan this config and after that the barcode of the product the output was defferent and it was printing all the information of the barcode from (01) to (10). The (10) application identifier is for batch lot numbers and thats I want to scan. For example lets say that the barcode in one product is (01)98923424(17)99933333(10)111111B. If I scan without the usb full speed config the output will be 98923424 which is the contex of the (10) application identifier and if I scan with the config of usb full speed the output will be 9892342499933333111111B,without of course the AI.My question is, is there any way without any software configuration to extract only the batch lot number of the gs1 barcode. Genneraly is it possible to extract what ever application identifier I want with one scan ?
Notice that valid GS1 codes must contain 01 identifier, and must not repeat same identifier.
If you have a GS1 structured code like (01)12345678901238(17)231220(10)987654 you most likely scan everything.
But, your scanner can be configured to manipulate the data using the MetroSet2 software. Look at data formatting.
I have not tried it since I do not have said scanner, but typically formatting is some variant of substring. This will work if the barcodes your work with have same length. GS1 structures may switch order though, this will cause your substring to be incorrect.
An alternative could be scanners that are programmable in Javascript such as those from Code Corporation I am not affiliated with CodeCorp in any way, but work with barcodes)

Royal Mail CMDM Barcode

I am using BarTender to design a set of labels to print to ZPL printers. One of my requirements is for a Royal Mail Mailmark label which uses the CMDM Barcode.
We output to file using alias values in the label fields.
We then run an application which swaps out the alias values and replaces them with the database values we actually want to print.
The issue is when I open label designs previously used to create the template files, the output (which previously was in simple text form) has now been outputted into a DGR....GRF format. (Please see below)
Unfortunately the CMDM barcode on BarTender is designed so that I can't just use an alias. That is my understanding anyway.
^FT407,1137
^A0B,28,34^FD*ship_to_zip^FS
^FT659,1148
^A0B,25,31^FDOur Reference ^FS
^FT564,1148
^A0B,25,28^FDCustomer Reference^FS
^FT595,1148
^A0B,25,28^FD*po_nbr^FS
^FT697,1148
^A0B,25,28^FD*distro_nbr^FS
^FO553,300
^BY2^BCB,124,N,N^FD>:*carton_nbr^FS
^FO28,72
^XGR:SSGFX000.GRF,1,1^FS
^ISR:SS_TEMP.GRF,N^XZ
~DGR:SSGFX001.GRF,1352,13,:Z64:eJydk9ERBCEMQtMB/XdJBxzE3D93ruP6nDHBoMDvjYBEDoZqYeSF8TiCSqC7vD2IEvK5Z3cNTkRqZ2phnM4zKyZbSIic0YprcIAMLrpqUHQSV8UOUo/dij1dBTGXCaT1oAIrdEp6Kbeig/jlCCZNC7H3Sk6U4ADMEV3+TdrAXoxLjRL4HoUjjFqIOM+2/i2k7PEY++/A+fTd2cKz+ElVCTN7XVdqC/b1pK4FFeRlnNT3agv4p30AH1GDtw==:D4A2
^XA
^ILR:SS_TEMP.GRF^FS
^FO242,308
^XGR:SSGFX001.GRF,1,1^FS
^PQ1,0,1,Y
^XZ
Has anyone come across this problem or know of a ZPL command I can use for this type of Barcode?
The main issue is Royal Mail want the Latch to C40 at the beginning of the barcode. When I print a standard 2D DataMatrix barcode, this latch to C40 code appears in the middle of the code.
Just need to know if I can move it to the beginning of the code.
Thanks
The ZPL datamatrix command does not support manually encoding the code words, which is what you need to force a latch to C40. But you can use BarTender to get around this. (I am not associated with Seagull Scientific, but my clients often use it.)
Instead of programmatically modifying the BT format file directly, you should be generating a data file that provides the field data for the label. BarTender calls this "data file integration".
See this video for more information: https://support.seagullscientific.com/hc/en-us/articles/227353867-Print-Document-Using-a-Data-File-Integration-Video-6-31-

Does Ionic 3 Barcode Scanning support GS1-128 barcode format?

I am currently making an application, with the use of Ionic 3, that can scan GS1-128 barcode format. I tested several barcodes, it worked. But, in GS1-128 format, parenthesis are removed.
I hope there's someone to help. Thank you!
If you mean the parenthesis at the start of the barcode, they are never encoded. They're present in the human-readable part under the barcode so humans can see the AI quickly. But they are not part of the GS1-128 barcode -- unless they're used in the payload after the AI (and that's pretty rare, I've found). What you should be looking for (when you scan the barcode) is the FNC1 code that defines the next characters as an AI. See section 5.4 of the GS1 manual for code128 barcode details, and section 4.15 for the Human readable part. Specifically, rule 3:
Rule 3. Parentheses SHALL surround AIs in HRI [Human readable interpretation] but are not encoded in the GS1 AIDC [automatic identification and data capture] data carrier.
You'll need to look up the AI in a table (there's one in section 3.2) to see how long it should be and if additional data follows (like an expiration date) before you can pull out the actual data.

Choosing a character encoding for QR Codes

I'm building an application which will have the ability to generate QR Codes including arbitrary text data. However, this poses a challenge: I'm expecting users to include non-ASCII characters such as á or ö.
From what I've gathered, the default for QR Codes is ISO-8859-1, but UTF-8 seems to be a common choice (and accepts a wider range of characters, such as Arabic or Hebrew characters that wouldn't be shown in ISO-8859-1).
However, the question I've linked doesn't answer a vital question for me - can I expect most real world QR code readers (e.g., smartphones or any commonly used tools for QR reading) to reliably read QR codes with UTF-8 encoding? Is it safer to use ISO-8859-1 instead? Or should I just assume that including non-ASCII characters in QR Codes is a recipe for failure?
Most scanners use heuristics to detect character encoding, regardless of whether the default encoding is used (ISO-8859-1) or some other encoding (like UTF-8) is specified via an ECI extension. And these heuristics may fail in some conditions. You have to test your QR codes under the most probable scanners that will read your codes to figure out where there are fewer errors: with ISO-8859-1 or with UTF-8 and ECI. Just remember to not use a QR generator that does not include ECI in case of UTF-8 – in this case the QR codes generated would not be compliant to the standard.
Although ISO-8859-1 is default encoding for QR codes, this became so only after 2005 standard update. Earlier version of the standard, published in 2000 (ISO/IEC 18004:2000), did specify 8-bit Latin/Kana character set in accordance with JIS X 0201 (JIS8 also known as ISO-2022-JP) as default encoding for 8-bit mode.
As you know, there are 4 modes of storing text in a QR code: (1) numeric, (2) alphanumeric, (3) 8-bit, and (4) Kanji. So, QR code standard does not inherently support UTF-8. To use UTF-8 encoding (instead of the default “ISO-8859-1” or “JIS8”) in the 8-bit string, the implementation has to insert an ECI (Extended Channel Interpretations) before that string. ECI is an optional, additional feature for a QR Code, but it was defined in earliest QR code standard at least in 2000. ECI enables data encoding using character sets other than the default. It also enables other data interpretations (e.g. compacted data using defined compression schemes) or other industry-specific requirements to be encoded. The ECI protocol is defined in a specification developed by AIM, Inc, and is not available for free but can be purchased at $50 at https://www.aimglobal.org/technical-symbology.html
Unfortunately, not all QR scanners can handle the ECI protocol, even in such a basic thing as changing default encoding to UTF-8. Most implementations use heuristics, i.e. one or another character encoding detection algorithm for guessing the encoding, even if the encoding is specified explicitly in the ECI of the decoded QR code.
So, you just have to test your QR codes with various scanners to figure out which of the outcomes gives better results. There is no universal solution. Certain scanners will fail anyway because of errors in their heuristics. Only those that do not use heuristics (at least when ECI is provided) would not fail. As for me, I would have chosen ISO-8859-1 for two reasons. First, it does not mandate using ECI. Second, it is needed just one byte for ISO-8859-1 to encode non-US-ASCII characters such as á or ö, in comparison with UTF-8, where two bytes are needed for these characters. So you QR codes will be smaller with ISO-8859-1 not just because less bytes are needed to encode a ISO-8859-1 string, but also because it brings additional saving (of 2 bytes) by not including the ECI.
I did small research about it. Firstly I've generate UTF-8 encoded qr code from this site with using "işçöá" characters. Then I simply open my camera app (iphone) and Android BarcodeScanner app. They worked as expected.
In the second step, I used ISO-8859-1 encoding for QR code generation and suprisingly iPhone camera app can not produce any result.
I think you can trust UTF-8 encoding for commonly used tools about QR reading.

Resources