|
15.05.2006, 12:53 | #1 |
Участник
|
Как отправить файл с кодами, понятными принтеру, в порт принтера?
Нужно распечатать этикетку. Дизайн готовится в отдельной проге. Она выдает текстовый файл ***.prn в котором команды понятные принтеру. Печатать надо на "Зебре" (как вариант). Моя задача в файл подставить нужные числа и распечатать. По идее такой файл просто отправляется в LPT (порт принтера).
Как такое делается в Аксапте? |
|
15.05.2006, 13:00 | #2 |
Программатор
|
А можно без Аксапты обойтись? Просто раз этикетка формируется не в Аксапте, то можно и на печать ее посылать сторонней программой. Можно в Аксапте создать Report в АОТе (чтоб только по размерам подходил) и из неё как на обычный принтер посылать с какими хотите пераметрами (у меня второй вариант).
Последний раз редактировалось Sada; 15.05.2006 в 13:05. |
|
15.05.2006, 13:05 | #3 |
Участник
|
Шаблон этикетки по идее постоянный, из аксапты в него только данные вставляются.
"Можно в Аксапте создать Report в АОТе (чтоб только по размерам подходил) " - имеете ввиду создаватькопию дизайна? (там штрих код есть..) |
|
16.05.2006, 06:35 | #4 |
Участник
|
Цитата:
Сообщение от Sada
Можно в Аксапте создать Report в АОТе (чтоб только по размерам подходил) и из неё как на обычный принтер посылать с какими хотите пераметрами (у меня второй вариант).
Только Аксапта будет печатать в графику. Я, например, не очень понимаю, как в Report создать форму с управляющими символами принтера для позицинирования и форматирования текста, а сам текст выводить текстом, а не графикой. Даже если такой отчет выводить на Generic / Text only Вернемся к исходному вопросу Цитата:
Сообщение от miaa
Нужно распечатать этикетку. Дизайн готовится в отдельной проге. Она выдает текстовый файл ***.prn в котором команды понятные принтеру.
Разве что значительно поменять условия задачи. |
|
15.05.2006, 13:09 | #5 |
Программатор
|
Зачем копию? Рисуете такой же дизайн в Аксапте, вставляете в него нужные вам значения и посылаете на печать как на обычный принтер. У нас - Зебра, кушает все без проблем. Штрих код - посмотрите класы Barcode***
|
|
15.05.2006, 13:46 | #6 |
Участник
|
Сделайте cmd файл в котором пропишите
copy c:\filepath\filename.prn lpt1 Из Axapta вызывайте его так X++: WinApi::ShellExecute("c:\\filepath\\filename.cmd");
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 15.05.2006 в 14:16. |
|
15.05.2006, 13:53 | #7 |
Участник
|
спасибо, попробую...
|
|
15.05.2006, 13:53 | #8 |
Модератор
|
Откройте порт "LPT1".
X++: CommaIo txtFile; int i,handlePort; ; txtFile = new CommaIo("LPT1","w"); //handlePort = WinApi::createFile("LPT1"); if (txtFile) { txtFile.write("Чудесные команды Зебре"); } Просто там были заморочки с СОМ-портом, если надо печатать через него. С Уважением, Георгий |
|
15.05.2006, 17:02 | #9 |
Участник
|
Цитата:
Сообщение от George Nordic
Откройте порт "LPT1".
Кроме того, Аксапта не позволяет записать в текстовый файл символ с кодом 0 Считать тоже не дает, кстати. Еще одно решение, которое подсказал Максим Горубнов (Максим, еще раз тебе респект): Расшариваете принтер, далее копируете текст на сетевое устройство используя URI. Если нужно выводить символ с кодом 0, то для подготовки можно воспользоваться классом Binary. Затолкать символы в Binary можно при помощи SafeArray. Так можно обойтись без промежуточных файлов и без дополнительных задержек. |
|
|
За это сообщение автора поблагодарили: George Nordic (5). |
15.05.2006, 17:31 | #10 |
Модератор
|
Цитата:
Сообщение от mazzy
Этот способ не очень работает, если usb-шный порт.
Я просто подобную задачу реализовывал, написав свой класс. Для GODEX'a. У них протокол отличается, но не сильно - принцип один и тот же. Но замечаниие, тем не менее, очень ценное, спасибо. С Уважением, Георгий |
|
15.05.2006, 17:20 | #11 |
Участник
|
Можно так же воспользоваться net use lpt1 URI
__________________
Axapta v.3.0 sp5 kr2 |
|
16.05.2006, 05:19 | #12 |
Программатор
|
Это все конечно здорово... но если стоит задача распечатать этикетку штрих кодов, содержащую дату, номенклатуру, число и вес/количество (к примеру), то почему не сделать так как я предложил??? Зебра (как вариант) ставится как обычный принтер на комп и всё... Делов то на 10 минут
С уважением - Sada... |
|
16.05.2006, 07:51 | #13 |
Программатор
|
Не значительно поменять условия задачи (хотя из всего выше сказанного задача чётко не прорисовывается). Нужна этикетка со штрих кодом, на которой будут отображаться какие то данные, зачем её рисовать в сторонней программе, если можно также нарисовать в Аксапте и вывести все что угодно? Про форму с управляющими символами уважаемый Mazzy прав, тут я дал маху. Хотя кому как удобней, лишь бы работало как надо ... и быстро ....
С уважением - Sada... |
|
|
За это сообщение автора поблагодарили: DarkBear (1). |
16.05.2006, 10:37 | #14 |
Модератор
|
Sada! Дело в том, что:
1) Принтер сам знает, как ему формировать этикетку. В среднем команда занимает байт эдак 100. Причем в ней можно указать формат этикетки, и правила автоматического формирования штрих кода, а так же кол-ва этикеток. 2) Иначе - сначала формируется образ этикетки, который передается через драйвер на принтер как графика. Это килобайты данных на одну этикетку. 3) Драйвера обычно довольно кривые, и можно поиметь проблем с позиционированием, когда данные будут уползать с этикетки. Это не большая проблема, когда печатаешь просто этикетки. А теперь представь себе печать на акцизных марках, которые являются документом строгой отчетности. И каждая и которых стоит 28 рублей. Так что смысл использования команд есть, и большой. С Уважением, Георгий |
|
16.05.2006, 11:05 | #15 |
NavAx
|
Ну не знаю, с драйверами проблем вроде нет. Печатаем на зёбрах из отчёта аксапты, всё шустро.
Цитата:
Хм. Боюсь, не скоро у принтеров шк появиться usb порты... вернее, я видел, но они работали в режиме эмуляции - через драйвер.
__________________
С уважением, Игорь Ласийчук. |
|
16.05.2006, 11:18 | #16 |
Модератор
|
у Godex ов тоже есть usb, но он работал так: ставился драйвер, который эмулировал LPT порт, т.е. в системе появлвлся, допустим, LPT3 и печать осуществлялась через него. Нет, печатать можно, но все-таки пока правильнее командами (отчетом неспортивно ). Эти выкладки справедливы для любых принтеров godex - datamax - zebra...
4) К тому же, они гораздо корректнее формируют штрихкод, чем этого можно добиться, просто используя шрифт 5) Возможна печать 2х мерных штрихкодов, что невозможно сделать шрифтом. Этот как раз актуально для акцизок. |
|
16.05.2006, 11:26 | #17 |
NavAx
|
А каким ПО можно этикетку нарисовать. А так чтобы двумерная была?
__________________
С уважением, Игорь Ласийчук. |
|
16.05.2006, 11:36 | #18 |
Модератор
|
А к каждой марке принтера своё ПО идет, для дизайна и печати этикеток. Которое как раз командами печатает. + DLL.
Еще есть ряд ActiveX независимых разработчиков, я рекомендую ActiveBarcode. (http://www.activebarcode.com/) По-моему, CorelDraw еще может... но он очень дорогой, компонента дешевле. |
|
16.05.2006, 11:43 | #19 |
Программатор
|
Спор раздулся не на шутку!!! И это радует.
2Garic - Спасибо... 2George Nordic - скажу так... решал бы как лучше еслиб знал что печатаем, а тут про это не слово. Если этикетка печатается на складе готовой продукции (как у нас), то там сверх точность не требуется. А если дело дойдет до "святого" - акцизок, тогда даа..... С уважением - Sada... |
|
18.05.2006, 19:18 | #20 |
Участник
|
1. Если все данные для печати (цифры и текст) имеются в аксапте - то можно -
при формировании Report во внутр. формате сделать след.: - печать чего надо в виде штрих - кода - ставьте в свойсвах поля - вызов фонта который печатает Штрх-код (таких фонтов счас море - true type - точно) 2. Если есть картинка (штрих-код , логотип) в формате ".bmp" - то можно вставить ее в динамике в отчет |
|