17.10.2008, 16:59 | #1 |
Участник
|
«Обрезание» длинных штрих-кодов
Помимо какого-нить EAN13 зачастую используют "длинные" штрих-коды (типа EAN128 или Code128), позволяющие закодировать в штрих-коде самую различную информацию, используемую организацией во внутреннем документо- и товарообороте: номер документа, сумму, количество, общий вес, etc. Так вот, в Аксапте столкнулись с тем, что такие длинные штрих-коды почему-то обрезались и, как следствие, ни в какую не читались сканерами. Поначалу грешили на dll-ку, генерирующую штрих-коды, но все оказалось проще: у строкового EDT BarcodeString, используемого в семействе классов Barcode для переменной, хранящей перекодированную в штрих-код информацию, оказалась установлена недостаточная длина - всего 60 символов (в 4-ке - уже целых 70 ), при том что для EAN128 нужно, насколько я понимаю, порядка 400. После изменения длины этого EDT штрих-коды стали отображаться и печататься нормально.
|
|
|
За это сообщение автора поблагодарили: Logger (5). |
17.10.2008, 17:05 | #2 |
Участник
|
Prove it!
В смысле то, что для EAN128 нужно 400 символов. ЗЫ Почитал wikipedia. Насколько я понял, здесь используется ASCII кодировка, и выводится 128 символов, соответственно, 128 и нужно. Или я неправильно понял? Последний раз редактировалось kashperuk; 17.10.2008 в 17:09. |
|
17.10.2008, 17:19 | #3 |
Banned
|
В зависимости от того, какой длины строки кодируете, такой длины EAN128 и нужен. Для названия номенклатуры нам 100 символов хватало, но может быть как меньше, так и больше.
|
|
17.10.2008, 17:22 | #4 |
Участник
|
Интересует верхний предел. Больше какой длины не нужно?
|
|
17.10.2008, 17:24 | #5 |
Участник
|
Если честно, я не силен в знании особенностей того, как bcfont32.dll кодирует информацию в виде штрих-кодов, и как вообще информация кодируется этими штрих-кодами. Я где-то как-то слышал, что на один десятичный разряд уходит порядка 3-х этих... палочек, плюс служебная информация (контрольные суммы всякие) - вот и подумал, что нужно 128*3 ? 400. Ну уж явно никак не 60 и даже не 70.
Цитата:
Код: 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 %"*!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"%-%!&*#!'+!%(!"""'')!1 |
|
17.10.2008, 17:29 | #6 |
Banned
|
128 - это не максимальная длина, а емкость одного "блока". Code128 позволяет тем самым кодировать первую половину таблицы ASCII. Сама строка может быть какой угодно длины, лишь бы бумаги и размаха луча хватило.
Промежуточная строка, генерируемая bcfont32.dll, зависит, очевидно, от используемого шрифта. Если взять больше "букв", то символов станет нужно меньше. Получается, что максимальную длину промежуточной строки надо вычислять эмпирически. |
|
17.10.2008, 18:02 | #7 |
Участник
|
Цитата:
Цитата:
Код: !@#$%^&*-_+=,./\'<>?:;\\[]`~|{}()0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ %"$&%&'%%""'"#&#"&/!!"&#&#""%*!"('""*&!!&*"&)!*&)-!"'"*%"%%'%'%*"%)&")-!)-!+%!&$!!$&?v?-%%!#-#&"&"#!)-&%&)%)!)'$!&%%-!-)"!("$%$!&$"%!&$!(""%$"(!$%"$&!("!&!$-)!(!"#-!!"."!.""-!.""-"".!-"".!"."!%%-%-%!#'#!'##%!'##%##'!%##'!#'#!!%+!')#%)!)'!+%#)%))%%#)'!)%)#%+!%)))!')#%+!%)%#)'!)#%')!1 Как уже упоминалось, в общем случае гарантированно достаточной длины нет; с другой стороны, в таблицах этот EDT вроде бы не используется, так что увеличивать его длину можно относительно безболезненно. PS. Особенности кодирования информации в том же Code128 можно, к примеру, посмотреть здесь |
|
17.10.2008, 18:16 | #8 |
Участник
|
Code128 это алфавит. Этот алфавит используют различные алгоритмы штрихкодирования, например, EAN128 или HIBS. Алгоритм EAN128 предполагает наличие в нем не более 128 закодированных символов.
Вот тут подробнее http://cleverence.ru/site.aspx?page=...ing-01&lang=ru Цитата:
В отличие от EAN13, у кода EAN128 уникальный только словарь. Для построения EAN128 используется алфавит CODE128. Т.е. если кто-то говорит «CODE128», то он имеет в виду алфавит (какие цифры и буквы какими черточками обозначаются). А если кто-то говорит «EAN128», то он имеет в виду систему кодирования свойств конкретного товара или груза на основе кодировки CODE128. Число 128 в EAN128 не означет, что в нем подряд должно стоять 128 цифр. Число 128 попало в EAN128 из CODE128, а в CODE128 оно обозначает количество символов, которое способен отобразить данный алфавит, т.е. все 128 символов стандартного ASCII.
отношения между EAN128 и CODE128 такие же, как между формой Торг-12 и русским языком. Используя русский язык можно писать о чем угодно, но Торг-12 имеет свой формат, и не все, что написано по-русски, является формой Торг-12. EAN128 является, по-видимому, вторым по распространенности кодом на планете, и вот почему: это код для обмена информацией о товарах и грузах между производственными, транспортными и торговыми компаниями Последний раз редактировалось _scorp_; 17.10.2008 в 18:25. |
|
Теги |
документация, печать, штрихкод, ax2009, ax3.0, ax4.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Подвисает сканер штрих-кодов | 0 | |||
AX 4.0 + сканеры штрих кодов | 11 | |||
Еще раз про сканеры штрих кодов | 14 | |||
Нужен совет по сканеру штрих-кодов | 5 | |||
Еще раз о подключении сканнера штрих кодов | 43 |
|