Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизПринтер Zebra - с чего начать чайнику? Найти похожие ветки
← →
kaif © (2006-08-28 02:22) [0]У заказчика есть такой принтер. Я с принтерами напрямую вообще не работал, тем более с такими.
С чего начать?
Тем более, что у меня такого принтера под рукой нет, а у заказчика максимум, что можно сделать - отлаживать что-то уже работающее.
Подскажите какой-нибудь самый простой пример типа "Hello world" для
принтера Zebra.
Мне нужно из программы, написанной на Delphi, послать на него этикетку (штрих-код плюс некоторый текст).
Я нашел файл EPL2_Manula.pdf. Там описаны какие-то команды. Возможно я смогу сам разобраться, если пойму, как вообще эти команды посылаются на принтер из дельфийской программы.
Буду благодарен за любой простой пример.
С уважением.
← →
boriskb © (2006-08-28 07:42) [1]kaif © (28.08.06 2:22)
Соболезную
Я с ними намучился...
Ужасно капризная штука в плане настройки.
Сейчас у меня два работают, но я до сих пор не понимаю "Как?" :)
Если нет документации могу выслать.
есть с z и без неё.
← →
Сергей М. © (2006-08-28 11:49) [2]
> kaif © (28.08.06 02:22)
см. [1]
Мне пришлось столкнуться с моделью Zebra LP2824 - штука действительно капризная.
Единственное что могу подсказать - не лезь в EPL напрямую, это задача драйвера принтера.
Тебе следует узнать у заказчика, какие типоразмеры (большинство из них стандартизовано) этикеток он планирует использовать. Дальше все до смешного просто - какими-угодно средствами (хоть в том же Excel, программно или вручную) делаешь дизайн этикетки конкретного типоразмера и отправляешь все это на печать на зарегистрированный Zebra-принтер. Все остальное по идее должен сделать Zebra-драйвер: принять вх.поток (канву будущего изображения, сформированную тем же Excel"ом по команде печати листа), преобразовать его в EPL2-формат, сформировать задание и запулить его в очередь спулера.
← →
Ломброзо © (2006-08-28 12:33) [3]Сергей М. © (28.08.06 11:49) [2]
Про типоразмеры согласен, но вот про способ вывода - категорически нет. Действительно, печатать можно двумя способами: 1) подготовкой изображения этикетки и отправкой оного спулеру Windows 2) вызовом нативных команд принтера. В первом случае придётся или искать алгоритмы формирования штрих-кодов, или специальные шрифты, или компоненты, умеющие генерировать штрих-код.
Алгоритмы я отринул сразу.
Шрифты в принципе в интернете кое-где валяются, но как правило или платные, или демонстрационные, или корявые. К тому же контрольную сумму при использовании шрифтов все равно придётся рассчитывать самому.
Компоненты тоже имеются, и обычно тоже платные (не знаю, как для Delphi, но для дотнета обычно просят денежку).
В чем преимущество EPL:
1) этикетка всегда получается читаемая сканером
2) в вашем распоряжении практически все стандарты штрих-кодирования.
В общем, в итоге я сделал так: определил интерфейс и написал для зебры две реализации - рабочую, использующую для печати этикеток команды EPL, и "заглушку", формирующую этикетку при помощи GDI.
← →
Ломброзо © (2006-08-28 12:39) [4]На принтер команды посылаются через параллельный или последовательный порт, с которым можно работать как с файлом через функции WinAPI (см. CreateFile, ReadFile, WriteFile) или через какой-нить компонент для работы с COM и LPT-портами.
← →
Сергей М. © (2006-08-28 13:01) [5]
> Ломброзо © (28.08.06 12:33) [3]
> про способ вывода - категорически нет
Любой драйвер любого дивайса как-раз и существует для сопряжения двух интерфейсов.
Конкретно в случае с Win-принтером (не важно, зебра там или еще какой-то зверь) его драйвер как раз и занимается сопряжением GDI и одним или более нативных языковых интерфейсов принтера.
Здесь что-то не так ? Аргументируй ...
← →
Сергей М. © (2006-08-28 13:05) [6]
> Ломброзо
Разумеется, если речь идет о прямом выводе на порт принтера (минуя драйвер принтера и спулер), следует пользовать непосредственно нативный язык. С этим я согласен. Но случай ли это автора - об этом нужно спросить у автора, если он конечно владеет деталями.
← →
VICTOR_ (2006-08-28 13:08) [7]Могу предложить вариант(правда не непосредственно работающий с EPL).
1.Устанавливается драйвер
http://www.zebra.com/id/zebra/na/en/index/products/printers/desktop/lp2824.4.tabs.html
2.Устанавливается программа Create-A-Label Tools v.3.06.(далее CAL)
Насколько мне известо - она бесплатна, хотя сейчас и снята с поддержки фирмой Zebra.
3.В программе CAL настраивается внешний вид етикетки и сохраняется в виде шаблона *.lbl(делается 1 раз)
4.В Delphi - формируется тестовый файл определенного формата(см. справку к программе CAL), в котором передаются все параметры - название, цена, штрихкод и т.д. и запускается выполнение CAL с передачей ему в качестве параметра - текстового файла
lv.exe /cmd news18x30A.cmd
Данный вариант работает на нескольких фирмах с Zebra LP2824.
Среди замеченный недостатков - при печати партиями более 5 штук к ряду на одной из фирм иногда недопечатывало етикетки. Хотя это, возможно, были глюки драйвера либо самого принтера.
← →
Gorlum © (2006-08-28 14:08) [8]Изучай EPL и всё - язык очень простой (ну пара дней на изучение и ещё пара дней на опробирование результатов) и результат будет гарантировано хороший.
Из Delphi я делал текстовый файл с командами и копировал его в порт принтера. Вот и всё
← →
Gorlum © (2006-08-28 14:10) [9]Кстати, если у тебя мало форматов этикеток, что создай один/несколько шаюблонов (ну там с разными размерами и т.п.), а в нужное место подставлять данные для печати: данные для штрих-кода, текст
← →
Сергей М. © (2006-08-28 14:37) [10]
> делал текстовый файл с командами
Покажи образчик сего творения, если не затруднит ..
← →
Gorlum © (2006-08-28 14:44) [11]К сожалению, затруднит.
Из той компании уволился (это несколько лет назад было) - а исходники все там остались.
← →
Ломброзо © (2006-08-28 14:50) [12]Сергей М. © (28.08.06 14:37) [10]
На инсталляционном диске есть примеры bat-файлов и файлов с последовательностями команд. В самом простом случае нужно скопировать файл, содержащий последовательность команд, в порт: copy file.txt LPT1.
← →
Сергей М. © (2006-08-28 14:52) [13]
> Ломброзо © (28.08.06 14:50) [12]
И вот здесь-то и поджидает засада.
← →
Gorlum © (2006-08-28 14:55) [14]Ну хоть сразу пиши, что имеешь ввиду...
← →
Ломброзо © (2006-08-28 14:58) [15]Где засада? Просто удобная лазейка для отладки. Кроме того, если расшарить принтер как сетевой, то можно печатать и так: copy file.txt \\comp\zebra2824
← →
Gorlum © (2006-08-28 15:01) [16]Если шрифты имеются ввиду - то это не засада, а технический нюанс, который решается за 10 минут
← →
Сергей М. © (2006-08-28 15:16) [17]Засада в неадекватности реакции принтера на требование к нему напечатать след.этикетку, в то время как он занят интерпретацией/исполнением EPL2-предложения для печати предыдущей этикетки.
Засада имеет место, когда от LP2824 (про другие ничего не могу сказать) требуют выполнить встроенный рендеринг текста, в то время как предыдущее аналогичное требование находится в этот момент в стадии выполнения.
Упомянутой засады нет, если упомянутой Зебре поступает готовая (сформированная штатным драйвером) битовая маска будущего изображения вместо предложения внутреннего рендеринга того же изображения.
← →
Ломброзо © (2006-08-28 15:24) [18]Ну, примитивы синхронизации никто не отменял
← →
Gorlum © (2006-08-28 15:30) [19]Хм, вообще этот процесс занимает не минуты...
пара секунд - максимум.
Ну и [18], конечно.
← →
Сергей М. © (2006-08-28 16:46) [20]
> Ломброзо © (28.08.06 15:24) [18]
>
> примитивы синхронизации никто не отменял
А в батниках в демо-примерах к дивайсу на это, конечно же, заострено особое внимание)
Или как ?)
Или готов процитировать опровержение ?
> Gorlum © (28.08.06 15:30) [19]
>
> Хм, вообще этот процесс занимает не минуты...
> пара секунд - максимум.
Какой такой "процесс" ?)
← →
kaif © (2006-08-28 16:54) [21]Спасибо всем!
Из Ваших сообщений я понял на данный момент вот что:
1. Есть два способа общаться с принтером: на нативных командах и через универсальную графическую канву Windows. В отношении Zebra первый способ даст более гарантированное качество печати (что может оказаться важным для сканеров штрих-кодов), второй способ проще в отношении реализации и совместимости разных принтеров, но требует рисовать штрихкоды самому.
2. Язык EPL действительно имеет отношение к этой теме, я не зря скачал по нему мануал. И нативный подход мне кажется интуитивно более верным в данном случае.
3. Не имея под рукой принтера отлаживать это все будет довольно сложно.
Я попытался пока что хотя бы обратиться к принтеру вообще (у меня под рукой нет Зебры, только LaserJet 5L). Собрав что-то из обрывков текстов VCL, я соорудил вот это вот:procedure TForm1.Button1Click(Sender: TObject);
var
hLPT1: THandle;
Buffer: array[0..1023] of Char;
IpNumberOfBytesWritten: DWORD;
begin
hLPT1 := CreateFile("LPT1", GENERIC_READ or GENERIC_WRITE, 0,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hLPT1 = INVALID_HANDLE_VALUE then
raise EAbort.CreateFmt("Ошибка открытия порта: %d",[GetLastError]);
try
FillChar(Buffer, StrLen(Buffer), "A");
if not WriteFile(hLPT1, Buffer, StrLen(Buffer), IpNumberOfBytesWritten, nil) then
raise EAbort.CreateFmt("Ошибка записи в порт: %d",[GetLastError]);
finally
CloseHandle(hLPT1);
end;
end;
Потрясающе, но это получилось!
Принтер напечатал строку из букв "AAAAAAAAA..."
----------
Теперь хочу понять следующее. Видимо я должен попытаться написать в буфер команду на языке EPL.
Может у кого-то есть пример самой простой команды (набора команд) для какой-нибудь этикетки?
Дальше я уже сам разберусь по мануалу ELP.
Жаль, что у меня под рукой нет этой Зебры сейчас. :(
← →
Сергей М. © (2006-08-28 17:01) [22]Скачай себе ZebraDesigner - многое сразу прояснится.
← →
horse © (2006-08-28 17:08) [23]Пробовал не одну Зебру. Использовал FastReport и дрова принтера - проблем не имел. Печатаешь все что хочешь как на обычный принтер.
Зачем лезть к нему напрямую? Люди же для нас придумали ООП и наследственность - используйте уже написааный код до вас.
← →
Ломброзо © (2006-08-28 17:09) [24]Этикетка 3x2 см, EAN13
------------------------------
O
N
D7
Q168,16
q240
A6,6,0,1,1,1,N,"Our company"
A6,25,0,1,1,1,N,"28.08.06"
A6,45,0,1,1,1,N,"IVANOV P 01.01.01"
B6,71,0,E30,2,6,45,B,"000102390006"
P1
--------------------------------
← →
kaif © (2006-08-28 17:18) [25]2 Ломброзо © (28.08.06 17:09) [24]
Спасибо!
А как насчет русского языка там дело обстоит?
Не придется ли мне грузить туда фонты?
Я не представляю вообще, как это сделать...
2 horse © (28.08.06 17:08) [23]
А штрих-код в FК я смогу сделать хороший, например EAN13?
← →
Ломброзо © (2006-08-28 17:31) [26]Русский не пробовал, но сомневаюсь в том, что нативный шрифт поддерживает кириллицу.
Оппоненты наверное в чем-то правы, в том смысле, что если есть нормальная софтинка, умеющая формировать растровое изображение этикетки, то лучше использовать её. Я же был ограничен дотнетом и условием не использовать ПО третьих производителей, поэтому заюзал нативный драйвер, но в то же время оставил лазейку для использование стандартного.
← →
Alex> (2006-08-28 17:41) [27]2 kaif EAN13 у FastReport есть, только что посмотрел :)
← →
kaif © (2006-08-28 17:45) [28]У меня есть лицензионный FastReport. И его я так или иначе намерен использовать в программе для печати на обычные принтеры.
Так что если в FR мне удастся получить качественный штрих-код, то, пожалуй, я воспользуюсь этим вариантом.
А как юзать FR в этом случае?
Каждая этикетка соотвествует одной странице?
У меня этикетки здоровые (где-то квадратный дециметр каждая).
← →
kaif © (2006-08-28 17:49) [29]Да, я уже вижу, что FR имеет целый ряд форматов штрих-кода и может печатать их под разными углами. Интересно, насколько это хорошо впишется в разрешение принтера.
← →
horse © (2006-08-28 17:54) [30]Разрешение дает нормальное, правда, чесноговоря коды напечатанные не на наклейке, а на обычной бумаге на обычном лазарнике читаются лучше.
> Каждая этикетка соотвествует одной странице?
Да. Делать можно все что угодно, хоть всю базу сразу на печать отправить. ФР - очень гибкая штука!
Величина этикеток не имеет никакого значения, у меня тоже большие.
← →
kaif © (2006-08-28 18:28) [31]Ну что же. Всем спасибо огромное!
С учетом того, что принтера под рукой для серьезных экспериментов пока нет, то скорее всего я начну с FastReport-а, чтобы сразу добиться хотя бы какой-то печати. Если штрих-код будет плохо читаться, тогда уже стану думать: разбираться с разрешением принтера или переходить на EPL.
← →
Gorlum © (2006-08-29 11:18) [32]На разрешени принтера я бы грешить вообще не стал... (ну если только головка век свой отживает)
Даже 203 dpi может печатать очень мелкие коды... Просто они читаться будут сканером с более высоким размешением.
А по шрифтам - так это да - их грузить надо.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.059 c