Главная Обо мне Гостевая книга Обратная связь Новости Космонавтика Софт Антенны Конструкции Схемы Модернизация Радиолюбительская технология Справочники QSL-bureau
Сканер штрихкода |
© Александр Женжеруха
г. Старый Оскол 2004г.
http://micro-comp.narod.ru/
jenjeraaa@oskolnet.ru
(удалите в адресе "aaa" (анти спам))
Сканер штрихкода выполнен в виде толстого карандаша.В корпусе помещены: считывающая головка, микропроцессор PIC16F84,пьезо-излучатель и четыре маленьких пальчиковых батарейки.Корпус и считывающая головка взяты от считывателя штрихкода которыми комплектовались видеомагнитофоны Панасоник для считывания программы передач ТВ и автоматического программирования видеомагнитофона на запись. У нас такая технология не используется. После проведения головкой сканера по штрихкоду считанные символы передаются в COM порт компьютера и выдается короткий звуковой сигнал. В случае ошибочного считывания выдается переливчатый звуковой сигнал. Программа отслеживает длительности входных сигналов которые зависят от ширины штрихов и определяет широкая или узкая это полоса. После 9-ти черно-белых полосок полученный код сравнивается с образцами и совпавший символ сохраняется в буфере. После конца штрихкода некоторое время изменения освещенности не регистрируется, происходит переполнение таймера и символы из буфера передаются в компьютер, программно эмулируется интерфейс RS-232. Алгоритм определения узкая или широкая это полоска построен таким образом что качество определения не зависит от скорости проведения сканером по штриху, скорость проведения сканером может даже изменяться в процессе сканирования. Программа автоподстраивается после каждой считанной полоски. Штрихкод может начинаться как с широкой так и с узкой полосок (или нескольких). Если первые полоски отличаются по длительности не более чем в 1,5 раза то просто ведется их подсчет. Если считанная полоска отличается по длительности от 1,5 до 3 раз то она определяется как широкая или узкая по отношению к ранее считанным а ранее считанные соответственно как узкие или широкие. Если разница более чем в 3 раза то регистрируется ошибка. После этого выполняется вторая часть алгоритма где тоже сравнивается считанный интервал с ранее считанными усредненными интервалами и принимается решение: считанная полоска узкая- если разница до 1,5раз, широкая- если разница от 1,5 до 3 раз или ошибка если разница более 3раз. После каждой считанной полоски происходит усреднение считанного интервала с ранее считанными, полученный результат используется как эталон для определения следующей полоски. В случае если сканер не считывает в течении1 минуты, отключается питание считывающей головки и происходит переход в спящий режим – ток потребления устройства уменьшается до нескольких микроампер. Программа на ассемблере находится здесь.