Печать чеков с android

Печать чеков с android

Новые темы необходимо создавать только в корневом разделе! В дальнейшем они будут обработаны модераторами.

Если Вы выложили новую версию программы, пожалуйста, сообщите об этом модератору нажав на вашем сообщении кнопку «Жалоба».

Печать чека НПД
Версия: 1.0

Последнее обновление программы в шапке: 10.08.2021

Краткое описание:
Скачивает данные от API в формате JSON и формирует образ чека для драйвера принтера через команды печати текста и т.д.

Описание:
Чтобы распечатать чек, не нужна касса. Подойдет простой термопринтер. Для печати с телефона удобнее, чтобы подключение было через блютуз.

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

Приложение требует установки специального драйвера из Goole Play.

Требуется Android: 4.4
Русский интерфейс: Да

Скачать:
Версия: 1.0 1.apk ( 6.1 МБ )

Источник

Портативный термопринтер 3Cott 3C-TP-80BT — печатаем чеки со смартфона

На сайте компании 3Cott на странице этого принтера написано: «Портативный термопринтер 3Cott 3C-TP-80BT предназначен для быстрого распечатывания квитанций и чеков». Углубляться в фискально-финансовую тему я не буду, так как в этом совершенно не разбираюсь, поэтому вопрос о конфигурации точки продажи (или POS), в которую может входить данный принтер, я оставлю открытым.

Перечислю основные паспортные характеристики принтера:

  • Метод печати: Термопечать
  • Ширина запечатываемой области: 72 мм
  • Разрешение: 576 точек на строку (8 точек на мм,203 dpi)
  • Скорость печати: 90 мм/с
  • Интерфейс: USB, Bluetooth 3.0/4.0
  • Тип бумаги: Термобумага в рулоне
  • Ширина рулона: 79,5±0,5 мм
  • Диаметр рулона: не более 40 мм
  • Язык команд для печати: ESC/POS
  • Шрифты: A — 1.5×3.0 мм (12×24 точек), B — 1.1×2.1 мм (9×17 точек), упрощенный/традиционный китайский — 3.0×3.0 мм (24×24 точек)
  • Поддержка нескольких кодовых таблиц, печати штрих-кодов и кодов QR.
  • Поддержка загрузки и печати растровой графики (максимальный размер файла 8 Кб, загрузка до 5 файлов).
  • Питание: Перезаряжаемый литиевый аккумулятор, 2500 мА*ч/7,4 В
  • Размеры (ДхШхВ): 114х103х50 мм
  • Вес: 285 г
  • Ресурс печатающей головки: 50 км (Плотность печати не более 12,5)

Поставляется термопринтер в небольшой лаконично оформленной коробке из гофрированного картона.

В ней обнаружилось следующее: сам принтер с напечатанным тестом-отчетом, стартовый рулон термобумаги, адаптер питания (с 100-240 В, 50/60 Гц на 9 В, 2 А), USB-кабель (с Mini-USB на USB типа A), CD-ROM с ПО и руководствами, а также небольшая брошюра с руководством пользователя.

Руководство на двух языках, на английском и на русском. Разъем Mini-USB на кабеле Г-образный, а значит не будет торчать сбоку от принтера и мешаться. Длина USB-кабеля 112 см. Разъем питания на кабеле также Г-образный, а длина кабеля питания примерно такая же — 110 см.

Корпус принтера изготовлен из черного пластика. Снаружи он матовый. Заявлено, что принтер выдерживает падение на цементный пол с высоты 1,5 м. Я не проверял 🙂 Крышка отсека для бумаги — из прозрачного слегка тонированного серым пластика. Крышка частично заматирована, но окошко по центру оставлено гладким, чтобы удобнее было оценить оставшееся количество бумаги.

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

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

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

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

Читайте также:  Загрузчик операционных систем андроид

Кнопка слева со значком принтера при включенном принтере управляет продвижением бумаги — короткое нажатие продвигает бумагу на фиксированное расстояние, а удерживание проматывает бумагу непрерывно. Одновременное удерживание обоих кнопок, когда принтер выключен, заставляет его включиться и напечатать диагностический отчет.

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

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

Как уже упоминалось, принтер оборудован двумя интерфейсами. Работу по Bluetooth под Windows проверить не удалось, так как просто не нашлось под рукой подходящего адаптера. Вот с USB все просто. Подключенный по USB принтер определяется как стандартное устройство «USB Printing Support». Но для печати этого недостаточно, нужно поставить драйвер принтера — запустить программу POS-80-Series.exe с прилагаемого CD-ROM. После этого принтером из под Windows можно пользоваться как любым другим принтером, правда нужно учитывать, что размер бумаги будет нетипичным — ширина 80 мм, а высота 210, 297 или 3276 мм.

Это все под Windows 7 64-бит. Под Windows все на том же CD-ROM есть весьма полезная утилита — BlueTooth setting tools.exe.

Отметим две функции, которые точно могут пригодиться, это выбор кодовой страницы по умолчанию, а также установка пароля на подключение по Bluetooth. По умолчанию пароль один из двух стандартных — 1234, что позволяет с легкостью любому, а не только оператору ККМ, подключиться к принтеру.

Еще из полезного на CD-ROM — файл POS-80-Series Programmer Manual.pdf с описанием поддерживаемых команд, правда, команду для печати QR-кодов я там не нашел, видимо, руководство все же не полное. С Windows разобрались, перейдем к Android. Все на том же CD-ROM есть что-то вроде SDK, а конкретнее проект простенькой программки под Android. Называется она PrinterTooth.

Программка примитивная, но она поможет проверить работоспособность принтера как по Bluetooth, так и по USB (по USB из всех опробованных только она смогла под Android общаться с этим принтером), а разбор ее исходных текстов помогут разработчикам, если возникнет желание что-то доработать именно под этот принтер.

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

Фиктивные сведения о компании, плюс три товарные позиции, и продажи пошли!

Вот образец напечатанного чека (это скан с ленты):

Уже интереснее, можно приступать к тестированию. Одного стартового рулончика, конечно, для тестов маловато, поэтому я попросил прислать еще или хотя бы сообщить, где купить, чтобы и 80 мм шириной, и не более 40 мм в диаметре. В итоге прислали рулончик размером немного больше стартового. Пришлось работать с этим. Качество печати в целом хорошее. Контраст зависит от бумаги — на стартовом он чуть выше, чем на втором. Придраться можно только к тому, что иногда наблюдаются волосяные пропуски, впрочем, вряд ли это критично для использования принтера по назначению. Вот пример напечатанной этикетки с таким дефектом:

Читайте также:  Компиляция python для андроид

При реальной печати скорость была зафиксирована на уровне 26 мм/с, а просто при прокрутке бумаги (удерживая левую кнопку) — 27 мм/с. Это очень далеко от заявленной скорости в 90 мм/с. Насчет такого различия мы получили ответ от производителя:

The industry standard is a calculation of the specifications of the motor and the printing head and not by watch and visual inspection. You will notice the same type of parameters for almost all brands/models of 3 inch/80mm POS thermal printers. It is the industry standard. If measured the same way by watch and visual, they will also give similar results. Therefore we should not confuse the consumer with this kind of information. Otherwise the explanation of industry standard and real value must be explained in more details.

Который я перевел так:

Промышленным стандартом является расчет [скорости печати] на основании спецификаций мотора и печатающей головки, а не наблюдая [за работой устройства]. Вы можете видеть такие же параметры в случае почти всех моделей 3-дюймовых / 80 мм POS-термопринтеров. Это промышленный стандарт. Если замерить [скорость печати] аналогичным путем, наблюдая за работой устройства, то получится похожий результат. Поэтому мы не должны смущать потребителя подобного рода информацией. Или необходимо детальное объяснение того, как соотносится промышленный стандарт и реальные значения.

Я не знаю, так ли это на самом деле, но не привести реальное значение скорости печати будет, с моей точки зрения, неправильным. Ниже на видео можно увидеть с какой скоростью принтер печатает на самом деле. Правда, после обновления программа 1С: Мобильная касса (демо) стала работать нестабильно, и, несмотря на все те же настройки, перестала запечатывать ленту на всю ширину.

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

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

Замеры габаритов дали следующий результат: ширина 104 мм, глубина 114 мм и высота 50 мм. Без бумаги весит принтер 283 г. Для ориентировки стартовый рулон (3,6 м) весит 27 г, а второй доставшийся на тест — 45 г (это уже 8,1 м). И закроет заметку вопрос цены. Карточки в «Яндекс.Маркет» на этот принтер, похоже, не завели, поэтому просто приведу диапазон цен на момент написания данного текста. Это от 6888 до 9 990 руб.

Источник

Дешёвая и быстрая печать на чековом термопринтере

У нас, айтишников, часто возникает задача напечатать что-то простое и одноразовое – например, логин и пароль новому сотруднику, тикет для монтажника или что-то в этом роде. Тратить бумагу и картридж на подобное очень дорого. При этом есть принтеры с ультрадешёвой скоростной печатью, про которые редко кто вспоминает, хотя видим мы их все каждый день по много раз. Речь про чековые термопринтеры.

Начну, пожалуй, с демки, чтобы вы могли оценить скорость печати – 20 см. в секунду:

(На видео принтер замедляется пару раз в секунду из-за того, что мой скрипт не успевает достаточно быстро засылать команды. Спасибо Тому Скотту за вдохновение 🙂 )

Читайте также:  Какие файловые системы поддерживает android

Этот принтер я добыл на Авито за полторы тысячи рублей. Модель Citizen CT-S2000, умеет печатать на лентах разной стандартной ширины – от 58 мм до 80 мм. Принтер имел на корпусе следы долгой работы на, кажется, ресторанной кухне, которые удалось оттереть мылом и спиртом. Впрочем, этот принтер фиг убьешь: если термоголовка и отрезной нож исправны, он вам ещё послужит, ломаться там больше особо нечему (а он еще и водостойкий!).

Рулон ленты шириной 80 мм и длиной до ста метров обойдётся вам меньше чем в сто рублей. Ленты 58 мм стоят ещё меньше. Также, т.к. этот принтер печатает нагревая бумагу в определенных местах, ему не нужны картриджи.

Термопринтеры обычно работают по COM-интерфейсу (нативному или эмуляцией через USB), дорогие варианты имеют на борту Ethernet, WiFi или даже Bluetooth, но они слишком дорогие.

На сайте Citizen был богатый набор вариантов подключения – от нативного драйвера под Windows, PPD для CUPS, и до библиотек для Java. Нам с вами это всё не понадобится, потому что для максимальной простоты и скорости мы не будем рендерить задания на печать на сервере, а лишь будем слать команды принтеру на стандартном языке команд «ESC/POS».

Но сначала нам нужно один раз провести настройку принтера. Citizen предлагает настроить принтер через меню, которое он вам печатает (!) – экрана-то у него нет, или воспользоваться утилитой под Windows.

У моего принтера имеются интерфейсы USB и COM на 25 pin, под который не удалось быстро найти переходник с 9 pin – поэтому пользуемся USB. Драйвер под Windows установил виртуальный COM-порт, который мы выбираем в утилите настройки.

Внимательно просмотрите все параметры – нужно проверить тип бумаги (наклейки или обычная) и указать ширину заправленной в принтер ленты. Остальные настройки, типа яркости печати, тона встроенной пищалки и прочего – на ваш вкус.

Чтобы не забивать себе голову синтаксисом языка ESC/POS, воспользуемся Python-библиотекой python-escpos . В моём случае принтером управляет одноплатный компьютер Orange PI PC с Debian, но настройки в любой ОС будут идентичны.

Командой lsusb узнаём ID принтера, в моём случае это был 2730:0fff:

Также нам нужно выяснить USB endpoints, для этого подставляем ID в команду:

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

Если ваш принтер есть в списке явно поддерживаемых библиотекой, например, Epson TM-T88III, то можно применить его профиль, где авторы явно прописали, что из возможностей поддерживается, а что — нет. Почитать документацию по подключению принтеров можно тут.

Пользование библиотекой – тривиально, она полностью избавляет вас от изучения ESC/POS:

Про последнюю команду – чуть поподробнее. На всех чековых принтерах выведен разъём, который отвечает за то, что сразу после выбивания чека у кассира сам открывается ящик, куда он складывает полученные от вас деньги. Стандартное напряжение – 24 вольта, ток – до одного ампера.

Не пытайтесь от него запитать Raspberry Pi или что-то подобное – в момент печати принтер обесточивает разъём. Так что для того, чтобы запитать, например, стрелку из светодиодов «возьми чек тут!» — сойдёт, но не более.

Напоследок – пример применения. В прошедшие выходные моя школа праздновала свой очередной день рождения (аж 143-й), и по традиции старшеклассники устраивали разные конкурсы и развлечения для младших классов и выпускников. Я отвечал за «Бинго» — мой принтер по нажатию кнопки печатал билеты для игроков, а на доску выводились цифры. QR-код на билете позволял проверить, правильно ли игрок вычеркнул цифры в процессе игры:

Для вандалоустойчивости Orange Pi был упрятан в фанерный подиум, накрепко прикрученный к принтеру, а команда на печать билетов была выведена на кнопки, подключённые к GPIO. Для подстраховки был добавлен I2C-экран, на который выводился IP-адрес Orange Pi, чтобы в случае чего знать, как зайти на него по SSH.

Источник

Оцените статью