Страница 2 из 2
Добавлено: 02 Июнь 2006, 11:22
Tolusha
штрихкод code39
Добавлено: 08 Июнь 2006, 11:55
alik
Люди добрые!
Если не жалко поделитесь структурой штрихкода CODE-39
Искал в инете (в том числе
http://www.ean.ru). Есть описание
основных типов особенно подробно про EAN-13 (8 и т.д.)
Вроде бы CODE-39 везде упоминается и относится к стандартам,
которые будут прочитаны сканерами. А какая структура - сколько разрядов, есть ли контрольная цифра непонятно
Спасибо
Алик
P.S. планируем применять для внутреннего пользования
Добавлено: 08 Июнь 2006, 12:24
Tolusha
Формат CODE 39 (3 из 9), наиболее часто используемый формат штрих-кода, потому что он позволяет кодировать цифры, прописные и строчные буквы и некоторые знаки препинания (Прописные буквы A-Z, цифры 0-9, символ пробела, и символы:-,+,/,$,.,%). CODE 39 имеет изменяемую длину слов, позволяя кодировать любое количество цифр. 44 симовола могут быть закодированы, включая числа и все прописные буквы. Каждый символ состоит из пяти линий (две из которых толстые) и четырех внутренних промежутков (один из которых толстый). Каждый символ, следовательно, состоит из девяти линий (пять черных, четыре белых), три из которых толстые, отсюда и название штрих-кода "Код 3 из 9". Это отличный штрих-код для всеобщего употребления, который легко дешифровать, однако не очень компактный. Данные кода 39 всегда начинаются и заканчиваются с символом asterisk.
штрихкод code39
Добавлено: 08 Июнь 2006, 14:06
alik
Спасибо, Анатолий
Получается что произвольный набор из шести цифр (с символом *
вначале и в конце) можно использовать для печати штрихкода
CODE-39. Попробую вставить в Report такую переменную, установить на нее шрифт типа С39HrP24DhTt, напечатать
несколько образцов и попробовать расшифровать где-нибудь
где есть сканер "в разрыв клавиатуры".
Добавлено: 09 Июнь 2006, 6:51
Олег
softcreator писал(а):За более чем 7 лет использования табоговской библиотеки (в сырцах) в ее код потребовались залезть только один раз - когда пришлось печатать на спецпринтере для штрихкода с очень низким разрешеним. Больше никаких нареканий не было.
Тоже уже давно и с удовольствием пользую эту либу!
Но, как я уже писал в одной из тем здесь, там есть одно "узкое" место - при использовании некоторых принтерных драйверов под W2k обращение к WinAPI-функции CreateDC для определения разрешения принтера "валит" приложение в GPF. Лечится довольно легко - убираем весь код работы с WinAPI и получаем нужные данные прямо из PRINTER по соответствующим пропам.
А насчет "убогости" - тоже не понимаю о чем речь! Свою работу эта либа делает прекрасно - создает легкочитаемый большинством сканеров штрих-код. Дополнительно может выводить и значение, которое зашифровано в штрих-коде. Ну а рамка ЛЮБОЙ сложности легко делается прямо в отчете, вплоть до того, что можно выводить штрих-код поверх любой картинки-подложки!
О технологии штрихкодирования
Добавлено: 09 Июнь 2006, 9:55
alik
Интересно, а на матричном принтере можно добиться качества
необходимого для полноценной читаемости штрихкода?
Слышал, что нужно что то подшаманить
Например на compuprint 9078+
О технологии штрихкодирования
Добавлено: 22 Апрель 2016, 16:26
AlexSmile
Добрый день всем.
Также использую древнюю табогу, печатные формы еще на Clarion 5.5, сделаны еще лет 5 назад. Их большое количество и переделывать не хочется.
Все работало нормально.
Сейчас купили новые принтера и при формировании штрихкода на печатной форме стало вылезать
Unable to Create Print Device Context,CreateDC Error.
Я нашел этот код в d:\C55\Libsrc\barcode.clw
Код: Выделить всё
hDC SIGNED
!For reports
xDevMode LIKE(tDEVMODE)
lpDriver CSTRING(121)
lpDevice CSTRING(121)
lpPort CSTRING(121)
CODE
IF SELF.isReport
lpDriver = PRINTER{PROPPRINT:Driver}
lpDevice = PRINTER{PROPPRINT:device}
lpPort = PRINTER{PROPPRINT:Port}
xDevMode = PRINTER{PROPPRINT:DevMode}
hDC = CreateDC(lpDriver,lpDevice,lpPort,xDevMode) !Get a printer DC
IF hDC !..if one was obtained.
SELF.LogPixelsX = GetDeviceCaps(hDC, DCaps:LOGPIXELSX)
SELF.LogPixelsY = GetDeviceCaps(hDC, DCaps:LOGPIXELSY)
IF SELF.BarAngle = 0 OR SELF.BarAngle = 1800
SELF.ThousPerPixel = ROUND(1000/SELF.LogPixelsX,1)
ELSIF SELF.barAngle = 900 OR SELF.barAngle = 2700
SELF.ThousPerPixel = ROUND(1000/SELF.LogPixelsY,1)
END
ELSE
MESSAGE('Unable to Create Print Device Context','CreateDC Error!',ICON:Exclamation,BUTTON:OK)
END
!MESSAGE(GetDeviceCaps(hDC, DCaps:HorzRes) & ',' & GetDeviceCaps(hDC, DCaps:VertRes))
tmp# = deleteDC(hDC)
ELSE
hDC = GetDC(0)
SELF.LogPixelsX = GetDeviceCaps(hDC, DCaps:LOGPIXELSX)
SELF.LogPixelsY = GetDeviceCaps(hDC, DCaps:LOGPIXELSY)
IF SELF.BarAngle = 0 OR SELF.BarAngle = 1800
SELF.ThousPerPixel = ROUND(1000/SELF.LogPixelsX,1)
ELSIF SELF.barAngle = 900 OR SELF.barAngle = 2700
SELF.ThousPerPixel = ROUND(1000/SELF.LogPixelsY,1)
END
ReleaseDC(0,hDC)
END
RETURN SELF.ThousPerPixel
Ткните пожалуйста куда копать.
Спасибо за внимание
О технологии штрихкодирования
Добавлено: 22 Апрель 2016, 16:38
Игорь Столяров
Здесь проблема с созданием устройства печати по имени:
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Могу только догадываться, но скорее всего какая-то беда с входными параметрами
Код: Выделить всё
lpDriver = PRINTER{PROPPRINT:Driver}
lpDevice = PRINTER{PROPPRINT:device}
lpPort = PRINTER{PROPPRINT:Port}
xDevMode = PRINTER{PROPPRINT:DevMode}
Нужно их вывести и посмотреть. Может оказаться, что PRINTER{PROPPRINT: ...} что-то не может получить для
драйвера этого принтера. Тогда нужно сделать настройку параметров принтера и прописать их вручную ...
(например через INI файл)
Так наверно. Возможно переход на современную версию Clarion также может решить получение параметров
из драйвера современных устройств печати ... но это уже надо работать.

О технологии штрихкодирования
Добавлено: 22 Апрель 2016, 18:27
gopstop2007
Новые принтера имеют 2 возможность печати чеков и label(наклеек). Проблема как правило с драйверами. Указали бы модель принтера.

О технологии штрихкодирования
Добавлено: 24 Апрель 2016, 9:32
AlexSmile
Добрый день всем.
Принтер у меня такой HP LaserJet 400 M401 PCL 6, но такая же ошибка всплыла и на принтере Canon (тоже новый, но модель не упомню).
В общем методом тыка было выяснено что под ОС 32 все работает также и раньше, а вот под 64 бит вылезает данная ошибка.
В d:\C55\Libsrc\barcode.clw
Я по сообщению ув. Олега убрал winapi-шные процедуры. Ошибка Unable to Create Print Device Context пропала, но штрихкод перестал масштабироваться. Разъезжался на весь лист репорта. Я немного переделал шаблон табоги, указав свои значения толщины линии штрихкода, и все заработало как и раньше.
Спасибо большое всем.