09.04.2012, 14:54 | #1 |
Участник
|
Печать на этикеточном принтере Datamax DMX I-4208
Сразу извиняюсь за то, что большинство вопросов будет из разряда "проще попробовать". Проблема только в том, что принтер находится от меня физически далеко и получается "программирование по переписке". Сегодня послал запрос, а завтра мне ответили, что ничего не получилось
Итак, есть этикеточный принтер Datamax DMX I-4208. Необходимо организовать печать этикеток из Axapta 2.5 SP3 RU на этот принтер. 1. Есть готовый отчет в Axapta который печатает этикетки на обычный принтер на листы формата A4. Попробовали распечатать этот отчет на этикеточный принтер. Печатать - печатает, но штрих-код сканер не распознает. Стоит ли дальше "животинку тиранить", в смысле пытаться добиться "читабельности" штрих-кода формируемого отчетом Axapta или формировать файл в принтерных кодах? 2. Не совсем понял из описания принтерных кодов - возможен ли автоматический перенос текста на несколько строк? Ну, например, если длина названия артикула не умещается в одну строку. Или придется "вручную" резать текст на куски и печатать каждый кусок с новой строки? Если "резать", то как определять длину фрагментов? 3. Стоит ли заморачиваться с загрузкой шрифтов в этикеточный принтер или достаточно использовать установленные шрифты по умолчанию?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
09.04.2012, 15:05 | #2 |
Ищущий знания...
|
Цитата:
Сообщение от Владимир Максимов
Итак, есть этикеточный принтер Datamax DMX I-4208. Необходимо организовать печать этикеток из Axapta 2.5 SP3 RU на этот принтер.
1. Есть готовый отчет в Axapta который печатает этикетки на обычный принтер на листы формата A4. Попробовали распечатать этот отчет на этикеточный принтер. Печатать - печатает, но штрих-код сканер не распознает. Стоит ли дальше "животинку тиранить", в смысле пытаться добиться "читабельности" штрих-кода формируемого отчетом Axapta или формировать файл в принтерных кодах? З.Ы. просто хочется понять. проблема в кодировке штрих - кода, или в качестве бумаги для этикеток...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.04.2012, 15:15 | #3 |
Модератор
|
Стоп-стоп-стоп. Есть есть 2 варианта печати на принтерах шк:
1. Кривой - через windows - драйвер. При этом технология печати на отличается от работы с обычным принтером, только размер листа поменьше + указывается GAP между этикетками - 2 или 3 мм / сплошная, тип печать - прямая или термотрансферная, нужно ли отклеивать / резать и прочие служебные настройки - в драйвере. Следовательно, сама этикета, включая шк, рисуется как отчет и передается в графическом виде, как картинка, с помощью драйвера. Шк рисуется компонентой - не всегда корректно. Из плюсов - работает как сетевой принтер, не надо непосредственно подключать к выделенному компьютеру. Да, и можно изображение передавать. 2. Нормальный, когда этикетка формируется набором команд (в старых - ESC-последовательностями), которые передаются в порт (или через компоненту), и уже по ним сам принтер с огромной скоростью формирует этикетку и печатает - бывает, в десять раз быстрее. Из минусов - принтер должен быть непосредственно подключен к компьютеру (что неудобно при использовании терминального режима), при использовании изображений - они должны быть предварительно загружены в память принтера, и потом командой говоришь, какой использовать и где его рисовать. Ко всем ШК принтерам идет инструкция с описанием команд. Я делал именно так. Владимир, непонятно, какой способ используете Вы? С одной стороны, говорите, что печатали на А4, а потом - про команды... С Уважением, Георгий |
|
09.04.2012, 15:20 | #4 |
Участник
|
Просто задача не решается. Для того, что бы принтер этикеток нормально печатал ШК (с дальнейшим сканированием) ему необходима посылать его управляющие команды. Т.е. создается бинарный файл из управляющих команд, в места где должен быть текст или шк на Х++ вставляется нужный текст и потом печатается командой copy файл принтер. Я как раз решал подобную проблему не давно…. Иногда, поставщики оборудования предлагают набор библиотек. Если ваш принтер поддерживает набор команд PPLA, то могу вам дать разработанную dll и обвязку на Х++.
С уважением, Дмитрий. |
|
09.04.2012, 15:29 | #5 |
Участник
|
Георгий, если хотите, что бы принтер печатал в терминальной сессии, то сделайте его общим и обращайтесь по сетевому имети \\комп\принтер
Проверено - работает. С уважением, Дмитрий. |
|
09.04.2012, 15:52 | #6 |
Модератор
|
А куда писать команды - в сетевой LPT? Это запасной вариант - брать переходник и WinAPI открывать как локальный порт. Я писал команды напрямую в LPT, через WinAPI.
С Уважением, Георгий |
|
09.04.2012, 15:52 | #7 |
Участник
|
Ну, есть центральный оффис и есть склад. В центральном оффисе стоит Axapta, а на складе - свое приложение. Между этими приложениями организован обмен, чтобы синхронизировать информацию об артикулах и заказах. Иногда возникает необходимость печать несколько этикеток в центральном оффисе. В этом случае печатают на листы формата А4 стандартным отчетом Axapta. Но, в основном, печать этикеток идет на складе на этикеточный принтер.
На складе установлена своя программа, которая и организует печать этикеток на этикеточный принтер. Как именно она это делает - не известно. Код приложения закрыт и внести изменения невозможно. Разработчики вносить изменения в приложение отказываются (точнее, мы не можем им заплатить столько, чтобы они захотели внести эти изменения ) Проблема как раз в этом и заключается. Иногда, для некоторых этикеток, необходимо внести кое-какие изменения и распечатать их на этикеточном принтере. Поскольку речь идет о больших количествах (тысячи и десятки тысяч), то печатать на листы формата А4 - не разумно. А внести изменение в складскую программу - невозможно. Отсюда логичный вывод - печатать из Axapta на этикеточный принтер напрямую. На складе также установлена Axapta. Сейчас этикеточный принтер на складе подключен через print-server, но по мой просьбе его настроят как расшаренный ресурс к одному из компьютеров. PS: Собственно, отчет в Axapta на лист A4 при разработке тестировали, чтобы штрих-код распознавался сканерами. Но может проблема в конкретном артикуле. Я попросил проверить, но, как уже говорил, результат будет только завтра PPS: Про алгоритмы формирования текста в принтерных кодах и способах его отправки - я в курсе. Поиском пользоваться умею Здесь уже эта проблема неоднократно обсуждалась. Да и документация есть. Я только хотел прояснить некоторые моменты, которые легко выясняются опытным путем, но, как я уже говорил, воспользоваться этим самым "опытным путем" в моем случае несколько затруднительно
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
09.04.2012, 16:07 | #8 |
Участник
|
Георгий, команда простая :
copy prn.bin \\sklad-1\argox214 prn.bin файл с командами Можно ее толкать, например, через winexec или его аналоги. С уважением, Дмитрий |
|
|
За это сообщение автора поблагодарили: George Nordic (2). |
09.04.2012, 16:20 | #9 |
Участник
|
Вообще-то, есть более простой способ отправки на этикеточный принтер, описанный здесь
Печать этикеток из AX 4.0 sp.2 Т.е. это обычное формирование текстового файла в кодовой странице 866, на вместо имени текстового файла указывается сетевое имя принтера. Но, как я уже говорил, пока не проверял как это будет работать...
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
09.04.2012, 16:23 | #10 |
Ищущий знания...
|
Цитата:
почему спрашиваю, у меня в свое время была проблема, когда иногда вдруг некоторые штрих - коды не читались сканерами... долго мучились, потом я сделал лог и увидел что иногда кодировка штрих - кода (то что в итоге отображается полосочками) сбивается и вместо кодировки там просто цифры. Решение это проблемы я описывал в теме "Проблема печати Штрих-кода"
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.04.2012, 16:33 | #11 |
Участник
|
Цитата:
Сообщение от lev
как Вы кодируете штрих код?
почему спрашиваю, у меня в свое время была проблема, когда иногда вдруг некоторые штрих - коды не читались сканерами... долго мучились, потом я сделал лог и увидел что иногда кодировка штрих - кода (то что в итоге отображается полосочками) сбивается и вместо кодировки там просто цифры. Решение это проблемы я описывал в теме "Проблема печати Штрих-кода"
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
09.04.2012, 17:18 | #12 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
1. Есть готовый отчет в Axapta который печатает этикетки на обычный принтер на листы формата A4. Попробовали распечатать этот отчет на этикеточный принтер. Печатать - печатает, но штрих-код сканер не распознает. Стоит ли дальше "животинку тиранить", в смысле пытаться добиться "читабельности" штрих-кода формируемого отчетом Axapta или формировать файл в принтерных кодах?
Единственно, в случае отчета из Аксапты использовались ш/к code39 и code128. Дригие не пробовал, но проблемы быть не должно Цитата:
Сообщение от Владимир Максимов
2. Не совсем понял из описания принтерных кодов - возможен ли автоматический перенос текста на несколько строк? Ну, например, если длина названия артикула не умещается в одну строку. Или придется "вручную" резать текст на куски и печатать каждый кусок с новой строки? Если "резать", то как определять длину фрагментов?
В нашем случае было по 38 символов для этики шириной 58 мм. Вообще, зависит от размера символов, используемых при печати. Если мне память не изменяет, выяняли количество символов экспериметрально Цитата:
Модель принтера - та-же самая
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Владимир Максимов (5). |
09.04.2012, 19:06 | #13 |
Участник
|
pechat na datamax razmer 60x40mm ... itemid 6 simvolov podognan
itemname perenositsa avtomatom |
|
09.04.2012, 19:24 | #14 |
Участник
|
Цитата:
Неизвестный код экспорта: 'PR' Неизвестный код экспорта: 'EN'
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
09.04.2012, 19:28 | #15 |
Участник
|
ax 3.0 SP4 Eng-Est
|
|
09.04.2012, 19:33 | #16 |
Участник
|
Declaration
BarCode barCode; Init barCode = BarCode::construct(BarcodeType::Code128); InventBatch_BarCode.font(barCode.getFont(5)); InventBatch_BarCode.fontSize(72); display BarcodeString barCode() { barCodeStr = strfmt("%1", inventTable.itemId); barCode.string(true, barCodeStr); barCode.encode(); return barCode.barcodeStr(); } |
|
09.04.2012, 19:46 | #17 |
Участник
|
Вообще-то, в стандарте Ax3.0 у класса BarCode нет метода getFont(). А, кроме того, я подозреваю, что и прочие метды класса BarcodeCode128 у Вас тоже очень сильно переделаны.
Впрочем, у нас идет печать штрих кодов EAN13. И, как я уже упоминал, при печати на обычную бумагу формата А4 обычным лазерником штрих-код нормально считывается сканерами.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
10.04.2012, 09:39 | #18 |
Участник
|
Кстати, еще такой момент
А как ориентирован штрих-код относительно хода бумаги? Если вдоль (т.е. штрихи перпендикулярны направлению движения), то возможны проблемы с чтением из-за неравномерности натяга бумаги или неисправности/необслуженности механики принтера И термоголовку проверяли на битые элементы (это актуально, если штрих-код ориентирован поперек направления движения ленты)? Пусть попробуют напечатать черный прямоугольник из ворда или пайнта. Если будут непропечатанные полоски в районе расположения штрих-кода, то головку надо будет менять или пытаться разместить ш/к так, что бы он не попадал на битые элементы Еще, для контроля битости головки добавляют печать сплошной полосы над или под штрих-кодом. Тогда можно будет сразу выявить проблему визуально. На многих моделях весов со штрих-этикетками это делают по умолчанию
__________________
Axapta v.3.0 sp5 kr2 |
|
10.04.2012, 09:48 | #19 |
Участник
|
По-моему этот принтер поддерживает ZPL-эмуляцию.
Может лучше печатать этикетки через ZPL? Попробуйте отправить через CommaIo или AsciiIo X++: str scriptZebra ; scriptZebra ='^XA^CF0,89^FO20,50^FDA GUIDE TO^FS^FO20,150^FDTHE ZPL II^FS^FO20,250^FDPROGRAMMING^FS^FO20,350^FDLANGUAGE^FS^XZ'; |
|
10.04.2012, 10:37 | #20 |
Участник
|
Получил ответ. Одна и та же этикетка по одному и тому же артикулу при печати на обычный лазерник на бумагу формата А4 штрих-код читается, при печати на Datamax - штрих-код не читается. В данном случае, речь идет о печати отчета Axapta, который изначально разрабатывался для печати на бумагу формата А4.
То, что напечаталось в Datamax во вложении. Штрих код формируется по EAN13. Штрихи самого штрих-кода по направлению движения ленты принтера. Печать идет снизу вверх, если смотреть по картинке. Цитата:
Сообщение от AndyD
Еще, для контроля битости головки добавляют печать сплошной полосы над или под штрих-кодом. Тогда можно будет сразу выявить проблему визуально.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|