О технологии штрихкодирования

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

Сообщение Tolusha »

Сам не пользовался, как мне так по теме:
http://www.cwaddons.com/products/pnet/pnet.html
Анатолий.
alik
Новичок
Сообщения: 6
Зарегистрирован: 26 Май 2006, 13:18

штрихкод code39

Сообщение alik »

Люди добрые!
Если не жалко поделитесь структурой штрихкода CODE-39
Искал в инете (в том числе http://www.ean.ru). Есть описание
основных типов особенно подробно про EAN-13 (8 и т.д.)
Вроде бы CODE-39 везде упоминается и относится к стандартам,
которые будут прочитаны сканерами. А какая структура - сколько разрядов, есть ли контрольная цифра непонятно :(
Спасибо
Алик
P.S. планируем применять для внутреннего пользования
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

Сообщение Tolusha »

Формат CODE 39 (3 из 9), наиболее часто используемый формат штрих-кода, потому что он позволяет кодировать цифры, прописные и строчные буквы и некоторые знаки препинания (Прописные буквы A-Z, цифры 0-9, символ пробела, и символы:-,+,/,$,.,%). CODE 39 имеет изменяемую длину слов, позволяя кодировать любое количество цифр. 44 симовола могут быть закодированы, включая числа и все прописные буквы. Каждый символ состоит из пяти линий (две из которых толстые) и четырех внутренних промежутков (один из которых толстый). Каждый символ, следовательно, состоит из девяти линий (пять черных, четыре белых), три из которых толстые, отсюда и название штрих-кода "Код 3 из 9". Это отличный штрих-код для всеобщего употребления, который легко дешифровать, однако не очень компактный. Данные кода 39 всегда начинаются и заканчиваются с символом asterisk.
Анатолий.
alik
Новичок
Сообщения: 6
Зарегистрирован: 26 Май 2006, 13:18

штрихкод code39

Сообщение alik »

Спасибо, Анатолий
Получается что произвольный набор из шести цифр (с символом *
вначале и в конце) можно использовать для печати штрихкода
CODE-39. Попробую вставить в Report такую переменную, установить на нее шрифт типа С39HrP24DhTt, напечатать
несколько образцов и попробовать расшифровать где-нибудь
где есть сканер "в разрыв клавиатуры".
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Сообщение Олег »

softcreator писал(а):За более чем 7 лет использования табоговской библиотеки (в сырцах) в ее код потребовались залезть только один раз - когда пришлось печатать на спецпринтере для штрихкода с очень низким разрешеним. Больше никаких нареканий не было.
Тоже уже давно и с удовольствием пользую эту либу!
Но, как я уже писал в одной из тем здесь, там есть одно "узкое" место - при использовании некоторых принтерных драйверов под W2k обращение к WinAPI-функции CreateDC для определения разрешения принтера "валит" приложение в GPF. Лечится довольно легко - убираем весь код работы с WinAPI и получаем нужные данные прямо из PRINTER по соответствующим пропам.
А насчет "убогости" - тоже не понимаю о чем речь! Свою работу эта либа делает прекрасно - создает легкочитаемый большинством сканеров штрих-код. Дополнительно может выводить и значение, которое зашифровано в штрих-коде. Ну а рамка ЛЮБОЙ сложности легко делается прямо в отчете, вплоть до того, что можно выводить штрих-код поверх любой картинки-подложки!
alik
Новичок
Сообщения: 6
Зарегистрирован: 26 Май 2006, 13:18

О технологии штрихкодирования

Сообщение alik »

Интересно, а на матричном принтере можно добиться качества
необходимого для полноценной читаемости штрихкода?
Слышал, что нужно что то подшаманить
Например на compuprint 9078+
Аватара пользователя
AlexSmile
Посетитель
Сообщения: 46
Зарегистрирован: 14 Ноябрь 2005, 20:38
Откуда: Молдавия

О технологии штрихкодирования

Сообщение 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
Ткните пожалуйста куда копать.
Спасибо за внимание
Александр
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8024
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 95 раз

О технологии штрихкодирования

Сообщение Игорь Столяров »

Здесь проблема с созданием устройства печати по имени:
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 ! 😎
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

О технологии штрихкодирования

Сообщение gopstop2007 »

Новые принтера имеют 2 возможность печати чеков и label(наклеек). Проблема как правило с драйверами. Указали бы модель принтера. :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
AlexSmile
Посетитель
Сообщения: 46
Зарегистрирован: 14 Ноябрь 2005, 20:38
Откуда: Молдавия

О технологии штрихкодирования

Сообщение AlexSmile »

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