Member 13937680 Ответов: 2

Как я могу прочитать штрих-код PDF417 через сканер штрих-кодов


Я должен отобразить PDF417 штрих-код через приложение, здесь я могу отображать, но если я читаю через сканер, он не может обнаружить как PDF417 штрих-код.

Я нахожу проблему в идентификации штрих-кода PDF417 с помощью сканера штрих-кодов, я подозреваю, что это связано с тем, что расчет правого индикатора и левого индикатора неверен.



я сослался на это уравнение при поиске кодового слова левого индикатора и кодового слова правого индикатора.



Скопление

Индикатор Левого Ряда
Кластер 0 30x + y
Кластер 3 30x + z
Кластер 6 30x + v

Индикатор Правого Ряда
Кластер 0 30x + v
Кластер 3 30x + y
Кластер 6 30x + z

Где:



x = (номер строки - 1) / 3

y = (количество строк – 1) / 3

z = (уровень коррекции ошибок) * 3 + (Количество строк – 1) mod 3

v = количество столбцов данных – 1

здесь

количество строк = 8

номер строки от 1 до 8

уровень коррекции ошибок = 4

количество столбцов данных = 2.



То, что я делаю, правильно? пожалуйста, предложите мне это.

Что я уже пробовал:

Поэтому расчет кластера и индикатора for left row я рассчитал и использовал байтовый уровень в качестве опции, где данные должны быть преобразованы в базу 900. затем я взял 2d-массив, где я разместил данные, поступающие по строкам мудро.

2 Ответов

Рейтинг:
1

OriginalGriff

Создание любого штрих - кода с нуля всегда весело-я уже давно этого не делал (раньше я разрабатывал промышленные струйные принтеры, поэтому реализовал большинство форматов 1D), но если это не работает, то всегда трудно понять, почему. А 2D-версии-это скорее боль, потому что там больше переменных.

Поэтому начните с поиска действительного штрих-кода в нужном формате с известными данными, которые может прочитать ваш сканер.
Затем используйте точно такие же данные для создания своей версии и сравните их. Либо распечатайте их на тонкой бумаге и просмотрите их оба при сильном освещении, либо загрузите их как отдельные слои в хорошую программу рисования - GIMP может сделать это, но я использую PaintShop Pro, и Photoshop также сделает это - затем уменьшите непрозрачность самого верхнего слоя, чтобы вы могли видеть различия.

Когда вы знаете области, в которых они отличаются, Вы можете начать смотреть на то, что это за области и почему они отличаются - но вам нужна эта информация в первую очередь, или вы просто свистите в темноте, поскольку проблема в вашем коде касается.


Рейтинг:
1

Member 13937680

я нашел решение, так как делал неверные вычисления. здесь мы должны принять каждый раздел входных данных как 6 байт данных и применить тот же расчет байтового уровня.

Пример1:

если входные данные равны 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9, то в этом примере входные данные не идеально делятся на 6. следовательно, здесь кулак 6 байт будет применен с вычислением уровня bytle, и данные remaning будут рассматриваться как есть.

Пример 2:
если входные данные равны 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc, то здесь nuber входных данных равен 12 байтам, которые делятся на 6, т. е. 12/6 = 2, следовательно, он составляет 2 группы, каждая группа из 6 байтов, каждая группа, содержащая 6 байтов данных, будет применяться с вычислением байтового уровня.