AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.05.2006, 12:53   #1  
miaa is offline
miaa
Участник
Аватар для miaa
 
23 / 10 (1) +
Регистрация: 26.09.2004
Адрес: Москва
Как отправить файл с кодами, понятными принтеру, в порт принтера?
Нужно распечатать этикетку. Дизайн готовится в отдельной проге. Она выдает текстовый файл ***.prn в котором команды понятные принтеру. Печатать надо на "Зебре" (как вариант). Моя задача в файл подставить нужные числа и распечатать. По идее такой файл просто отправляется в LPT (порт принтера).
Как такое делается в Аксапте?
Старый 15.05.2006, 13:00   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
А можно без Аксапты обойтись? Просто раз этикетка формируется не в Аксапте, то можно и на печать ее посылать сторонней программой. Можно в Аксапте создать Report в АОТе (чтоб только по размерам подходил) и из неё как на обычный принтер посылать с какими хотите пераметрами (у меня второй вариант).

Последний раз редактировалось Sada; 15.05.2006 в 13:05.
Старый 15.05.2006, 13:05   #3  
miaa is offline
miaa
Участник
Аватар для miaa
 
23 / 10 (1) +
Регистрация: 26.09.2004
Адрес: Москва
Шаблон этикетки по идее постоянный, из аксапты в него только данные вставляются.
"Можно в Аксапте создать Report в АОТе (чтоб только по размерам подходил) " - имеете ввиду создаватькопию дизайна? (там штрих код есть..)
Старый 15.05.2006, 13:09   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Зачем копию? Рисуете такой же дизайн в Аксапте, вставляете в него нужные вам значения и посылаете на печать как на обычный принтер. У нас - Зебра, кушает все без проблем. Штрих код - посмотрите класы Barcode***
Старый 15.05.2006, 13:46   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Сделайте cmd файл в котором пропишите
copy c:\filepath\filename.prn lpt1

Из Axapta вызывайте его так
X++:
    WinApi::ShellExecute("c:\\filepath\\filename.cmd");
PS Пардон, двойные слеши нужны
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 15.05.2006 в 14:16.
Старый 15.05.2006, 13:53   #6  
miaa is offline
miaa
Участник
Аватар для miaa
 
23 / 10 (1) +
Регистрация: 26.09.2004
Адрес: Москва
спасибо, попробую...
Старый 15.05.2006, 13:53   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Откройте порт "LPT1".

X++:
    CommaIo         txtFile;
    int             i,handlePort;
    ;
    txtFile = new CommaIo("LPT1","w");
    //handlePort = WinApi::createFile("LPT1");
    
    if (txtFile)
    {
        txtFile.write("Чудесные команды Зебре");
    }
Я лично допиливал класс, который использует стандартную длл ('KERNEL32').

Просто там были заморочки с СОМ-портом, если надо печатать через него.

С Уважением,
Георгий
Старый 15.05.2006, 17:02   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от George Nordic
Откройте порт "LPT1".
Этот способ не очень работает, если usb-шный порт.
Кроме того, Аксапта не позволяет записать в текстовый файл символ с кодом 0
Считать тоже не дает, кстати.

Еще одно решение, которое подсказал Максим Горубнов (Максим, еще раз тебе респект):
Расшариваете принтер, далее копируете текст на сетевое устройство используя URI.

Если нужно выводить символ с кодом 0, то для подготовки можно воспользоваться классом Binary.
Затолкать символы в Binary можно при помощи SafeArray.

Так можно обойтись без промежуточных файлов и без дополнительных задержек.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: George Nordic (5).
Старый 15.05.2006, 17:20   #9  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Можно так же воспользоваться net use lpt1 URI
__________________
Axapta v.3.0 sp5 kr2
Старый 15.05.2006, 17:31   #10  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от mazzy
Этот способ не очень работает, если usb-шный порт.
Хм. Боюсь, не скоро у принтеров шк появиться usb порты... вернее, я видел, но они работали в режиме эмуляции - через драйвер.

Я просто подобную задачу реализовывал, написав свой класс. Для GODEX'a. У них протокол отличается, но не сильно - принцип один и тот же.

Но замечаниие, тем не менее, очень ценное, спасибо.

С Уважением,
Георгий
Старый 16.05.2006, 05:19   #11  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Это все конечно здорово... но если стоит задача распечатать этикетку штрих кодов, содержащую дату, номенклатуру, число и вес/количество (к примеру), то почему не сделать так как я предложил??? Зебра (как вариант) ставится как обычный принтер на комп и всё... Делов то на 10 минут

С уважением - Sada...
Старый 16.05.2006, 06:35   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Sada
Можно в Аксапте создать Report в АОТе (чтоб только по размерам подходил) и из неё как на обычный принтер посылать с какими хотите пераметрами (у меня второй вариант).
Можно и так...
Только Аксапта будет печатать в графику. Я, например, не очень понимаю, как в Report создать форму с управляющими символами принтера для позицинирования и форматирования текста, а сам текст выводить текстом, а не графикой. Даже если такой отчет выводить на Generic / Text only

Вернемся к исходному вопросу
Цитата:
Сообщение от miaa
Нужно распечатать этикетку. Дизайн готовится в отдельной проге. Она выдает текстовый файл ***.prn в котором команды понятные принтеру.
В таких условиях становится вообще непонятным как прикрутить Report из AOT'а.
Разве что значительно поменять условия задачи.
__________________
полезное на axForum, github, vk, coub.
Старый 16.05.2006, 07:51   #13  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Не значительно поменять условия задачи (хотя из всего выше сказанного задача чётко не прорисовывается). Нужна этикетка со штрих кодом, на которой будут отображаться какие то данные, зачем её рисовать в сторонней программе, если можно также нарисовать в Аксапте и вывести все что угодно? Про форму с управляющими символами уважаемый Mazzy прав, тут я дал маху. Хотя кому как удобней, лишь бы работало как надо ... и быстро ....

С уважением - Sada...
За это сообщение автора поблагодарили: DarkBear (1).
Старый 16.05.2006, 10:37   #14  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Sada! Дело в том, что:
1) Принтер сам знает, как ему формировать этикетку. В среднем команда занимает байт эдак 100. Причем в ней можно указать формат этикетки, и правила автоматического формирования штрих кода, а так же кол-ва этикеток.
2) Иначе - сначала формируется образ этикетки, который передается через драйвер на принтер как графика. Это килобайты данных на одну этикетку.
3) Драйвера обычно довольно кривые, и можно поиметь проблем с позиционированием, когда данные будут уползать с этикетки. Это не большая проблема, когда печатаешь просто этикетки. А теперь представь себе печать на акцизных марках, которые являются документом строгой отчетности. И каждая и которых стоит 28 рублей.

Так что смысл использования команд есть, и большой.

С Уважением,
Георгий
Старый 16.05.2006, 11:05   #15  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Ну не знаю, с драйверами проблем вроде нет. Печатаем на зёбрах из отчёта аксапты, всё шустро.

Цитата:
Хм. Боюсь, не скоро у принтеров шк появиться usb порты... вернее, я видел, но они работали в режиме эмуляции - через драйвер.
Зёбры вроде как есть USB\Paralel\Serial.
__________________
С уважением, Игорь Ласийчук.
Старый 16.05.2006, 11:18   #16  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
у Godex ов тоже есть usb, но он работал так: ставился драйвер, который эмулировал LPT порт, т.е. в системе появлвлся, допустим, LPT3 и печать осуществлялась через него. Нет, печатать можно, но все-таки пока правильнее командами (отчетом неспортивно ). Эти выкладки справедливы для любых принтеров godex - datamax - zebra...
4) К тому же, они гораздо корректнее формируют штрихкод, чем этого можно добиться, просто используя шрифт
5) Возможна печать 2х мерных штрихкодов, что невозможно сделать шрифтом. Этот как раз актуально для акцизок.
Старый 16.05.2006, 11:26   #17  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
А каким ПО можно этикетку нарисовать. А так чтобы двумерная была?
__________________
С уважением, Игорь Ласийчук.
Старый 16.05.2006, 11:36   #18  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А к каждой марке принтера своё ПО идет, для дизайна и печати этикеток. Которое как раз командами печатает. + DLL.
Еще есть ряд ActiveX независимых разработчиков, я рекомендую ActiveBarcode. (http://www.activebarcode.com/)
По-моему, CorelDraw еще может... но он очень дорогой, компонента дешевле.
Старый 16.05.2006, 11:43   #19  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Спор раздулся не на шутку!!! И это радует.
2Garic - Спасибо...
2George Nordic - скажу так... решал бы как лучше еслиб знал что печатаем, а тут про это не слово. Если этикетка печатается на складе готовой продукции (как у нас), то там сверх точность не требуется. А если дело дойдет до "святого" - акцизок, тогда даа.....

С уважением - Sada...
Старый 18.05.2006, 19:18   #20  
alef_nor is offline
alef_nor
Участник
Аватар для alef_nor
 
13 / 10 (1) +
Регистрация: 23.03.2005
Адрес: Moscow
1. Если все данные для печати (цифры и текст) имеются в аксапте - то можно -
при формировании Report во внутр. формате сделать след.:
- печать чего надо в виде штрих - кода - ставьте в свойсвах поля - вызов фонта который печатает Штрх-код (таких фонтов счас море - true type - точно)
2. Если есть картинка (штрих-код , логотип) в формате ".bmp" - то можно вставить ее
в динамике в отчет
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Файл в RTF из 4.0 sns DAX: Функционал 22 08.02.2011 14:19
Web-портал: открыть файл cherv DAX: Программирование 4 19.05.2008 16:42
Неприятные нюансы AxCliCfg.exe в работе с кодами для разработки в слоях Косых Артём DAX: Администрирование 2 12.04.2007 11:10
Большой Log файл у базы. Что делать? Arahnid DAX: Администрирование 4 04.04.2007 16:10
Вывод отчета в файл в пакетном режиме Egor_bl DAX: Программирование 16 09.10.2006 19:10

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:50.