Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизШтрих-кодирование Найти похожие ветки
← →
Ломброзо © (2006-05-29 21:03) [0]Посоветуйте пзялста, какой стандарт сабжа мне должно выбрать?
Итак, есть некая лабораторная система, в которой все сущности (пациенты, заказчики, организации, заказы, тесты и т.п) идентифицируются GUID-ами.
Есть принтер с размером этикетки 3x2 см. Поэкспериментировав с дизайнером этикток и предлагаемым по умолчанию стандартом Code128 пришел к выводу, что 32 символа гуида (не в виде 128-битного целого, а в виде строки), преобразованные в штрих-код, на такую маленькую этикетку не влезают.
Подумал, что в виде строки гуид кодировать не умно, а нужно его либо преобразовать в число, либо натравить на него MD5.
Полез на RSDN и, помимо Code128, обнаружил упоминания ещё о десятке всяко-разных стандартов, из которых особняком стоят торговые семейства EAN, которые в своей системе без специального разрешения использовать, насколько я понял, нельзя.
Другими словами, прошу помочь сориентироваться.
← →
sniknik © (2006-05-29 21:25) [1]EAN13 под пользовательские нужды отведен префикс (первые 2 цифры) с 20 по 29, используются в основном для весового товара.
насчет специальных разрешений не в курсе. но тебе они и не нужны, пользуйка как пользовался Code128 только сократи кольчество идентификационных цифр, т.е. сколько у тебя там будет маркируемых обьектов? 100 тыс? больше? если сто то из 6 цифр баркод легко влезет на мелкую этикетку (не особо напрягаясь и из 12-15 цифр влезет в 3 см.), а если больше и нужен именно гуид то думай об этикетках побольше. хотя... Code128 вроде позволяет и буквы в коде... т.е. закодируй гуид в 30тиричной системе счисления, будет меньше букв, может и влезет.
← →
Ломброзо © (2006-05-29 21:58) [2]100 тыс мало, ориентировочно нужно не менее 9 млн в запасе иметь, то есть семь символов и более.
Раз 12-15 влезет - так может быть таки имеет смысл гуид в MD5 перекодировать и по хэшу искать?
← →
Desdechado © (2006-05-29 22:27) [3]штрих-код - это не стандарт, это принцип
поэтому его легко можно придумать свой под свои задачи
можно кодировать шириной полос, расстоянием между ними
можно даже не штриховой код сделать, а мозаичный (квадратиками, например, по всему полю)
в принципе, в сети должно быть много инфы по этой тематике
← →
sniknik © (2006-05-29 22:32) [4]> то есть семь символов и более.
ну так определи цифру 10-ти значным числом, еще 3 в запасе будут. Code128 же не ограничивает размер, не EAN/UPC/... что с жостким количеством цифр.
> гуид в MD5 перекодировать и по хэшу искать?
я бы не связывался с ним, не тот случай, имхо. проще всетаки гуид, раз уж без него никак, представить в другой системе счисления, или как есть только в символах, а не строковое представление использовать. получится 16 байт.
проверь к примеру запрос для MSSQL SELECT Cast(Cast(NewID() AS VarBinary(16)) AS Char(16)) выдаст чтото вродеÂcó@0«¤uDϨ5
примет его Code128? и влезет ли он на этикетку (если примет сначала конечно)
← →
sniknik © (2006-05-29 22:36) [5]> можно даже не штриховой код сделать, а мозаичный (квадратиками, например, по всему полю)
2D и 3D, нужен специальный сканер, простой не пойме,т поэтому затруднительно будет. но тут да, тут код в почтовую марку размером и печатная страница инфы влезет. (както статью читал на эту тему)
← →
DiamondShark © (2006-05-29 22:46) [6]
> гуид в MD5 перекодировать
MD5 хэш, если не ошибаюсь, те же 128 бит. Смысла нет.
В Code128 хорошо можно печатать Base64 закодированную информацию.
В нашей системе, например, в 3 сантиметра влезает семисимвольный Code128, нормально читаемый дешёвейшими светодиодными сканерами.
64^7 = ~4e12
Если чуть-чуть ужаться, печатать покачественнее, читать лазерными сканерами -- пожно вместить и 8-ми символьный.
А это уже ~2e14
А на этикетке 3х2 см вполне можно и три строки по 8 символов Code128 уместить :) А это уже совсем много.
← →
Ломброзо © (2006-05-30 00:11) [7]sniknik © (29.05.06 22:32) [4]
DiamondShark © (29.05.06 22:46) [6]
Да, MD5 действительно тоже 128-битный, обидно.
Я вот думаю, какой алгоритм хэширования использует .NET-овский метод GetHashCode? Он возвращает 32-int. Но это так, мысли вслух.
Итак, 14 символов в строчку влезает стопроцентно.
Беру 4-5 на идентификатор организации и 7-8 на идентификатор сущности внутри оной (99 млн, если шифровать только циферками). И ещё 2 на закуску.
Всем спасибо! )
← →
DiamondShark © (2006-05-30 00:24) [8]
> если шифровать только циферками
Только не по одной цифре на символ кода!
Слишком расточительно.
Всё-таки, у Коде128 алфавит 128 символов...
даже в Code128 set C в символ влазит две десятичные цифры (алфавит в 100 знаков).
← →
DiamondShark © (2006-05-30 00:26) [9]
> Итак, 14 символов в строчку влезает стопроцентно.
14 символов Code128 set C -- это 28 десятичных знаков.
← →
Ломброзо © (2006-05-30 00:39) [10]Я чего-то недопонимаю.
В Code128 каждый символ - это байт со значением от 0 до 127 - правильно?
То есть использоваться могут не только буквенно-цифровые символы.
Т.о. если я ограничу размер _символьной строки_, к примеру 10 символами, я получу фактически 1280бит=160 байт?
← →
DiamondShark © (2006-05-30 00:41) [11]Вообще, если нет необходимости сохранять хуманочитаемость кода, то имеет смысл использовать полный алфавит в 128 символов.
14-разрадное 128-ичное число -- это ужос ;)
Если же хуманочитаемость нужна, то и 64-ичные числа -- это тоже неплохо.
Опять же, Code128 -- он же не фиксированной длины.
Ведь не обязательно же будет пренепременно сто тысяч организаций, в каждой ровно по 99 миллионов сущностей, верно же? Можно ведущие нули не печатать, а код организации и код сущности печатать через разделитель (пробел, например)...
← →
Gorlum © (2006-05-30 11:15) [12]используй 2D-код и не мучайся. Так делают давно заграницей.
Человек его точно не прочитает - нужно спец оборудование (если PDF417 - не очень дорогой 2D сканер нужен, если Datamatrix и другие - подороже).
Места занимает на этикетке очень мало.
← →
DiamondShark © (2006-05-30 11:40) [13]
> В Code128 каждый символ - это байт со значением от 0 до
> 127 - правильно?
Можно и так сказать.
> То есть использоваться могут не только буквенно-цифровые
> символы.
Code128 изначально придумывался для отображения стандартной ASCII таблицы, так что да.
Вот только интерпретировать ли символы кода как коды ASCII или просто как 128-ичные числа -- целиком задача приложения :)
> Т.о. если я ограничу размер _символьной строки_, к примеру
> 10 символами, я получу фактически 1280бит=160 байт?
Почему 1280 бит? Для 10 символов -- 70 бит.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c