Изох Д.А.: обо мне и немного рядом
 

OTPD/Открытые драйвера принтеров чеков

Open Ticket Printer Drivers - открытые кроссплатформенные драйвера принтеров чеков и этикеток.

Кросс-платформенная подсистема печати для промышленных принтеров; использует html-подобный язык разметки (posHTML)
для описания задания; теги posHTML транслируется непосредственно в команды принтера, что позволяет использовать
все возможности устройства и достигать максимальной скорости печати при унифицированности и простоте использования системы.

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

Компоненты системы интегрируется в скриптовый фреймворк QDroid (язык QtScript), что позволяет адаптировать систему
(например сервер печати) и наращивать функциональность под потребности конкретного заказчика (например управление
несколькими принтерами, передача задания на другой узел печати при отказе оборудования, управление доп. оборудованием и др).

Сервер печати легко интегрируется с другими системами (сетевая печать), в частности предлагается интеграция с 1С
(с помощью дополнительных компонент проекта QDroid).

Резюме

  • Период создания: c 2007 г. Планируется продолжение работ и выпуск новых версий, расширение поддерживаемых моделей принтеров
  • Язык программирования: С++/Qt4
  • OS: Linux, Windows (поддерживаемые Qt4)
  • Целевая аудитория: разработчики ПО, частные лица и компании.

Награды

^_^ Проект занял 3-е место на всероссийском конкурсе опенсорсных проектов 2009 г.
в номинации «Лучший индивидуальный проект»
http://www.linuxformat.ru/free-projects/otpd.phtml .

Преимущества и сравнение с аналогами

Сравнение с «Драйвером принтера Windows»

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

О скорости

Приведенные в разделе #Cкриншоты 4 страницы (около 1 метра рулона) принтер распечатал за 31 сек. А вот стандартные виндоус драйвера печатают на таких принтерах медленно.
Для сравнения - 1 метр рулона драйвера виндоус-принтера будут распечатывать около 3-х минут.

Причина? причина очень проста : промышленные принтеры ориентированы на печать с помощью собственных языков и системы команд,
которые работают хорошо-и-быстро на медленном подключении через надежный, проверенный временем последовательный порт (который RS-232).
И даже если у принтера имеется сетевой интерфейс или usb - максимальная скорость передачи данных все равно не превышает цифр порядка 120 kb/sec.
Передавать через такой узкий канал графику большого объема - как это делают драйвера windows-принтера - долго. Отсюда и медленная скорость.

OTPD транслирует pHTML в команды самого принтера, малые по объему, которые быстро передаются через узкий канал связи,
и которые принтер умеет печатать с максимальной скоростью. Отсюда и высокая скорость работы OTPD.

Когда важна скорость?

гм… да везде собственно… например в задаче управление кухонными принтерами в ресторанах и барах:
Пример: Ресторан, официант оформил на пос-терминале заказ.
Машина раздробила заказ по местам приготовления и начала печатать его :
1) - на кухонном принтере («пожарьте селедку, 200г»);
2) - на принтере в верхнем баре («2 мохито»);
3) - на собственном принтере - что куда отправилось (что бы официанту собрать) вместе с маленьким «пречеком» клиенту по текущему заказу
Пока печать не закончится корректно на всех принтерах - мы должны держать официанта у ПОС, потому что если где-то принтер «сбойнет»
- мы должны будем перепечатать это чек локально, что бы официант сам отнес этот заказ на место приготовления.

Понятно, что даже лишние 30 секунд времени, когда у пос «за тобой стоит пара товарищей в час-пик» - это плохо.
OTPD позволит решить данные проблемы.

Сравнение с «АТОЛ: Драйвер принтеров чеков»

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

Удобство использования

  • преимущества OTPD :
    • OTPD более прост и удобен в работе;
    • OTPD позволяет использовать шаблоны заданий на печать;
    • с OTPD, при изменении вида чека ва не придется переписывать код программы - вид чека определяется не последовательностью вызова API-функций драйвера.

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

Задание Atol OTPD
Напечатать на принтере
строчку с жирным форматированием.
Вот такую:

Жирная строка
8 строк кода:

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

компонента.send(»<phtml><b>Жирная </b>строка<br></phtml>»);
Когда это важно?

Когда вам надо адаптировать чек под заказчика. С OTPD это сводится к модификации html, что сделать быстрее и проще, чем изменять код программы.

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

Расширенные функциональные возможности

  • преимущества OTPD :
    • OTPD поддерживает страничный режим печати

Что такое страничный режим печати? это размещение текста и графики на одном уровне - слева направо например.

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

Когда это важно?

Когда вы отдаете «кусочек ленточки» клиенту - например с его номером в очереди.
Казалось-бы картинка ничего не изменит, но логотип компании на чеке - это уже важно.
А разместить его параллельно тексту - это часто ещё и красиво.
Лишние «2 копейки» в копилку удовольствия клиента (и при этом практически не снижая скорости печати чека )

Скриншоты

  • Для данного проекта важны, конечно не скриншоты, а сканы распечатанных демо-страниц.

Их и привожу. Картинки кликабельны - откроются в большом размере. Прошу сразу обратить внимание на скорость печати: приведенные 4 листа - это около 1 метра рулона - были распечатаны за 31 секунду.

Страница 1 Страница 2 Страница 3 Страница 4

  • Сопоставление текста pos-html задания и результата

можно увидеть в следующем файле : otpd_demopages.pdf

Текущее состояние

В настоящее время, развитие системы приостановлено в связи с недоступностью оборудования.
Прошу заинтересованных лиц связаться со мной - если у вас есть оборудование - я запущу на нем OTPD.

Перспективы

Я бы хотел ввести в систему поддержку принтеров этикеток (наклеек).
Общих драйверов такого типа, продающихся сейчас, мне неизвестно,
ближайший аналог был у компании «Астор» (как и «АТОЛ: Драйвер принтеров чеков», но для промышленных принтеров этикеток);

НО! (как всегда есть пара «но»).
Во первых, данный драйвер компания не распространяла публично,
а во вторых, насколько мне известно, развитие драйвера не ожидается »в связи с неизвестным местоположением исходников»
(в то время когда я там работал - там местами царил форменный беспорядок в некоторых организационных моментах).

Полагаю, OTPD, с имеющимся подходом к формированию задания, имеет хорошие перспективы занять эту нишу.

 
works/otpd.txt · Последние изменения: 2010.12.21 11:46 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:GNU Free Documentation License 1.3
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki