драйвера для промышленных принтеров этикеток и чеков ((проект открытых драйверов))

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

UPD 2009.12.26 Проект получил третье место на конкурсе «Лучший свободный проект России» в номинации «Лучший индивидуальный проект». (-->>пост).

UPD 2009.09.22 Релиз исходного кода "QDROID-OTPD" (-->>пост)

UPD 2008.05.22: "не прошло и года" как появился "пре-альфа-релиз". см ниже драйвера для промышленных принтеров этикеток и чеков

UPD 2008.06.05 создана русскоязычная секция на форуме OTPD на berlios.de : http://developer.berlios.de/forum/forum.php?forum_id=29770
__________________________________________________________________________

Есть мысль начать проект по созданию набора открытых драйверов для промышленных принтеров этикеток и чеков - таких, что управляют принтером с помощью собственных, "быстрых" наборов команд (ESC/POS; STAR; ZPL; EPL I/II; DPL и др.).
(ну фактически, это будет не "драйвер в системном понимани этого слова", а набор библиотек для печати на принтер с помощью спец-последовательностей-языка принтера)
(кто внедряет 1С в торговой среде - тот поймет - печать этикеток через ZPL на порядок быстрее чем из-под стандартных "общих" драйверов)

сумбурно есть следующие идеи к реализации:
- Предполагается модульная структура (интрефейсная оболочка, ядро, модуль принтера),
- Возможность подключенияразличных интерфейстных оберток для работы с различными системами и программами (В идеале - ожидается возможность эмуляции коммерческих внешних компонент для 1С)
- Замена модулей принтеров для работы с различными принтерами (без замены системы),
- теоретически, ожидается поддержка кроссплатформенности.


Есть 2 вопроса.

1) Что уже существует? есть-ли проекты занимающиеся поддержкой печати на промышленные принтеры? (печать на принтер с помощью ESC/POS, STAR, ZBI, ZPL II, и других последовательностей ?)

2) Архитектурные наработки? есть ли рекомендации, идеи по организации архитектуры системы? ибо не хочется придумывать велосипед и отгребать в середине развития проблемы с тем что система "не сильно расширяема" ....

___________________________________________________
набор желающих участников, будет объявлен после создания работающего прототипа.... если он конечно будет создан.. но отметьтесь если есть интерес. ))
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
RVladimir
Сообщения: 8
ОС: WinXP/FreeBSD6.3/MDV2007.1PP

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение RVladimir »

Denjs писал(а):
21.06.2007 09:12
Есть мысль начать проект по созданию набора открытых драйверов для промышленных принтеров этикеток и чеков - таких, что управляют принтером с помощью собственных, "быстрых" наборов команд (ESC/POS; STAR; ZPL; EPL I/II; DPL и др.).
(ну фактически, это будет не "драйвер в системном понимани этого слова", а набор библиотек для печати на принтер с помощью спец-последовательностей-языка принтера)
(кто внедряет 1С в торговой среде - тот поймет - печать этикеток через ZPL на порядок быстрее чем из-под стандартных "общих" драйверов)

Слишком большой разбег берёте.

Denjs писал(а):
21.06.2007 09:12
Есть 2 вопроса.
1) Что уже существует? есть-ли проекты занимающиеся поддержкой печати на промышленные принтеры? (печать на принтер с помощью ESC/POS, STAR, ZBI, ZPL II, и других последовательностей ?)
2) Архитектурные наработки? есть ли рекомендации, идеи по организации архитектуры системы? ибо не хочется придумывать велосипед и отгребать в середине развития проблемы с тем что система "не сильно расширяема" ....

1) не слышал о таком
2) рекомендаций немерено. только смысл? :unsure:

Вся закавыка в том, что дрова тот же АТОЛ пишет для своего железа (щас вот у меня на столе его "Феликс" стоит), и соответственно АТОЛ всё знает о хардварной части своего железа, в т.ч. о прошивках, обеспечивающих взаимодействие с software api.
Во-вторых, железа слишком много: подкладной документ, например, печатается через Star-овский принтер с разными форматами (POS/ESC), а различных принтеров в составе разных ФР далеко не один.
Я сам работал и с принтерами этикеток, и с ФР от АТОЛ, ШТРИХ, ККС и т.п. и проблему знаю очень хорошо (сам занимаюсь цифровой электроникой, да и специальность соответствующая). Самих ФР немерено, принтеров этикеток тоже много, а ведь это железо должно быть под рукой, чтобы было на чем отлаживать взаимодействие. У нас простая привязка этих ФР и принтеров к нашему продукту требует наличия всего этого железа под рукой, причем долговременного. Ладно принтеры этикеток, а ведь ФР требует еще и постановки на учет в налоговой. :angry:
Тут черезчур много сложностей для добровольного GPL-проекта. Не стоит оно того. Энтузиазм иссякнет, как только коммьюнити осознает масштаб задачи и сопутствующих проблем :laugh:

Denjs писал(а):
21.06.2007 09:12
набор желающих участников, будет объявлен после создания работающего прототипа.... если он конечно будет создан.. но отметьтесь если есть интерес. ))

Интерес есть, но я соизмеряю необходимость и возможность ;)

Гораздо интереснее было бы создание "с нуля" железа (начать хотя бы с простого принтера) на зарубежных комплектующих с частично открытой совтварной осью внутри (у ФР все сложнее, да и алгоритмы работы ЭКЛЗ никто открывать юзеру не даст, иначе просто на такое железо лицензию не получить).
Но для этого необхоимы вложения. Большие вложения.
JID: rhub@jabber.ru
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

на ФР мы не замахиваемся. Только принтеры чеков и принтеры этикеток.
(Тем более что драйвера для ФР как правило поставляются бесплатно производителем (по крайней мере ШТРИХ кажется проводит именно такую практику) )

насчет "интереса, необходимости и возможности" - давайте я расскажу о текущих сподвижениях в направлении проработки архитектуры системы:

На текущий момент приняты ("утверждаются"? прорабатываются?) следующие концепции:
- задания на печать описываются в виде некоторого html-подобного языка ("Pos-HTML"?, "pHTML" ?)
- система в первом приближении состоит из ядра, входного плагина (поставщика данных), выходного плагина (модуль принтера).

Задание формируется в источнике данных (это программный интерфейс ), передается ядру которое направляет его выходному плагину, который занимается тем, что преобразует Pos-HTML задание в конкретный набор команд принтера.

Ядро должно обеспечивать взаимозаменяемость источников и модулей принтеров. Таким образом - для подключения ещё одной модели принтера необходимо будет взять шаблон-парсер pos-HTML и вписать отображение тегов в команды конкретного принтера. Это минимум затрат, и сохранение всех наработок и интерфейсов

Модульность позволит например "прозрачно" реализовать "сетевую печать" - пара плагинов - выходной плагин "сетевой источник" и входной плагин "сетевой приемник" позволят достаточно просто организовать печать с нескольких систем на одно устройство .


Формирование задания в Pos-HTML позволит достичь следующего:

- хорошая абстрагируемость от конкретного языка управления принтером, при сохранении большей части функциональных возможностей и гибкости (на текущий момент "проработано" около десятка тегов и их отображение в ESC/POS и EPL II - пока ничего слишком "не предвиденного" я не вижу)
Сильно сомневаюсь что можно переписать начинку Атол-драйвера под многие другие языки управления принтерами без изменения интерфейсных функций компоненты. В случае Pos-HTML такая возможность просматривается уже сейчас.


- удобное и быстрое освоение работы с драйвером: во превых набор API-функций компонеты будет не слишком велик (примерно на порядок меньше чем в том же атол). Во вторых - принципы работы html хорошо известны, и освоение дополнительных тегов - гораздо меньшая задача чем изучение набора из более чем 50 команд драйвера Атол (не говоря о том, что набор команд достаточно жестко завязан на той системе команд в которую он отображается).

Пример задания и результат печати - см прикрепленный файл. Возможно немного сложновато, но такой пример покажет немного шире основные концепции и текущее их видение.
Думаю уже сейчас видно что задание на posHTML интуитивнее, понятнее и проще чем последовательность методов атол-компоненты и идентичных ей.

_________________________________________________________________
первоочередными задачами я вижу :
- формирование шаблона-парсера Pos-HTML и оформление его в виде "приложения-визуализатора" (окно ввода тегов и зона препросмотра результата печати)
- создание на его основе модуля-вируального-принтера, который будет "печатать в картинку". Это с одной стороны создаст необходимый базис, с другой стороны - создаст эталонное отображение задания на печать - фактически - препросмотр
- создание минимально - функциональных прототипов. Плагин-источнк (внешняя компонента 1С), ядро, модуль принтера.
_________________________________________________________________
далее - реализация модулей принтеров для ESC/POS и EPL II (или ZPL II) - это рассматривается как наиболее распространенные языки управления принтерами. (в связи с этим ищутся партнеры, готовые предоставть доступ к соответствующему оборудованию в обмен на упоминание в списках "о программе")

В первой очереди основных вех - реализация поддержки 1С как наиболее распространенного продукта. Далее - создание сервера печати как под линукс так и под виндоус, и проработка программных интерфейсов для использования под обоими ОС с различными системами.
_________________________________________________________________
Разработку основных компонент системы планируется вести на C++ ( QT4 ), внешняя компоннента 1С - Object Pascal (Delphi).

_________________________________________________________________
с текущими концепциями я не вижу непосильных проблем в направлении реализации поставленных задач.

Расскажите о вашем видении и "граблях" который вам представляются в контексте описанных выше идей?

немного позже, как только я доберусь до систематизации текущих бумажек и как только будет готов простой парсер PosHTML я выложу документацию и код в общий доступ.
______________________________________
Вложения
phtml_demo_1.png
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
RVladimir
Сообщения: 8
ОС: WinXP/FreeBSD6.3/MDV2007.1PP

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение RVladimir »

Ясно. Значит я неправильно понял. :blush:
Если ФР не касаться, то всё будет проще, это да. И единственные грабли тут - наличие "железа" под рукой. Остальное решаемо.
Что касается видения... Если подумать, то я пришел бы к решению, похожему на ваше, особо добавить и нечего :)
JID: rhub@jabber.ru
Спасибо сказали:
Аватара пользователя
shpektr
Сообщения: 22
ОС: VL SOHO 5.8, Kwort 2.2, WinXP

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение shpektr »

прошло больше полугода... есть новости по теме?
В наше время верить нельзя никому. Мне - можно (с) Мюллер.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

В настоящий момент практически закончен "Парсер phtml" (задание синтаксически проверяется, разбирается и перерабатывается во внутреннюю dom-структуру )
Начата работа над "рендером" - виртуальным принтером. (прорабатываются механизмы анализа задания и отрисовки, шаблоны модуля принтера и взаимодействия с ними)

Надеюсь, к началу весны будет готов "виртуальный принтер" - приложение способное разобрать phtml-текст и отрисовать его в картинку. Думаю будет поддерживаться около десятка самых необходимах тегов. Программа максимум - классы для поддержки Esc/Pos принтеров.
Тогда же будет "публичное представление" системы.

На первое время код будет оформлен в формате "приложение"; позже будет оформлена библиотека для использольвания при написании собственных компонент ( плохо представляю себе компоненту 1С написанную полностью c QT4 )
_____________________________________________________
Увы, работы продвигаются медленно. занимаюсь работами пока только я один (локальных напарников нет, а распределенную работу на этапе создания "работающей архитектуры" я представляю себе достаточно плохо).
Далее - с одной стороны сейчас происходит "устаканивание" архитектуры системы - (я часто приостанавливаю работу пока не найду вариант который меня устроит), а с другой стороны - "текущие дела отвелкают". (фактически, на пару месяцев все вообще было заморожено в связи с подготовкой к аттестации).
Сейчас устроил себе каникулы, и ближайший месяц надеюсь развивать систему максимально возможными темпами.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

"теме - ап".
"OTPD - Open Ticket Printer Driver" - первые результаты.
"демонстрация концепций".

Выкладываю "на прощупывание" "промежуточную" сборку - бинарник реализающий печать posHTML-задания на принтер.
Явно поддерживается пока только Posiflex Aura PP-5200.
( в идеале - будетработать с любым принтером который поддерживает esc/pos, НО корректный результат вы будете получать скорее всего только в line-mode ; все косяки от того, что pp-5200 не везде следует esc/pos стандарту, особенно в page-mode.)
Виртуального принтера сейчас нет. (вообще он есть , но его отрисовка сильно отличается от натуральной.. потому пока забудем о нем на время)

В предлагаемом "рендере" поддерживается 14 тегов, печать в строчном и страничном режимах, различные опции форматирования и позиционирования (см pdf в архиве).
Считаю, что по возможностям печати и удобству формирования задания, уже сейчас удалось превысить возможности наиболее распространенных "драйверов принтеров чеков" - например компонента компании "Атол" не все умеет, что может отрисовать эта демка, а многие вещи делает медленнее (в смысле - скорость печати медленней).

см пример phtml в программе демонстрируюший текущие возможности печати.

____________________________________________
Задача данной раздачи :
- сбор пожеланий, коментариев к структуре языка posHTML,
- сбор пожеланий к развитию системы,
- демонстрация "работающей реализации концепции".

________________________________________________________
требования к тестирующему: OC Linux (собирал под SuSe 10.2). нужнен установленный QT 4.2
принтер должен подключен к последовательному порту, на /dev/ttyS0 (скорость 19200, 1 стоп-бит, без контроля четности)

Нужен Posiflex Aura PP-5000/5200 .
________________________________________________________
Бинарник пока только под Linux - как только будет готов кроссплатформенный класс для работы с com-портом - будет и для виндоус.
(кто тут рвался в бой не зная к чему приложить руки? ваш шанс ;) )

________________________________________________________
Исходников пока не даю - хотя бы потому что многие внутренние структуры да и сами структуры языка posHTML ещё в процессе утряски, и давать их к "общему пользованию" считаю пока нет смысла. Как только оформлю все в виде отдельной бибилиотеки и будет достигнута ..гм.. назовем "архитектурная стабильность" - будет исходники. но если уж очень чешется уже сейчас - конечно обращайтесь.

________________________________________________________
лежит все добро здесь: http://www.rapidshare.ru/573707 ( posHTML_demo.pp5200.2008.02.10.tar.gz, 511211 байт )
(в архиве собственно программа, .pdf со списком доступных и планируемых тегов и опций,
консольное приложение поиска подключенного esc/pos-принтера (просто пишет в кончсоль что куда подключено - если что нашла - подключите это на првый ком-порт, скорость 19200 и пробуйте счастья))

Пока обсуждаем здесь, к марту надеюсь будет своя страничка.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

Обновление. демка от 2008.02.19

- 2 сборки - под линукс и виндоус.
- добавлено отслеживание ошибок принтера
- настройки подключения принтера вынесены во внешний файл (поддерживается пока только COM-порт)
- др. правки.

лежит здесь: http://www.rapidshare.ru/587355

поддерживаются
- Posiflex Aura PP-5200
- Posiflex Aura PP-7000-II ( незначительные ошибки с определением статуса принтера )

предположительно будут работать: (нужно тестирование)
- Epson TM-88/II
- Epson TM-88/III

Частично (в большей или меньшей степени) будут работать любые ESC/POS принтеры.

Прошу имеющих доступ к оборудованию протестровать и высказать свое мнение и пожелания.

Если есть желающие принять участие в разработке - "добро пожаловать":
На текущий момент необходимо следующее :
- разработка модулей работы с новыми моделями принтеров (естественно, у вас должно быть соответствующее оборудование. с документаций на системы команд принтеров, возможно смогу помочь)
- разработке "модулей связи" ( lpt, usb) (разработка класса с заданным интерфейсом)
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

update:
Выделен подпроект
"OTPD Device Links" : https://developer.berlios.de/projects/otpdlinks/

Задача данного подпроекта - разработка кроссплатформенных QT классов позволяющих работать через идентичный программный интерфейс с устройствами подключаемыми к различным внешним портам компьютера - serial, parallel, usb, др.
В некотором роде, это "абстракция канала связи с устройством", сводящаяся к 4-м базовым операциям - "открыл передал параметры настройки", "записал", "прочитал", "закрыл". В терминах родительского проекта - это "модули связи" - универсальные и взаимозаменяемые.

Работа над данными классами выделена в отдельный проект в связи с тем, что они могут выступать как самостоятельные компоненты, используемые в других проектах.

На текущий момент поддерживается последовательный интерфейс под Linux и Windows.
"Зарелизен" пример использования класса для отправки запроса к принтеру "Штрих500" (уж очень хитрый протокол у "штриха-500-го" (урезаный протокол работы с фискальным регистратором - "полновесный" протокол с заголовками, контрольными суммами, состояниями и подтверждениями приема... ^_^ )... потому он и выбран для примера)

Далее будет реализолизована поддержка параллельного порта. (пока работы не начаты - висят в "открытых задачах" - если есть желающие заняться - буду благодарен).

Текущие открытые задачи: разработка классов для работы с LPT и USB - устройствами.
(приглашаются "желающие приложить руку" программисты )

____________________________
Похожие проекты :
"QextSerialPort" http://qextserialport.sourceforge.net/ - A cross-platform serial port library. QextSerialPort encapsulates a serial port on both POSIX and Windows systems. В отличии от "OTPD Device Links" не подразумевает поддержку каких-либо интерфейсов кроме последовательного, но (судя по всему) дает доступ к более тонкой настройке режимов работы. Кроме того - QextSerialPort отличается архитектурно - он является наследником QIODevice, в то время как t_seriallink_otpd - "внук"-наследник QObject. (возможно позже это и изменится, но сейчас я не вижу больших практических плюсов от изменения наследования в сторону "от QIODevice")

____________________________
Буду рад услышать замечания, советы, отзывы.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

update: "Пресс-релиз", так сказать. в предверии первого официального релиза. ))
Проект зарегистрирован на berlios.de .
"OTPD - Open Ticket Printer Drivers " : http://developer.berlios.de/projects/otpd/

Сборки, исходнки, утилиты будут выложены вместе с внешней компонентой 1С.
Надеюсь это произойдет в ближайшую неделю-две.
Если кому-то интересна .so-библиотека (для "поиграться")
Скажите - залью пораньше, но не гарантирую что её функции не изменятся к моменту первого релиза)

На текущий момент на сайте выложены некоторые части мануалов и описаний - http://developer.berlios.de/docman/?group_id=9484
Можно ознакомиться с тем что будет поддерживаться в первом релизе, с текущими представлениями о системе , путями развития, ожидаемыми возможностями.

Прошу высказать замечания и вопросы если таковые имеются.
"пока не испеклось - исправить легче".

===================================================================
"предварительное представление системы публике" продублирую здесь.

==================================================================
Технические достоинства, конкурентные преимущества, заметки, фичи.
===================================================================

Задание описывается в виде "HTML"-подобного языка. Это с одной стороны
делает код программы "визуальным" - сразу видно и понятно "что будем печатать";
с другой стороны - позволяет использовать "шаблоны" для формирования заданий на печать -
удобный и "проверенный временем" прием, позволяющий не "кроить код системы" при необходимости
изменить вид этикетки или чека.
К примеру, у компонент "Драйвер принтеров чеков Атол" таких
возможостей нет - вы вынуждены менять код программы для изменения внешнего вида чека.

Сравните:
последовательность формирования задания с использоованием Атол-компоненты: 8 строк кода:

Код: Выделить всё

компонента.Caption = "Жирная ";
компонента.FontBold = TRUE;
компонента.TextNewLine = FALSE;
компонента.AddText();
компонента.Caption = "строка";
компонента.FontBold = FALSE;
компонента.TextNewLine = TRUE;
компонента.AddText();

и то-же самое с использованием OTPD: 1 строка кода:

Код: Выделить всё

компонента.send("<phtml><b>Жирная </b>строка<br></phtml>");



Использование языка форматирования pHTML позволяет "единым способом" управлять
как принтерами чеков, так и принтерами этикеток (наклеек). Вы просто будете отправлять
задания на другое "направлиние печати". Это упростит процесс разработки и отладки системы.
Печать будет осуществляться так-же быстро и качественно как и в случае с
принтерами чеков.

Кроме того, pHTML дает возможность настройки шаблонов печати специалистами заказчика,
без привлечения специалистов фирмы-поставщика - принципы HTML просты, понятны и узучаются
едва-ли не в школе.
Это повысит конкурентные преимущества системы использующей OTPD.

OTPD позволяет вам более полно использовать возможности принтера, чем это позволяют
многие коммерческие компоненты - с OTPD вы можете использовать не только "построчный" режим печати,
но и "страничный" (page-mode).
Это дает широкие возможности при формировании задания, (например произвольное позиционирование
на листе элементов) и позвляет не терять скорость печати.

OTPD - cистема кроссплатформенная - вы можете подключать к своей linux- или windows -
программе устройства подключенные к рабочим станциям работающим как под Linux, так и под Windows.
OTPD позволит использовать в windows-программе запущенной под Linux (c использованием wine),
принтеры подключенные к этой машине.( если конечно программа ориентированна на работу с OTPD )
- это вариант решения части проблем с плохой работой под wine ряда внешних компонент 1C для
доступа к оборудованию; не говоря о проблемах с драйверами для "ключей защиты", которые
необходимы большинству компонент работы с промышленными принтерами.

Система является "open-source системой" (Лицензия - GNU GPL v.2.), с открытой архитектурой.
Это дает вам полный контроль над подсистемами печати; позволяет настривать систему для работы с
практически любым оборудованием печати; дает широкие возможности для интеграции OTPD
с подавляющим числом информационных системам.

Система работает непосредственно с устройством без промежуточных уровней
абстракции, управляет устройством с помощью его (устройства) системы команд.
Это позволяет быстро печатать задания даже если подключение к устройству
медленное.
Над отметить, что некоторые модели принтеров осуществляют обмен на скорости около 38Кбод
даже при внешнем подключении типа ethernet (например Posiflex Aura pp7000L).
Описанные обстоятельства зачастую делают крайне не удобными в использовании
стандартные драйвера для подсистем печати windows, т.к. они передают на пос-принтер большой
объем информации и печать осуществляется медленно.

Печать задания осуществляется с циклами синронизации с устройством и
обновлением состояния в процессе печати - это позволяет избежать проблем с переполнением
входного буфера устройства и более точно отслеживать состояние печати. Это отличает данную
систему, например, от "драйвера принтеров этикеток" компании Астор, где все задание формируется
"сразу" и отсылается на принтер "пачкой".

--------------------------------------------------------------------------------------
Модульная архитектура системы позволяет расширять поддерживаемые модели устройств.
"модули принтера", ответственные за правила работы с устройством, отделяются от "модулей связи",
ответственных за передачу команд устройству.
Например модуль принтера "Aura pp5200" с "модулем связи" "tcp/ip-link" позволяют
работать с моделью "Aura pp7000L" у которой ethernet-интерфейс.
Реализация модуля связи для USB позволить расширить число поддерживаемых
моделей без переработок остальной системы.

Замена подуля принтера на "виртуальный принтер - сетевой модуль" позволяет
работать к устройствами физически подключенными на других рабочих станциях.(план)

Управление и настройка "узлами печати OTPD" может усуществляться удаленно, как
через компоненту предоставляющую дступ к системе , так и "руками" через программу вида telnet.
(план)

Возможны и "хитрые варианты" настройки - при необходимости, "узлы печати" могут
выступать в роли "серверов доступа" или "прокси", предоставляя доступ к "узлам OTPD"
находящимся в другой подсети, не доступной непосредственно.
( естественно при реализации соответствующих модулей связи и модуля-источника для OTPD ).
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

Первый "паблик-релиз".

так сказать, можете поздравлять "с почином" )
несколько месяцев "работы и исследований", "около 15 тысяч строк кода", и 4 приложения готовых продемонстрировать работоспособность концепций системы.
Все это пока "сильно урезанное" - этот релиз - локальная система работающая с одним принтером - но "уже почти работающая".


Данный релиз - только исходники.

В пакетotpd.src.2008.05.22_0200.tar.gz вошли следующие исходники программ:
"libotpd" - библиотека содержащая основные механизмы OTPD
"otpd_phtmlrender_probe" - приложение позволяющее "пощупать pHTML" так сказать "в деле". (Окно ввода задания, кнопка загрузки большого примера, кнопка редактирования ini-файла и кнопка "напечатать". все) )
"image2pbmp_convertor" - конвертер картинок в формат текстового описания pbmp для вставки в pHTML . (см описания тегов <img> и <binary>)
"addin_libotpd.dll" - внешняя компоннента 1С:Предприятие с примером для 1Сv7.7 использования компоненты : addin_libotpd_loadrun.ert.
+ парочка утилит для поиска подключенного на последовательных портах оборудования.

Прошу имеющих возможность собрать и протестировать с esc/pos принтерами - слеалайте это.
http://developer.berlios.de/project/showfi...p?group_id=9484

Мне важно знать: удобство языка pHTML, стабильность работы, корректность работы на различных моделях принтеров.
------------------------------------------------------------------------------------------------------------------
Поддерживаютя (тестировались) следующие принтеры:
- Posiflex Aura pp5200, pp7000-II, pp7000L ( модуль управления принтером pp5200 ).
( также должны работать все esc/pos принтеры, включая Epson TM88-II,TM88-III )
- Штрих500 ( модуль управления принтером shtrih500 )
(ограниченная поддержка, нет поддержки картинок, нет многих свойств шрифтов. будет дорабатываться)
Есть ещё virtual модуль принтера, но он очень старой версии, и думаю даже не инициируется корректно.

Поддерживается 2 вида подключения
- COM-порт (модуль связи serial )
- Ethernet (модуль связи tcpip )
(выражаю надежду что и wifi-принтеры тоже должны работать с данным модулем связи)

(имена модулей указаны для удобства понимания ini-файла насройки системы).
странички документации найдете в папке ./OTPD/docs/manuals . кодировка - koi8-r.
------------------------------------------------------------------------------------------------------------------

для сборки различных программ входящих в проект вам потребуются :
> QT 4.3
для сборки: "libotpd" , "demo pHTML renderer", "libotpd qt app", "pic2pbmp converter"

Процесс сборки отличается от стандартного.
Для сборки достаточно в коренном каталоге запустить "co_all.sh".
Для сборки отдельного проекта достаточно запустить "co.sh" (или "cow.bat" для виндоус)
Этот скрипт пересоздать файл проета, дополнит его опциями, соберет проект и выложит бинарники в ./bin/lin.

> Delphi 6
для сборки: "addin_libotpd.dll" (внешняя компоннента 1С:Предприятие), "libotpd delphi app"
для Delphi процесс сборки не автоматизирован. открывайте проект и компилируйтие обычным образом.
(возможно потребуется изменить каталог вывода бинарных файлов).

----------------
На текущий момент все настройки считываются из .ini файла.
Структура ini надеюсь будет понятна без лишних разъяснений. Все опции что в нем можно указать - генерируются автоматически, равно как и сам файл.
Для настройки вам достатояно указать имя подуля принтера ( direction.printermodule ) и имя модуля связи ( direction.linkmodule ). Далеее - для каждого модуля надо указать все опции которые привязаны к данному модулю - например для модуля связи tcpip - это будут опции tcpip.DebugLevel, tcpip.ip, tcpip.port .
Все опции что возможно указываются и добавляются в файл автоматически - вам надо только указать значения.
Секции заданы жестко. при переименовании секции, секция пересоздается со стандартным именем.
для понимая имен остальных модулей (например для целей отладки) смотрите структуру объектов системы и связей в
./OTPD/docs/manuals/diags/otpd_threads_and_objects_2008.03.23_1600.png

----------------
Компонента 1С (addin_libotpd.dll) требует наличия libotpd.dll рядом. Регистрировать c regsvr32 нужно только addin_libotpd.dll
Замечание для windows: libotpd.dll для корректной работы требует наличия mingwm10.dll и библиотек QT 4.3. Проще всего все это добро кинуть рядом с addin_libotpd.dll.

------------------------------------------------------------------------------------------------------------------
За сим все. Best regards, удачной сборки и тестирования.
Бинарники выложить сейчас не могу, оных до 20 мегабайт будет (м библиотеками QT), а канал в инет - модемный. потому не ранее июня-июля. Найду место с залявным трафиком - будет раньше.
для Сочинцев до конца месяца действует спец-предложение : могу передать собранные пакеты "надискетке" лично из рук в руки.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

выложены сборки для виндоус:
Внешняя компонента 1С - addin_libotpd.dll, демо-обработка addin_libotpd_loadrun.ert,
otpd_phtmlrender_probe.exe, библиотека libotpd.dll, библиотеки QT.

ссылка на скачивание: http://prdownload.berlios.de/otpd/otpd.add....05.22_0200.zip
(все файлы OTPD: http://developer.berlios.de/project/showfi...p?group_id=9484 )
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Pablus
Сообщения: 1

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Pablus »

Здравтсвуй Denjs!

Инициатива - просто супер!

У самого тоже около года назад появилась такая идея, тогда впревые столкнуля с сервис-принтером Samsung STP-131 (ESC - последовательность). Т.к. заказчику нужно было быстро, сделал очень тупо. 1С на основе шаблонного файла формирует файл, сожержащий ESC-посл. с данными. А после вызывается прога посылающая этот файл на COM-порт. Хотел еще реализовать считывание ошибок, но т.к. их у него всего-то около 5 штук, решил не заморачиваться, т.к. все работало, пусть и не лучшим образом.

Сейчас столкнулся с принтером Aura PP-7000-II, на столе вот стоит. Бродя в инете в поиске хотя бы описания команд, натолкнулся на этот пост. Заинтересовался, скачал. На работе есть только Win поэтому, скачал бинарники.

Вообщем три вопроса:

1) Настроил ini - файл, COM-порт, настройки скорости и т.д. взял, распечатав SELFTEST принтера. Однако в 1С выдает при init ошибку "-2", потом правда без ошибок, но ничего не печатается. Пробовал запустить программу по демонстрации возможностей - она вылетает, ничего не показав. Настроил DebugLevel на пятый уровень и выяснил, что она доходит до момента опроса модели, ей модель принтера возвращается. После несколько команд и вылетает (не могу сделать так, чтобы окно не закрывалось). Попытался перенаправить вывод в файл, вот что получил в нем: "PrintJunction does not created ... don`t know why... it may be system is too busy? exiting...". Очень хотел бы настроить свою конфу на работу через твою компоненту, но свалился в самом начале. По описанию она мне очень подходит, даже состояние принта не так важно. Пусть просто распечатывает и все. Если не сможешь понять из-за чего, скажи хотя бы на каких параметрах соединения тестил прогу с этим принтером, возможно в этом проблема.

2) Где можно достать описание команд Aura PP-7000-II?

3) Я программист по образованию и работе. Идея твоя мне понравилась, в теме я шарю. Могу и хочу принять участие в проекте, доступа к оборудованию постоянного нет, но на Aure периодически могу что-нибудь тестить, ближайшую неделю - постоянно. Linux знаю нормально как user, но вот серьезно в нем еще не писал.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

спасибо за отзыв)
1) Настроил ini - файл, COM-порт, настройки скорости и т.д. взял, распечатав SELFTEST принтера. Однако в 1С выдает при init ошибку "-2", потом правда без ошибок, но ничего не печатается. Пробовал запустить программу по демонстрации возможностей - она вылетает, ничего не показав. Настроил DebugLevel на пятый уровень и выяснил, что она доходит до момента опроса модели, ей модель принтера возвращается. После несколько команд и вылетает (не могу сделать так, чтобы окно не закрывалось). Попытался перенаправить вывод в файл, вот что получил в нем: "PrintJunction does not created ... don`t know why... it may be system is too busy? exiting...". Очень хотел бы настроить свою конфу на работу через твою компоненту, но свалился в самом начале. По описанию она мне очень подходит, даже состояние принта не так важно. Пусть просто распечатывает и все. Если не сможешь понять из-за чего, скажи хотя бы на каких параметрах соединения тестил прогу с этим принтером, возможно в этом проблема.

"PrintJunction does not created " Окружение печати не создано... у меня обычно это вылетало когда 2-й поток не успевает инициироваться за заданное время - направление печати (модуль принтера и модуль связи с контролером) создаются и работают в отдельном потоке, и если система сильно нагружена - то через ~500 ms происходит таймаут и выдается ошибка иницииации....

"Пробовал запустить программу по демонстрации возможностей - она вылетает, ничего не показав"

запустите через командную строку или из "батника" в котором после запуска otpd_phtmlrender_probe.exe стоит следующей командой pause - консоль не закроется.

но лучше способ получить лог - при работе с ВК 1С весь log-вывод консоли и все сообщения направляются в файл который как я помню вы должны указать при запуске обработки.

по поводу опроса модели и ошибки -2 ...
выставьте все debuglevel на 5 (во всех объектах, включая модули связи), запустите 1С, запустите обработку и попробуйте запуститься. потом как получите "-2", закройте 1С, - найдите созданный лог-файл и пришлите его мне вместе с вашим ini-файлом. почта есть в addin_libotpd_quickStart.txt или прикрепите архив с данными файлами к сообщению форума... может что и понятнее станет...

конфу пока ориентировать на OTPD не советую - если и настраивать - то только в пробных целях, компонента ещё сильно не стабильна, многие вещи (в частности - директивы управления системой) будут изменены.

общие принципы формирования через phtml останутся, но интерфейсы компоненты и способы доступа к узлу печати могут сильно измениться.
возможно в будущем я даже вообще откажусь от ВК в пользу общения с сервером печати через http-соединение, т.к. ВК под wine сейчас не работает, а для народа переходящего на связку 1С+wine@etersoft это актуально.

2) Где можно достать описание команд Aura PP-7000-II?
нигде. )

по идее - это TM88-II (TM88-III) совместимый принтер, и единственный способ ориентироваться - смотреть на спецификации EPSON по ESC/POS командам данного принтера, но ,судя по всему, далее кодов команд и операций line-mode совместимость не распространяется. т.е. код команды тот-же, но зачастую порядок аргументов и их интерпретация - собственная.
вплоть до того что отсчет координат идет из другого угла в страничном режиме или картинка в бинарном режиме передается битами не сверху-вниз а снизу вверх.
мои маты по поводу принтеров posoflex, список "косяков", да и "про манагеров posiflex" вообще вы можете прочитать в исходниках и документации к модулям принтеров.

3) Я программист по образованию и работе. Идея твоя мне понравилась, в теме я шарю. Могу и хочу принять участие в проекте, доступа к оборудованию постоянного нет, но на Aure периодически могу что-нибудь тестить, ближайшую неделю - постоянно. Linux знаю нормально как user, но вот серьезно в нем еще не писал.

Аура в принципе - реализованный этап, но оттестировать надо.

Сейчас больше проблем с автоматизацией тестирования модулей (её просто нет, а для широкой разработки это крайне необходимо), разработкой директив и принципов управления системой, поддержкой множества направлений печати и поддержкой принтеров этикеток(наклеек) (многие спрашивают но т.к. оборудования нет - я даже не начинаю корректировать спецификации phtml с ориентировкой на данные принтеры).

я буду рад видеть вас как участника разработки.
модуль связи через LPT, работа с USB-принтерами, модуль принтера чеков и корректировка спецификаций phtml ориентированная на данные принтеры - это задачи которые я могу поставить в текущий момент удаленному разработчику.
ну и конечно, будет полезно услышать ваши мысли по поводу иницииации и запуска ситемы. также - отчеты о решенных проблемах.

В идеале - лучше это делать на формах berlios.de - http://developer.berlios.de/forum/forum.php?forum_id=29770 т.к. офф. язык проекта - русский - думаю никто не будет против сообщений на berlios.de на русском в соответствующих секциях.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux
Контактная информация:

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение infra_hdc »

Задам немного конкретный вопрос: принтер Zebra TLP 2824, подключен к машине с ОС WinXP SP3 32bit, на которой расшарен через обычную сеть Microsoft (т.е. Samba). На клиенте стоит Debian GNU/Linux 5.0 (Lenny) i386. Печать в такой связке == возможна?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

infra_hdc писал(а):
13.08.2009 16:28
Задам немного конкретный вопрос: принтер Zebra TLP 2824, подключен к машине с ОС WinXP SP3 32bit, на которой расшарен через обычную сеть Microsoft (т.е. Samba). На клиенте стоит Debian GNU/Linux 5.0 (Lenny) i386. Печать в такой связке == возможна?

В такой конфигурации - не средствами данного проекта. Принтеры расшаренные средствами microsoft - это не епархия этого проекта.

т.е. в такой конфигурации - только когда вы его подключите через CUPS / SAMBA в линукс - и будете печатать через стандартные CUPS средства.
Хотя подозреваю, именно с этим у вас и проблемы.

а почему/зачем вы его так подключили? у вас на виндоус стоит ПО которое печатает на него средствами виндоус драйверов? (т.е. например из word вы можете на него скинуть что-либо)?

Если можете отказаться от необходимости подключения zebra как принтера виндоус - можно попробовать другие варианты.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

Да, пользуясь случаем, объявлю тут что OTPD медленно переводится на платформу QDroid - т.е. становится набором компонент для скриптового фреймворка. Это позволит изменять конфигурацию принт-сервера без пересборки и сделает систему гораздо более конфигурируемой.

Следующий релиз OTPD - зима 2009-2010 - будет включать в себя принтcервер (созданный на QtScript в среде QDroid) и средства доступа к серверу из 1С (компонента addin_libtelnet).
Также будет возможна печать из любого telnet-клиента путем формирования задания в phtml-тегах (т.е. "<phtml>Hello<br><b>WORLD!</></phtml>") что позволит подключать к серверу абсолютно любое ПО и даже печатать из bash-скриптов.

PS: Также отмечу что текущее решение для 1С ( компонента addin_libotpd ) крайне не стабильно и далее развиваться не будет.

PPS: Если у вас есть оборудование которое вы можете предоставить проекту для того что бы проект в скорейшее время начал поддерживать нужный вам принтер - прошу не стесняться..
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
worldemar
Сообщения: 1

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение worldemar »

А проект, оказывается, жив.

Отмечу такой момент: MS Visual Studio отказывается компилировать код (в частности из за and и or вместо && и ||).
Немного сложнее с явным вызовом деструкторов.
У меня есть ШТРИХ-500 (правда не в постоянном доступе), думаю я мог бы помочь проекту.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

worldemar писал(а):
25.08.2009 14:33
А проект, оказывается, жив.

Отмечу такой момент: MS Visual Studio отказывается компилировать код (в частности из за and и or вместо && и ||).
Немного сложнее с явным вызовом деструкторов.

ЭТО НЕ ПРОЕКТ ДЛЯ MS Visual Studio. Это С++\QT4 код.
если хочется собирать именно из MS VS - ставьте интеграцию QT4 и MS Visual Studio (сейчас даже кажется стала бесплатной уже), и все собирайте из MS VS )
все что "не понимает" MS VS - должно преобразовываться в понятное ему с помощью MOC - метакомпилятора. (qmake команда которая) - это входит в стандартный процесс сборки QT-программ и должно быть реализовано в интеграции с MS VS.

У меня есть ШТРИХ-500 (правда не в постоянном доступе), думаю я мог бы помочь проекту.

гм. штрих500 в минимальной конфигурации уже поддерживается.
Но на самом деле у него-то и возможностей то мало. Если хотите - сделайте печать картинок, их кажется я не делал. Но думаю 500-й штрих - это даже не продаваемое сейчас оборудование...

Сейчас бы все это дело портировать на QDroid - я один буду долго ковыряться, и от помощи не откажусь)))
Как решите задачи с настройкой среды - пишите - я попробую максимально подробно ответить на ваши вопросы касательно структуры программы
и текущих задач.

Или если у вас есть другое оборудование - новые модули будут кстати, но перевод на QDroid первоочередней.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
namelessDV
Сообщения: 2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение namelessDV »

Здравстуйте, Denjs!
Меня очень заинтересовал ваш драйвер!
В моем распоряжении Aura 7000.
В общем у меня софтина написанная на mono, уже в коммерчесской экпулатации. (POS = Netbook+linux+mono+MySoft + BarCodeScanner)
Софтина работает со сканером! Как раз сейчас стоит задача подключить принтер чеков (без эклз и прочей фискальной ернуды, т.к. для ЕНВД-шинков отменили)
Вопрос: Можно ли просто использовать CUPS? Умеет ли он работать с Аурой? (ауру в руках буду держать только на следующей неделе) Или у ауры свой хитрый протокол и стандартные драйвера текстовой печати не катят?
Спасибо сказали:
namelessDV
Сообщения: 2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение namelessDV »

Ах да, я программист, с удовольствием бы помог проекту!
В распоряжении у меня бывают разные штуковины:
Фискальные регистраторы, сканеры, принтеры чеков, сканеры магнитных карт. (правда не мои естественно)
Есть опыт программирования, в том числе и низкоуровневого, под Windows и Linux.
Несколько удачных проектов, находящихся в коммерческой эксплуатации.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

namelessDV писал(а):
03.09.2009 23:08
т.к. для ЕНВД-шинков отменили)

о! это хорошая новость) не был в курсе, т.к. работаю сейчас совершенно в другой области .
Вопрос: Можно ли просто использовать CUPS?

печатать на Posiflex Aura 7000 из CUPS? не знаю. Даже если да, то полюбому будет медленно.
и ещё что бы внести ясность - OTPD с CUPS не совмещаются. никак. ни "туда" ни "обратно". у них совершенно другой способ формирования задания на печать.
Умеет ли он работать с Аурой? (ауру в руках буду держать только на следующей неделе)
да, Posiflex Aura 7000 поддерживается. Проверено как на RS232 так и на Ethernet-вариантах. USB не проверял, но думаю системой будет автоматически при подключении создан какой-нибудь /dev/ttySUSB0, на который вы сможете "натравить" OTPD.
Или у ауры свой хитрый протокол и стандартные драйвера текстовой печати не катят?
у неё EPSON ESC/POS протокол с собственными модификациями.
В общем-то "почти стандартный"(с оговорками) для чековых принтеров.

Сейчас OTPD - это больше набор QT-компонент для разработки, чем готовое для применения решения.
После переноса на платформу QDroid - будет готовое решение. Сейчас , как промежуточный вариант, я могу сделать
сетевой OTPD сервер печати для вас (который будет понимать posHTML) но вам все равно придется модифицировать вашу программу -
вам нужно будет добавить TCP-соединение по которому вы будете отсылать данные серверу (запущенному локально или удаленно).

В общем у меня софтина написанная на mono, уже в коммерчесской экпулатации. (POS = Netbook+linux+mono+MySoft + BarCodeScanner
Подробнее пожалуйста о спецификациях вашей программы - с чем она работает, какое оборудование для печати поддерживает и т.п. Я так понимаю сейчас она заточена под какой-то конкретный ФР? Готовы ли вы менять/адаптировать вашу программу? можно ли под неё написать модули расширения, драйвера и т.п. - т.е. какие у вашей программы возможности "стыковки"? Это можно в личку - помогу чем смогу.
В крайнем случае - можно сделать для вас специфическое решение на коммерческой основе. С использованием QDroid и/или OTPD и/или другого ПО )

namelessDV писал(а):
03.09.2009 23:22
Ах да, я программист, с удовольствием бы помог проекту!
В распоряжении у меня бывают разные штуковины:
Фискальные регистраторы, сканеры, принтеры чеков, сканеры магнитных карт. (правда не мои естественно)
Есть опыт программирования, в том числе и низкоуровневого, под Windows и Linux.
Несколько удачных проектов, находящихся в коммерческой эксплуатации.

Вот это было бы здорово! но для начала давайте разберемся с вашей программой. Пишите в начале в личку - потом по почте/джабберу/ICQ будем работать)
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
iddqd2
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение iddqd2 »

День добрый!
Замечательное начинание! Сам недавно столкнулся с принтером Aura-7000, разбираюсь, нашел эту тему - попробую вашу программу.

Сразу есть вопрос - пытаюсь с Дельфи работать с принтером, простой текст печатается без проблем, когда пытаюсь сделать, например, запрос состояния - ничего не получается. Есть подозрение, что я просто недопонимаю принцип работы с ESC-последовательностями.
Например, в порт отправляю $10 $04 $01 - по идее должен придти ответ. Ответа нет. Не нужен ли в начале еще какой-то набор байт для идентификации инструкции?

Просмотрев тему, увидел, что вы писали
2) Где можно достать описание команд Aura PP-7000-II?
нигде. )

Описание команд у меня есть. Могу выслать.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

>отправляю $10 $04 $01
Опишите это в терминах ESC-описаний? Я не википедия помнить все коды наизусть)))
как в описании описано? ну там ESC '@' например - это ресет устройтва - вот так опишите что вы высылаете?
В крайнем случае - вы всегда можете порыть модуль принтера в исходниках OTPD - там есть работающий запрос состояния.

>Описание команд у меня есть. Могу выслать.
У вас описание именно последовательностей с их _ОСОБЕННОСТЯМИ_ реализации на Aura PP-7000-II? именно от поисфлекса? тогда высылайте.
Но я сомневаюсть что оно у вас есть. Скорее всего у вас более-менее приличное описание последовательностей от Epson, - такое у меня есть.
Посифлексы заявляют про "совместимость с Епсоном", но держат её только на уровне line-mode. Посмотрите то как PP-7000 работает в страничном режиме - кроме формы команд и количества оргументов - ничего общего, во многих командах последовательности те-же, а смысл аргументов - совершенно иной.

Маленький анонс: на днях будет релиз OTPD-сервера.
Я почти закончил с переносом класса-обертки OTPD на QDroid и добавлением в QDroid необходимых фич что бы все работало удобно,
и будет OTPD-сервер-печати ("узел печати") - в 2-х вариантах:
- "standalone" (сетевой tcp-сервер)
- "child-process" (для запуска как дочернего процесса и обмена данными через stdin|stdout)

Это будет оформлено как решение для платформы QDroid. Ссылки позже.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
iddqd2
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение iddqd2 »

Denjs писал(а):
21.09.2009 10:34
>отправляю $10 $04 $01
Опишите это в терминах ESC-описаний? Я не википедия помнить все коды наизусть)))
как в описании описано? ну там ESC '@' например - это ресет устройтва - вот так опишите что вы высылаете?
В крайнем случае - вы всегда можете порыть модуль принтера в исходниках OTPD - там есть работающий запрос состояния.

CODES (HEX/CONTROL): <10> <04> <n> / {DLE} {EOT} n
NAME: Real-time status transmission
FUNCTION: Transmits the selected printer status in real time
RNAGE: 1 ≤ n ≤ 4
EXPLANATION:
1. The parameter n specifies content group of printer status to be transmitted as
below.
n = 1: Transmit printer status
n = 2: Transmit off-line status
n = 3: Transmit error status
n = 4: Transmit paper sensor status

Исходники - да, порою.

Denjs писал(а):
21.09.2009 10:34
>Описание команд у меня есть. Могу выслать.
У вас описание именно последовательностей с их _ОСОБЕННОСТЯМИ_ реализации на Aura PP-7000-II? именно от поисфлекса? тогда высылайте.
Но я сомневаюсть что оно у вас есть. Скорее всего у вас более-менее приличное описание последовательностей от Epson, совместимость с которым посифлексы заявляют но держат только на уровне line-mode. Посмотрите то как PP-7000 работает в страничном режиме - кроме формы команд и количества оргументов - ничего общего, во многих командах последовательности те-же, а смысл аргументов - совершенно иной.

А вот таки есть :) Называется PP6000/PP7000/PP7000-II COMMAND DETAILS
И знаете где взял? Написал в техподдержку АТОЛа с просьбой выслать, если есть. Выслали. :)

Выкладываю в аттаче.
Вложения
PP6K7K_Command_Details_B.pdf
(304.77 КБ) 283 скачивания
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

>>Называется PP6000/PP7000/PP7000-II COMMAND DETAILS
Имхо врут они в данном документе. Не сильно, но привирают.
Не знаю что там в отношении "PP7000-II" но "PP-7000" по факту работает несколько по иному.
Или у меня был "корявый" PP7000 (в чем я, правда, сильно сомневаюсь). Возможно, конечно, они в прошивке что то поменяли уже и теперь все работает как там описано, но в 2008 г все было не совсем так.

В line-mode ошибок нет, но в page-mode - грабли на граблях.
Например, команда {ESC} W "Set printing area in page mode" - аргументы имеют другой смысл, а отсчет координат идет от левого _нижнего_ угла, а не от верхнего - читайте мои маты в комментариях в модуле ./OTPD/classes/printer_modules/t_posprinter_posiflex_pp5200.cpp
(найдите подстроку if (TagName=="page") - и смотрите как принтер переводится в страничный режим и т.п. а также "маты" в соседних блоках... )
Данный модуль проверен в 2008 г. на трех принтерах - PP-5200, PP-7000 (rs232), PP-7000L (ethernet) лично мною, потому я в нем уверен, в отличии от того что написано в "инструкциях" от посифлекса (до сих пор подташнивает... ).

Впрочем, не исключено что вы найдете ошибку в моем понимании логики работы сего чЮдного девайса - прошу тогда обязательно отписаться. Заранее, спасибо)

>Ответа нет.
>>отправляю $10 $04 $01
мдя... {DLE} {EOT} 0x01 все верно. у меня аналогично...
а как долго вы ждете ответ?

и... ещё... возможно у вас такая проблема: попробуйте поиграться с переключателем на принтере DIP5.

__________________________
PS: вы случайно не для 1С кропаете?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

2009.09.22_rawsrc_wo_docs

Релиз исходного кода "QDROID-OTPD"

Из новшеств:
* доступен сетевой сервер печати OTPD.
т.е. теперь вы можете печатать чеки прямо из консоли или bash-скрипта:

Код: Выделить всё

>telnet localhost 10100
<phtml> Hello <b>WORLD!</b></phtml>

Код: Выделить всё

#!/bin/bash
telnet localhost 10100 <<END_TASK
<phtml>Hello world!<br> <b>from bash into otpd!</b></phtml>
END_TASK


* OTPD теперь часть проекта QDROID. Поставляется в комплекте с исходниками QDroid.
* компонента 1С addin_libotpd более не поддерживается. Для печати из 1С используйте новую компоненту addin_libtelnet из решений QDroid com2tcp-and-libtelnet1C для доступа к сетевому серверу печати OTPD, или узлу печати запущенному как дочерний процесс.

текущие ограничения:
- нет комплексной внятной полной документации по сборке и использованию... но инструкции по сборке и запуску сервера печати OTPD здесь (зеркало).
- скрипты сборки пока отлажены только под Linux. (под виндоус некоторые телодвижения надо будет делать самому, исправлю позже.)

Замечания к релизу исходников и исходники доступны на сайте проекта.

Далее, добавлю скрипт для запуска OTPD-узла-печати как дочернего процесса (с обменом данными через потоки ввода/вывода), документацию, и будет полны релиз.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
iddqd2
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение iddqd2 »

Denjs писал(а):
21.09.2009 12:04
>Ответа нет.
>>отправляю $10 $04 $01
мдя... {DLE} {EOT} 0x01 все верно. у меня аналогично...
а как долго вы ждете ответ?

Бесконечно долго :) У меня простенькая тестовая программка, в потоке постоянно проверяет порт на наличие данных

Denjs писал(а):
21.09.2009 12:04
и... ещё... возможно у вас такая проблема: попробуйте поиграться с переключателем на принтере DIP5.


Не помогло.

Denjs писал(а):
21.09.2009 12:04
__________________________
PS: вы случайно не для 1С кропаете?

Да, для нее, родимой. Однако, рассмотрев внимательно ваши разработки, понял что заниматься этим мне смысла нету - все уже сделано :)
Правда, предыдущая версия (не qdroid) у меня так и не захотела печатать. Скачал последний вариант, посмотрю, попробую.

Если и не заработает - буду делать как и планировал изначально - просто писать в com-порт из 1С
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение Denjs »

Denjs писал(а):
21.09.2009 12:04

PS: вы случайно не для 1С кропаете?

Да, для нее, родимой. Однако, рассмотрев внимательно ваши разработки, понял что заниматься этим мне смысла нету - все уже сделано :)
Правда, предыдущая версия (не qdroid) у меня так и не захотела печатать. Скачал последний вариант, посмотрю, попробую.

Она ещё и падучая. думаю вам стоит покопаться с решением "com2tcp-and-libtelnet1C"(см ниже)

Если и не заработает - буду делать как и планировал изначально - просто писать в com-порт из 1С

И этим можете не заниматься ) - см. решение server com2tcp(QDroid) + addon_libtelnet(1C) . Там внешняя компонента, телнет-клиент которым вы подключаетесь к com2tcp - серверу который перенаправляет запросы к вашему устройству из сети и обратно.

Компонента addin_libtelnet примечательна ещё и тем, что имеет несколько "режимов фильтрации" - обработки входящих строковых данных - один из которых - это обработка ESC/POS описаний - т.е. в 1C вы делаете "объект.SetFilterMode(4); объект.Send("DLE EOT 0x01");" а на com2tcp сервер уходит 3 байта данных: 0x10 0x04 0x01. также есть возможность запуска консольной программы как дочернего процесса с перехватом потоков stdin|stdout (пока правда запись в sdtin не реализована - вы можете только смотреть что там вам в консоль понаписали, но это будет дописано попозже) - т.е. вы при необходимости запускате qdroid-скрипт узла печати как дочерний процесс, и обмениваетесь с ним данными через стандартные потоки ввода/вывода (unix-way, да ^_^ )
А com2tcp-сервер на базе qdroid примечателен тем, что он единственный com2tcp-сервер, который можно удаленно перенастроить без перезапуска.

Кстати: с addin_libtelnet вам "по любому" надо будет возиться если хотите работать с OTPD - именно через неё вы будете подключаться к серверу|узлу печати OTPD (только без всяких "режимов фильтрации").
Скачайте и разберитесь с решением "com2tcp-and-libtelnet1C" - там как раз есть сборки под виндоус - поиграйтесь с командами принтера - может вы просто "что-то где-то делаете не так" в ваших исходниках или подберете нужные команды.
Единственное - там описания устаревшие, смотрите в исходники обработки и заметки к релизу.

А сборка сервера печати OTPD для виндоус будет вероятно не ранее следующей недели. И я бы пока не рекомендовал использовать это "в промышленном задании" - там есть некоторые внутренние проблемы которые надо решить (например не очищается очередь заданий - (система помнит все задания которые её прислали), есть потенциальные проблемы с пререзапуском узла печати, не совсем удобная система получения отчета о статусе принтера и его ошибках и т.п. ) - а на это ещё нужно будет время. Сейчас есть задача по внедрению данной штуки, потому будем прописывать усиленными темпами, но я не могу гарантировать что то что мы сделаем подойдет вам и т.п.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
iddqd2
Сообщения: 6

Re: драйвера для промышленных принтеров этикеток и чеков

Сообщение iddqd2 »

Пробую версию на qdroid.
Вроде как работает, но по-русски не печатает (
По англицки - без проблем. Напрямую в порт пишу - русский понимает.
т.е. нажимаю кнопку "esc\pos demo 3", отсылаю, принтер печатает немного крокозябры.
Меняю строку - отсылаю " ESC 't' 0x07 ESC 'R' 0x00 ESC 'G' 0x01 'BOLD String!' LF ESC 'G' 0x00"
печатает жирным "BOLD String!" - как и должен.
Кодировки не работают еще?

PS: 1С v77
Спасибо сказали:
Ответить