О технологии штрихкодирования
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
штрихкод code39
Люди добрые!
Если не жалко поделитесь структурой штрихкода CODE-39
Искал в инете (в том числе http://www.ean.ru). Есть описание
основных типов особенно подробно про EAN-13 (8 и т.д.)
Вроде бы CODE-39 везде упоминается и относится к стандартам,
которые будут прочитаны сканерами. А какая структура - сколько разрядов, есть ли контрольная цифра непонятно
Спасибо
Алик
P.S. планируем применять для внутреннего пользования
Если не жалко поделитесь структурой штрихкода CODE-39
Искал в инете (в том числе http://www.ean.ru). Есть описание
основных типов особенно подробно про EAN-13 (8 и т.д.)
Вроде бы CODE-39 везде упоминается и относится к стандартам,
которые будут прочитаны сканерами. А какая структура - сколько разрядов, есть ли контрольная цифра непонятно

Спасибо
Алик
P.S. планируем применять для внутреннего пользования
- Tolusha
- Активист
- Сообщения: 123
- Зарегистрирован: 11 Январь 2006, 16:50
- Откуда: Украина, г. Черкассы
- Контактная информация:
Формат CODE 39 (3 из 9), наиболее часто используемый формат штрих-кода, потому что он позволяет кодировать цифры, прописные и строчные буквы и некоторые знаки препинания (Прописные буквы A-Z, цифры 0-9, символ пробела, и символы:-,+,/,$,.,%). CODE 39 имеет изменяемую длину слов, позволяя кодировать любое количество цифр. 44 симовола могут быть закодированы, включая числа и все прописные буквы. Каждый символ состоит из пяти линий (две из которых толстые) и четырех внутренних промежутков (один из которых толстый). Каждый символ, следовательно, состоит из девяти линий (пять черных, четыре белых), три из которых толстые, отсюда и название штрих-кода "Код 3 из 9". Это отличный штрих-код для всеобщего употребления, который легко дешифровать, однако не очень компактный. Данные кода 39 всегда начинаются и заканчиваются с символом asterisk.
Анатолий.
штрихкод code39
Спасибо, Анатолий
Получается что произвольный набор из шести цифр (с символом *
вначале и в конце) можно использовать для печати штрихкода
CODE-39. Попробую вставить в Report такую переменную, установить на нее шрифт типа С39HrP24DhTt, напечатать
несколько образцов и попробовать расшифровать где-нибудь
где есть сканер "в разрыв клавиатуры".
Получается что произвольный набор из шести цифр (с символом *
вначале и в конце) можно использовать для печати штрихкода
CODE-39. Попробую вставить в Report такую переменную, установить на нее шрифт типа С39HrP24DhTt, напечатать
несколько образцов и попробовать расшифровать где-нибудь
где есть сканер "в разрыв клавиатуры".
- Олег
- Ветеран движения
- Сообщения: 122
- Зарегистрирован: 16 Июль 2005, 2:35
- Откуда: Москва
- Контактная информация:
Тоже уже давно и с удовольствием пользую эту либу!softcreator писал(а):За более чем 7 лет использования табоговской библиотеки (в сырцах) в ее код потребовались залезть только один раз - когда пришлось печатать на спецпринтере для штрихкода с очень низким разрешеним. Больше никаких нареканий не было.
Но, как я уже писал в одной из тем здесь, там есть одно "узкое" место - при использовании некоторых принтерных драйверов под W2k обращение к WinAPI-функции CreateDC для определения разрешения принтера "валит" приложение в GPF. Лечится довольно легко - убираем весь код работы с WinAPI и получаем нужные данные прямо из PRINTER по соответствующим пропам.
А насчет "убогости" - тоже не понимаю о чем речь! Свою работу эта либа делает прекрасно - создает легкочитаемый большинством сканеров штрих-код. Дополнительно может выводить и значение, которое зашифровано в штрих-коде. Ну а рамка ЛЮБОЙ сложности легко делается прямо в отчете, вплоть до того, что можно выводить штрих-код поверх любой картинки-подложки!
О технологии штрихкодирования
Интересно, а на матричном принтере можно добиться качества
необходимого для полноценной читаемости штрихкода?
Слышал, что нужно что то подшаманить
Например на compuprint 9078+
необходимого для полноценной читаемости штрихкода?
Слышал, что нужно что то подшаманить
Например на compuprint 9078+
О технологии штрихкодирования
Добрый день всем.
Также использую древнюю табогу, печатные формы еще на Clarion 5.5, сделаны еще лет 5 назад. Их большое количество и переделывать не хочется.
Все работало нормально.
Сейчас купили новые принтера и при формировании штрихкода на печатной форме стало вылезать
Unable to Create Print Device Context,CreateDC Error.
Я нашел этот код в d:\C55\Libsrc\barcode.clw
Ткните пожалуйста куда копать.
Спасибо за внимание
Также использую древнюю табогу, печатные формы еще на 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
Спасибо за внимание
Александр
- Игорь Столяров
- Ветеран движения
- Сообщения: 8024
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 95 раз
О технологии штрихкодирования
Здесь проблема с созданием устройства печати по имени:
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Могу только догадываться, но скорее всего какая-то беда с входными параметрами
Нужно их вывести и посмотреть. Может оказаться, что PRINTER{PROPPRINT: ...} что-то не может получить для
драйвера этого принтера. Тогда нужно сделать настройку параметров принтера и прописать их вручную ...
(например через INI файл)
Так наверно. Возможно переход на современную версию Clarion также может решить получение параметров
из драйвера современных устройств печати ... но это уже надо работать.
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 также может решить получение параметров
из драйвера современных устройств печати ... но это уже надо работать.

Make Clarion Great Again ! 
-
- Полимат
- Сообщения: 1810
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 24 раза
- Поблагодарили: 10 раз
О технологии штрихкодирования
Новые принтера имеют 2 возможность печати чеков и label(наклеек). Проблема как правило с драйверами. Указали бы модель принтера. 

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