Рет қаралды 9,857
Штрихкод Code 128
К видео с ценниками ( • Ценники своими руками ... ) коллеги справедливо заметили, что если просто сделать шрифт Code 128 - этого недостаточно для того чтобы сканер этот штрихкод прочел.
Я конечно заподозрил, что здесь чтото не чисто и проверил.
Проверка и дальнейший разбор подтвердил, что не чисто там всё.
Как оказалось штрихкоду недостаточно выглядеть, как штрих-код. Ему помимо кодируемой информации оказывается нужен еще и стартовый символ, контрольный ключ и закрывающий символ.
Все мануалы ведут на формирование каких-то картинок методом родов ежа, либо вовсе являются платными и тоже выдают картинки.
Был момент слабости и мысль "взять и забить" но нет.
Вот этот пост придал мне силы: blogs.klerk.ru/users/1911762/...
В деле мне помог шрифт, взятый здесь: ru.fonts2u.com/code-128.%D1%8...
И, спустя 1000 нецензурных слов, десятка чашек кофе и 12 часов времени мне таки удалось победить этого страшного дракона.
Функция заняла всего 8 строчек кода.
'Замените надпись "больше или равно" на соответствующие символы.
Отдельное СПАСИБО пользователю Александр (он в закрепленном комментарии) за зоркий глаз, светлый ум и внесенные корректировки.
Function Code128(Str As String)
cs = 104
For i = 1 To Len(Str)
s = Asc(Mid(Str, i, 1))
cs = cs + (s + IIf(s БОЛЬШЕ= 32, -32, 64)) * i
Next i
sh = cs Mod 103
sh = sh + IIf(sh БОЛЬШЕ 94, 100, 32)
Code128 = ChrW(204) & Str & ChrW(sh) & ChrW(206)
End Function