Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пiдручник_РСПЗ_03_11.doc
Скачиваний:
29
Добавлен:
08.05.2019
Размер:
3.48 Mб
Скачать

4.3. Декодування штрихових кодів

Декодери призначені для розпізнавання ШК шляхом перетворення послідовності імпульсів з рівнями логічних 1 і 0, тривалості яких відповідають штрихам та проміжкам, в машинні коди цифр і букв, що передаються в ЕОМ.

Декодери переважно вмонтовують у сканери як портативні, так і стаціонарні .

Після збирання інформації портативні декодери під’єднують до ЕОМ. Декодер може з’єднуватися з ЕОМ через послідовний порт або за допомогою радіопередавача.

У портативних терміналах декодери об’єднані з мікро-ЕОМ, оброблення зібраної інформації відбувається в самому терміналі. Такі пристрої мають дисплей та алфавітно-цифрову клавіатуру. Символи після зчитування ШК відбиваються на екрані дисплея.

Настільні декодери класифікують за двома основними ознаками – за кількістю оброблюваних каналів, до кожного з яких під’єднано сканер, та за способом з’єднання декодера з ЕОМ. До багатоканального декодера можна під’єднати декілька сканерів.

Настільні декодери можуть під’єднуватися до ЕОМ через спеціальну адаптерну плату, яка установлюється в системний блок ЕОМ, через послідовний порт або в розрив кабеля клавіатури. При цьому клавіатура не перешкоджає роботі декодера й навпаки.

Якщо потрібно під’єднати до ЕОМ значну кількість декодерів, то вони попередньо можуть об’єднуватися за допомогою мультиплексора, який потім під’єднують до ЕОМ. Застосовуються мультиплексори, які дозволяють об’єднати до 128 декодерів. Такі мультиплексори під’єднують до ЕОМ через паралельний порт.

Для зазначеного обладнання розроблено широкий спектр програмного забезпечення з різноманітними пакетами програм, які дозволяють виготовляти ШК-позначки, здійснювати декодування штрихкодової інформації та виводити на дисплей або друкувати результати декодування.

Класифікацію декодерів ШК наведено на рис. 4.16.

Рисунок 4.16 – Класифікація декодерів ШК

Розглянемо узагальнений алгоритм декодування лінійних ШК на прикладі декодування ШК-позначки EAN-13 (рис. 4.17).

Рисунок 4.17 – ШК-позначка EAN-13

При переміщенні променя сканера на відрізку, який відповідає, наприклад, лівій зоні стабілізації, від точки A до точки Е, з порогового пристрою на декодер надходитиме сигнал 0. У точці переходу променя на штрих сигнал зміниться з 0 на 1. Оскільки інформація у ШК кодується відносними ширинами елементів ШК, то необхідно визначити ширину цього штриха. Для цього використовується програмний лічильник, який попередньо установлюється в нуль. Отримане в лічильнику значення – це кількість тактів, або інших часових інтервалів, які установлюються у залежності від швидкості сканування, що накопичується від одного перепаду сигналу до іншого.

На відрізку ширини першого штриха, коли промінь проходить від точки Е до точки F, у лічильнику буде накопичуватися ширина поточного елемента ШК. У точці F відбувається перехід променя на проміжок, сигнал набуде значення 0, накопичене в лічильнику значення ширини штриха буде занесено в масив ширини елементів ШК, після чого лічильник буде установлено в нуль, і поки промінь не буде переміщено з проміжка на штрих, у лічильнику буде накопичуватися наступна ширина (в тактах) поточного елемента ШК (проміжку). Потім накопичене в лічильнику значення ширини буде записано в масив, відбудеться установлення в нуль і так далі, поки промінь сканера не переміститься на праву зону стабілізації. Ширина зони стабілізації у декілька разів перевищує ширину найширшого елемента ШК.

При переміщенні променя з точки G до точки B без зміни значення сигналу 0, значення лічильника буде зростати, і в якийсь момент перевищить максимальне. Це означає, що зчитування ШК завершене і можна переходити до його ідентифікації й декодування, яке для кожного виду ШК здійснюється по-різному.

Після зчитування ШК-позначки EAN-13 у масиві має бути записано 59 значень ширини у вигляді чисел, кожне з яких пропорційне ширині елементів відповідних 15-ти ШК-знаків (12 інформаційних і 3 службових). Позначимо штрихкодові знаки ШК EAN-13 як Z1-Z15.

Знак Z1 (“СТАРТ”) складається з трьох елементів – двох штрихів і проміжку, їх ширина знаходиться в перших трьох числах масиву. Знаки Z2-Z7 (знаки лівої частини ШК-позначки) складаються з чотирьох елементів кожний (два штрихи і два проміжки), їх ширина зберігається в наступних 24 числах масиву відповідно. Роздільний ШК-знак Z8 складається з п’яти елементів – двох штрихів і трьох проміжків, їх ширина знаходиться в п’яти числах. Знаки Z9-Z14 (знаки правої половини штрихкодової позначки) містять по чотири елементи — по два штрихи і два проміжки, їх ширина зберігається в наступних 24 числах масиву відповідно. Знак Z15 (СТОП) складається з трьох елементів (двох штрихів і проміжка), ширина яких знаходиться в останніх трьох числах масиву.

Оскільки в масиві значення ширини подано в тактах, то для перетворення їх у кількість модулів необхідно визначити відносну ширину одного модуля для кожного знака:

для знаків СТАРТ, СТОП

(j = 1,15);

для знаків Z2Z7, Z9Z14

(j = 2...7 9…14);

для розділювального знака Z8,

де j – номер ШК-знака; i – номер елемента ШК-знаку; yij – ширина i-го елемента j-го ШК-знака, виражена в тактах.

Значення  обчислюють для кожного ШК-знака окремо з метою зменшення похибки, викликаної нерівномірністю руху променя по поверхні штрихкодової позначки. Знаючи j (j = 1…15) можна обчислити (з округленням до цілого значення) ширину кожного елемента штрихового коду в модулях:

eij = yij /j.

Тепер кожному знаку Zj відповідає своя послідовність ширин елементів, виражена в модулях:

e11, e21, e31 відповідає знаку Z1 (СТАРТ);

e1,15, e2,15, e3,15 відповідає знаку Z15 (СТОП);

e18, e28, e38, e48, e58 відповідає знаку Z8 (розділювальний знак);

e1j, e2j, e3j, e4j, відповідає знакам Zj (j = 2…7,9…14).

Величини eij, які відповідають знакам Z1, Z15, Z8, мають бути однаковими. Якщо це так, то їх ідентифікують як знаки СТАРТ, СТОП та H4 і далі не розглядають.

Для декодування штрихового коду необхідно для кожного знака Z2-Z7, Z9-Z14 виконати пошук послідовності e1j e2j e3j e4j в таблиці символіки (стовпець ширин елементів).

У підсумку одержують цифрову послідовність – значення зчитаного ШК.

Далі обчислюють нове значення контрольного символа і порівнюють зі щойно зчитаним контрольним символом. Співпадіння контрольного символу свідчить про успішне зчитування ШК. Неспівпадіння є ознакою помилки. Процес повторюється до успішного зчитування.

Особливості зчитування та декодування двовимірного ШК полягають у наступному.

Зчитування двовимірного ШК відбувається шляхом сканування зображення ШК-позначки лазерним сканером з системою горизонтальної та вертикальної розгортки променя або ПЗЗ-сканером шляхом проектування ШК-позначки на ПЗЗ-матрицю аналогічно фотозйомці цифровим фотоапаратом.

Після сканування носія, на який нанесено ШК-позначку двовимірного МШК, отримують у запам’ятовуючому пристрої двовимірний масив, кожний елемент якого є номером кольору: 0 – білий, 1 – чорний. Елементами масиву є точки (пікселі) графічнокодованого зображення.

Декодування ШК-позначки починається з визначення по маркеру її орієнтації, розміру матриці ШК, кількості комірок, розміру комірки, ідентифікації МШК.

Позначка МШК має маркери та L-подібні вимірні лінійки, що дозволяє однозначно визначити положення позначки МШК на площині.

Обчислюється кут повороту позначки МШК відносно горизонтальної осі. Якщо , то зображення умовно повертається на кут так, як це показано у розд. 5.

Потім виконується етап визначення інформаційної частини матриці та отримання інформаційної послідовності, що відповідає послідовності темних та світлих комірок у матриці.

Якщо знак МШК складається з матриці комірок розмірністю 3 x 2, то матрицю необхідно розбити на підматриці розмірністю 3 x 2, кожна з яких є знаком МШК.

Кожному знаку МШК розмірністю 3 x 2 відповідає шестирозрядний цифровий набір, який є вектором цього знака. До цього цифрового набору (вектора) можуть входити цифри з множини {0, 1} для чорно-білого коду і {0, 1, 2,..., 7} для багатокольорового.

Після цього інформація приводиться до початкового виду згідно з алгоритмом кодування-декодування даного ШК.