Получение лишних букв после сканирования штрих-кода с использованием Java - PullRequest
3 голосов
/ 10 июля 2020

Я создал приложение, которое генерирует штрих-код.

Вот код, как я создал штрих-код:

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));

Используя эту java библиотеку ConnectCodeBarcodeFontLibrary.jar .

Для сканирования штрих-кода я использовал приложение QRbot , которое дает мне эту информацию - дополнительную букву в конце B00009K вместо B00009.

Вот скриншот сгенерированного штрих-кода:

введите описание изображения здесь

В чем проблема в этом сценарии, кто-нибудь сталкивался с этой проблемой? Пожалуйста, помогите мне!

Ответы [ 2 ]

5 голосов
/ 12 июля 2020

Code 39 имеет возможность использования проверки di git и называется Code 39 mod 43. Code 39 mod 43 - Wikipedia

Например, в Code39Reader ZXing есть опция ASSUME_CODE_39_CHECK_DI GIT (режим, в котором проверка di git генерируется из данных штрих-кода, даже если есть нет чека ди git и уведомлен?). Class Code39Reader

public Result decodeRow(int rowNumber,
                        BitArray row,
                        Map<DecodeHintType,?> hints)
                 throws NotFoundException,
                        ChecksumException,
                        FormatException

ASSUME_CODE_39_CHECK_DI GIT

publi c stati c final DecodeHintType ASSUME_CODE_39_CHECK_DI GIT Предположим, что коды Code 39 используют проверку di git. Неважно, на что он отображается; используйте Boolean.TRUE.

Независимо от того, добавляла ли ваша программа проверку di git при генерации штрих-кода (но не печатала его в виде символов, удобочитаемых человеком), или программа, считывающая штрих-код дополнил чек ди git и сформировал / уведомил его. Может быть один из двух вариантов.

Кстати, последний K был уведомлен, когда представленный штрих-код был считан с помощью Honeywell Xenon 1900 в режиме по умолчанию без проверочного символа, поэтому проверьте di git могли быть добавлены при генерации штрих-кода в вашей программе. Будет высоким.

0 голосов
/ 12 июля 2020

Следуя ответу @ kunif кода ASSUME_CODE_39_CHECK_DIGIT, в котором говорится, что он использует проверку di git. Итак, я проанализировал свой код и обнаружил, что code39.encode("B00009", 1); передает второй параметр 1, который является причиной того, что он генерирует дополнительную букву K в конце номера штрих-кода.

Итак, я изменил 1, который равен 0, и теперь он правильно сканирует штрих-код.

String outputStr = code39.encode("B00009", 0);
...