Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизСканер штрихкода не читает мои штрихкоды.. Найти похожие ветки
← →
Layner © (2006-08-21 22:08) [0]Здравствуйте!
Генерирую свой код типа 1000000000095, (13 символов), генерирую по нему код в отчете, и... сканер не распознает код. Если беру 13 символов с любого товара, и также печатаю через отчет (FastReport 3.20), то все прекрасно распознается. Подскажите, как генерировать код, что бы понял сканер его? И еще, у меня код с переменным весом, т.е. в коде передаю первые 7 символов код товара, например код 12 и вес 4599 грам - получается как 1000012004599, но увы, что то сканер его не читает... Как быть в таком случае? Заранее благодарю.
← →
tesseract © (2006-08-21 22:11) [1]> [0] Layner © (21.08.06 22:08)
Перечитать инфу по коду. Ошибка в генерации/печати кода.
← →
DiamondShark © (2006-08-21 22:15) [2]Какая система кодировки? Подозреваю, что EAN-13.
Так там последняя цифра -- контрольная, рассчитывается по спец. алгоритму (наизусть не помню, но в сети навалом описаний).
Так что под эзерскую инфу остаётся только 12 цифр.
← →
Layner © (2006-08-21 22:19) [3]Так в генерации никак не может быть ошибки, это все делает FastReport. Т.е. печатаю последовательность чисел как на стандартном коде - 4600732134392 и печатаю через FastReport, то все распознается сканером без проблем. Делее, печатаю свой код - 1000000000095, на штрихе изображено как надо вроде, а вот в сканер не заходит все. Я так понимаю, если я генерирую свой код, то свой код должен состоять из 12 символов, а 13й - контрольный, правило вычитал в интеренете:
начиная с начала (слева) сумма нечетных цифр (СН) (первогй третьей и т.д)
плюс сумма четных (СЧ) умноженое на три......
контрольная сумма - добавка, чтоб делилось на 10-ть......
9-((СН+СЧ*3-1)%10);
Может есть более точное объяснение у кого нибудь, что то до конца идею разобрать не могу...
← →
Layner © (2006-08-21 22:20) [4]DiamondShark © (21.08.06 22:15)
да, EAN-13, понял, сейчас поищу ещё правило расчета посл. цифры, благодарю!
← →
DiamondShark © (2006-08-21 22:28) [5]
> что то до конца идею разобрать не могу...
4 6 0 0 7 3 2 1 3 4 3 9 2
СН = 4 + 0 + 7 + 2 + 3 + 3 = 19
СЧ = 6 + 0 + 3 + 1 + 4 + 9 = 23
9 - (19 + 23 * 3 - 1) mod 10 = 2
← →
isasa © (2006-08-21 22:29) [6]Layner © (21.08.06 22:20) [4]
Про фаст-репорт, не знаю, но обычно компоненты сами формируют контрольную цифру. Попробуй задать двенадцать и прочитать штрих.
← →
Loginov Dmitry © (2006-08-21 23:38) [7]Попробуйте вместо EAN-13 использовать Code128 или како-нибудь другой тип, поддерживающий переменное количество цифр.
EAN-13 наверно все-таки не предназначен для хранения в нем всякой инфы по товару.
> генерирую по нему код в отчете, и... сканер не распознает
> код
Сканер сможет распознать код только в случае правильного подсчета контрольного разряда.
> Layner © (21.08.06 22:19) [3]
> начиная с начала (слева) сумма нечетных цифр (СН) (первогй
> третьей и т.д)
> плюс сумма четных (СЧ) умноженое на три......
> контрольная сумма - добавка, чтоб делилось на 10-ть......
> 9-((СН+СЧ*3-1)%10);
Неправильное правило. Подсчет ведется не слева, а справа. Сначала суммируются четные числа, начиная со второго, затем нечетные, начиная с 3-го.
← →
DiamondShark © (2006-08-21 23:50) [8]
> EAN-13 наверно все-таки не предназначен для хранения в нем
> всякой инфы по товару
Если "всякая инфа" -- это только вес, то предназначен. Весы с этикеточными принтерами как раз EAN-13 и используют.
← →
DiamondShark © (2006-08-21 23:52) [9]
> Подсчет ведется не слева, а справа. Сначала суммируются
> четные числа, начиная со второго, затем нечетные, начиная
> с 3-го.
Что совой об пень, что пнём по сове ;)
← →
Loginov Dmitry © (2006-08-22 07:49) [10]> Что совой об пень, что пнём по сове ;)
Нет, разница все-же есть. Один и тотже алгоритм расчета КС используется для разных типов штрих-кодов с разной длиной кода, так что ведение подсчета справо налево универсальнее.
← →
tesseract © (2006-08-22 09:22) [11]работающий код, неграмотный конечно, но без проблем читается сканером.
procedure TBARCODE.CRCEAN13;
var CRC1,CRC2:integer;
begin
// обнуляем
fCRC:="";
//складываем числа на чётных местах
CRC1:=StrToInt(fData[2]);
CRC1:=CRC1+StrToInt(fData[4]);
CRC1:=CRC1+StrToInt(fData[6]);
CRC1:=CRC1+StrToInt(fData[8]);
CRC1:=CRC1+StrToInt(fData[10]);
CRC1:=CRC1+StrToInt(fData[12]);
// полученное умножаем на 3
CRC1:=CRC1*3;
// складываем числа на нечётных местах
CRC2:=StrToInt(fData[1]);
CRC2:=CRC2+StrToInt(fData[3]);
CRC2:=CRC2+StrToInt(fData[5]);
CRC2:=CRC2+StrToInt(fData[7]);
CRC2:=CRC2+StrToInt(fData[9]);
CRC2:=CRC2+StrToInt(fData[11]);
// Складываем цифры Отбрасываем десятки
fCRC:=inttostr(CRC1+CRC2);
fCRC:=fCRC[length(fCRC)];
// Вычитаем из 10
if fCRC<>"0" then fCRC:=inttostr(10-strtoint(fCRC));
fData:=fData+fCRC;
end;
← →
Рамиль_ (2006-08-22 10:11) [12]Возьми Code39 - * по краям кода и любое количество знаков.
*1000012004599*
можно и буквы использовать, если сканер понимает.
← →
Layner © (2006-08-22 11:31) [13]
tesseract © (22.08.06 09:22)
Спаисбо за код, как раз что то подобное я и искал.
А на счет кодов отличных от EAN-13, можно конечно, но у нас во всех супермаркетах в городе пользуются именно EAN-13, и весовые кол-ва туда загоняют без проблем. Хотел тоже приспособить под свою задачку по выписке товара.
← →
tesseract © (2006-08-23 14:45) [14]
> Хотел тоже приспособить под свою задачку по выписке товара.
5 лет страдаю
← →
StriderMan © (2006-08-23 14:53) [15]а готовые компоненты не пробовали юзать? есть и бесплатные
← →
tesseract © (2006-08-23 15:02) [16]
> StriderMan © (23.08.06 14:53) [15]
В 2002 годы с нетом были напряги. С Delphi тоже - с тех пор мой личный компонент для принтеров Godex и др работает, лень переписывать :-)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.056 c