I have created an application which generates the barcode.
Here is the code how I created the barcode:
Code39 code39 = new Code39();
String outputStr = code39.encode("B00009", 1);
//String humanTextStr=code39.getHumanText();
lblBarcode.setText(outputStr);
lblBarcode.setFont(new java.awt.Font("CCode39_S3_Trial",java.awt.Font.PLAIN,14));
Using this java library ConnectCodeBarcodeFontLibrary.jar.
For scanning the barcode I used QRbot app which gives me this information - extra letter at the end B00009K instead of this B00009.
Here is the screenshot of generated barcode:

What is the problem in this scenario?
Code 39 has the option of using a check digit and is called Code 39 mod 43.
Code 39 mod 43 - Wikipedia
For example, ZXing's Code39Reader has an option called ASSUME_CODE_39_CHECK_DIGIT (a mode in which a check digit is generated from barcode data even if there is no check digit and is notified?).
Class Code39Reader
public Result decodeRow(int rowNumber, BitArray row, Map<DecodeHintType,?> hints) throws NotFoundException, ChecksumException, FormatException
ASSUME_CODE_39_CHECK_DIGIT
public static final DecodeHintType ASSUME_CODE_39_CHECK_DIGIT
Assume Code 39 codes employ a check digit. Doesn't matter what it maps to; use Boolean.TRUE.
Whether your program added a check digit when it generated the barcode (but did not print it in human-readable characters), or whether the program that read the barcode supplemented the check digit and generated/notified it. There can be one of two possibilities.
By the way, the last K was notified when the barcode presented was read with the Honeywell Xenon 1900 in the default No Check Character mode, so a check digit may have been added when generating the barcode in your program. Will be high.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With