Печатаем на Marklife P15 с компьютера
UPD:
Теперь это «Ниимбич» — полноценный браузерный редактор этикеток для P15 и Niimbot D. Приложение(работает офлайн: https://npekpacho.ru/niimbich-app, и веб-сервис: https://npekpacho.ru/niimbich-web/
Идеи, которые мне удалось реализовать в «Ниимбиче», я решил перенести и на принтеры P15. Главная причина — чувствительно неприятная цена оригинальных расходников для Niimbot.
P15 простые, дешёвые и неприхотливые. Сконструированы они не столь изящно, зато печатают практически на любой подходящей ленте, не задавая лишних вопросов.
Мобильное приложение у них есть, причём достаточно функциональное. Но нет. Со смартфона мне печатать не нравится. Я хочу с компьютера.
Протокол принтера неизвестен, документации нет, с какой стороны к нему подходить - совершенно непонятно. Драйвера, разумеется, тоже нет.
Что делать?
Установил на смартфон родное приложение, включил отладку, выполнял различные команды, а затем забирал btsnoop_hci.log и разбирал в Wireshark пакеты Bluetooth HCI/ATT/GATT.
Со смартфона на компьютер, с компьютера на смартфон. Туда-сюда, сюда-туда.
Не то чтобы это приносило ощутимые плоды, но…
Нашёл начало задания. Выяснил, что перед печатью штатное приложение отправляет примерно такую последовательность:
• 10 ff 50 f1 → в ответ приходит 0101;
• 10 ff 40 → снова приходит 0101.
Сразу после этого в 0x0011 уходит первая длинная строка Write Command:
1f70020600000000000000000000000000000010fff1021d7630000e004001...
С ходу не очень понятно, что здесь происходит и зачем:
• 1f700206... — видимо, внешний контейнер или заголовок пакета;
• 10 ff f1 02 — служебная команда или маркер;
• 1d 76 30 00 — команда передачи растра;
• 0e 00 — ширина 14 байт;
• 40 01 — высота 320 точек;
• И ещё много всякого.
С цифрами, конечно, весело, но не то, чтобы очень. Всем известно, что цифры арабские, однако их последовательность для меня вполне сопоставима с арабской вязью.
Я отправлял команды, смотрел, как принтер зависает и как убывают этикетки. Строил различные предположения о том, почему ничего не работает. Ну, кроме того что рукожоп.
Дело двигалось медленно. Особенно после Niimbot, протоколы которого уже довольно хорошо изучены общественностью. Двенадцатая версия драйвера, четырёхзначные номера сборок - и всё тщетно.
А потом вдруг какой-то челик из Австрии, известный как tomLadder, взял и проделал всю эту работу.
Ну и у меня, конечно же, сразу начало получаться.
Что получилось
P15 PC Print — приложение для печати этикеток с компьютера по Bluetooth на принтерах P15, выпускаемых под брендами Phomemo, Marklife, UniPlus и Pristar.
Программа состоит из двух основных частей: драйвера P15 и графического интерфейса.
«Драйвер» здесь не в привычном смысле драйвера Windows. Это набор команд и инструкций для взаимодействия по протоколу L11 с принтером, подключённым по Bluetooth.
Графическая оболочка развивает те же идеи, что и Ниимбич для принтеров Niimbot серии D. Только в новой итерации всё получилось немного функциональнее.
Программа собрана в один файл, не требует установки и работает без интернета.
Интерфейс P15 PC Print — тут, признаться, яркого и запоминающегося названия я не родил - состоит из одного окна и нескольких вкладок:
«Этикетка»;
«Серия»;
«Список»;
«Валет»;
«Калибровка»;
«Информация».
Первые четыре отвечают непосредственно за печать, последние две — за настройку и диагностику.
Этикетка
Вкладка «Этикетка» предназначена не только для разовой печати. Здесь можно создавать полноценные макеты, сохранять их и затем использовать в других режимах программы.
На этикетку можно добавить до шести текстовых надписей. Любую из них можно связать с одной из трёх переменных:
полное значение;
первая половина значения;
вторая половина значения.
Кроме текста можно добавить один QR-код, один штрихкод и одно изображение. В QR-кодах и штрихкодах переменные тоже поддерживаются.
Готовые макеты можно сохранять в файл, а затем снова загружать в программу.
Серия
Вкладка «Серия» позволяет напечатать последовательность однотипных этикеток — например, набор порядковых номеров.
К каждому значению можно добавить префикс и суффикс, то есть постоянный текст в начале и в конце строки. Также можно применить заранее подготовленный макет этикетки. Все назначенные в нём переменные будут автоматически заменяться значениями из серии.
Список
Вкладка «Список» нужна для печати этикеток по заранее подготовленному перечню.
Каждая строка списка — это отдельная этикетка. Она может содержать одно или два значения:
Текст 1 [TAB] Текст 2
Перенос строки начинает следующую этикетку.
Если указано только одно значение, оно печатается одной строкой. Если два — программа может подставить их в соответствующие переменные макета. Именно в этом режиме возможности макетов раскрываются лучше всего.
Списки можно набирать вручную или импортировать из текстового файла. Главное, чтобы значения были разделены табуляцией, а этикетки — переносами строк.
Валет
«Валет» — это особая разновидность серии, предназначенная прежде всего для номеров.
Этикетка делится пополам. В первой половине печатается один номер, затем идёт линия реза, а во второй половине - следующий номер, перевёрнутый вверх ногами.
Это сделано для того, чтобы после разрезания у обеих получившихся наклеек ровный заводской край оказался с одной стороны.
Макеты в этом режиме не применяются, зато к номерам можно добавлять префикс и суффикс.
Калибровка
Вкладка «Калибровка» позволяет немного воздействовать на печатающую головку — прежде всего регулировать плотность, то есть яркость, насыщенность печати.
Эта настройка нужна потому, что этикетки бывают разными: отличаются материал, термослой и общее качество. Где-то на головку нужно подать немного больше энергии, а где-то, наоборот, можно печатать слабее.
Здесь же находятся и два диагностических шаблона.
Первый — калибровочный. Он позволяет увидеть границы печатного поля, проверить заполнение этикетки и понять, правильно ли выбран её размер.
Второй предназначен для определения длины установленной этикетки.
Никаких меток с информацией о размере на рулонах нет, поэтому принтер не способен самостоятельно определить, какую именно бумагу в него установили. Размер приходится задавать вручную. Диагностическая шкала позволяет напечатать разметку, посмотреть, где проходит физическая граница наклейки, и сразу выбрать подходящее значение в программе.
Информация
Вкладка «Информация» чисто информационная. Здесь сведения о принтере и журнал работы.
Откуда скачать
Репозиторий на Гитхабе или прямая ссылка на загрузку с моего сайта.



















