Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.011 c
15-1148972466
TButton
2006-05-30 11:01
2006.06.25
тех.док.


15-1148914084
lobach
2006-05-29 18:48
2006.06.25
Папка windows


1-1147849233
NigthSkif
2006-05-17 11:00
2006.06.25
MaskEdit


5-1133421374
vladmk
2005-12-01 10:16
2006.06.25
Создание компонента


3-1146659528
mochoni
2006-05-03 16:32
2006.06.25
Занесение файлов в SqlServ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский