Pull to refresh

Comments 54

Теперь можно выкинуть прослойку в виде платы Фискального регистратора и его протокола и работать с головой напрямую. Спасибо

Спасибо за статью. Всё думал, как же работать с этими принтерами. Как то разбирался с ESC-последовательностями одного принтера, чтобы работать с ним. Настоящий мрак был. Интересно было ознакомиться с железной частью.

ESC/POS-принтер у меня есть. И я даже писал софт для печати на нём.
Тут было интересно именно разобраться именно с тем, как оно устроено внутри.

Суровый отечественный принтер от какого-то кассового аппарата, это от АМС-100Ф/100К.

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

А как вы планируете использовать этот принтер? Или это чисто по фану поработать напрямую с головой термопринтера?

Тут именно из желания разобраться, как оно устроено, а заодно и поведать миру. Так как, к примеру, много где говорят, что ТПГ — сдвиговый регистр, но мало кто объяснил, как с этим работать.
Ну и тогда хотелось ещё сделать принтер для печати картинок. Кассовые аппараты, что у меня были, с этим не справлялись, а термопринтера на ESC/POS на момент начала экспериментов (а начиналось всё несколько лет назад) не было у меня.

Кассовые аппараты обычно печатают картинку через загрузку ее к ним в буфер. Т.е. ты сначала грузишь ее в аппарат, затем даешь команду на печать картинки. Иногда это не указано явно, а, например, приводится как печать лого в клише. При этом никто (кроме времени) не мешает загрузить вместо лого свою картинку и напечатать в произвольном месте

Да, это я пробовал. На "Феликсе-РК" для этого надо было ещё и прописать что-то в режиме программирования, чтобы стал доступен этот режим. Но качество всё равно было так себе.

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

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

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

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

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

Хыхых. Потому что шаговик выступает как генератор...

Простите за вопрос не совсем по теме, но может кто подскажет.
Есть пара принтеров Posiflex Aura PP-9000. Один работает нормально, второй постоянно зажёвывает ленту. Начинает наматывать её на резиновый вал. Особенно часто, когда её остаётся мало. Уже что только не делали, чистили, сверяли прижимы, натяжения ленты и т.п. Искали различия между двумя одинаковыми механизмами, разницу пока не заметили.
От чего это зависит, что нужно в нём подрегулировать?

Кстати, драйвера под Windows к ним были кривые, пришлось ручками модифицировать, чтобы вместо 72 мм печатал на 80 мм в ширину. (Но последние версии драйверов ещё не проверял).

Приветствую, а это, случайно, не износ самого механизма? Не смотрели? Либо износ, либо брак, обычно пользователь доступа к таким настройкам не имеет.

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

Возможно, что и прижим. Надо детально смотреть по конструкции.

А вы меняйте местами по одной детальке в этих принтерах. Так хотябы найдете какая из них проблемная (валик, прижим, протяжка). Не исключен вариант, что вдруг оба заработают ;)

Ну, или что после этого получатся два кирпича...

Да, только так и остаётся проверять. Если б оно ещё так просто менялось )

Возможно на ТПГ есть грязь или повреждения за которые бумага цепляется и начинает сминаться вместо протяжки

А разве он тогда не должен не печатать вообще, если ТПГ повреждена?

Не все повреждения выводят ТПГ из строя. Бывает просто скол рядом с резисторами. Все прожигает, но бумага за скол цепляется.
Еще могла пыль с бумаги припечься

В мою бытность сотрудника ЦТО я носил с собой бесцветный маркер и им чистил головы от пыли. А если это принтер этикеток, то еще и от клея.

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

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

Скорее всего на Ардуино у вас есть сложности с плавностью и скоростью хода, так как надо синхронизировать шаг двигателя по прерыванию от таймера. На STM32 под Atollic True Studio на каком-нибудь Меркурие вы можете с программатором JLink по jtag swd отладить работу с термопринтером и ещё много (бесплатно)

О! А не вы ли, случаем, автор изначального кода?
Да, проблемы с этим есть и в идеале бы переписать под другой МК. С таймером неплохая идея.

Если интересно я могу поделиться проектом под меркурий180Ф, где работает и принтер и USB RnDis реализован для управления девайсом через вэб морду с ПК. Просто написана своя тестовая прошивка, полный реинжегиринг, ни какого лома. Так можно в принципе с любым МК где есть jtag swd.

Если вам не трудно, было бы очень неплохо.

На данный момент выношу мозг себе с Qt под Windows (QSqlTableModel и QTableView), там коммерческий проект, поэтому прямо завтра не смогу выложить проект с stm32, но как появится время сделаю статью на Хабре.

Ну, мы же не торопимся… Было бы интересно потом почитать.

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

Компактность устройства меняет все! Прощай, суббота!

Если не секрет, а что за принтер у вас?

я использовал Fujitsu FTP-628MCL101#57 (он во многих девайсах стоит), на Али один из самых дешевых

Я использовал от Seiko/EPSON, так как именно он был в терминале, что я разобрал. Но по управлению он абсолютно идентичен.

Сори, нагруженный вчера был день!
Модель Posiflex PP6900 U-B

А не проще ли его подключить по ESC/POS? Там же ничего сложного...

Но он ведь огромный, круче было бы сделать штуку поменьше

Думаете лучше для этого купить донор попроще?

Грустно даже, узнал что нынче за 2 тысячи можно достать принтер с аккумулятором, приложением и качественной печатью

Да тысячи их.

Niimbot, Vixic...

Спасибо, очень интересная, полезная статья и хорошо оформленная статья. При этом даже не перевод, а оригинал!

Есть для этих экспериментов факс KX-FT22, там на А4 можно печатать, и даже вроде как разобрался как управлять линейкой, однако дело встало на том, что не понятно, как распечатывать на нем с компьютера, кроме как отсылать по СОМ-порту нечто.. Это или протокол изобретать, или полностью разрабатывать прошивку с поддержкой ESC/P2, чтобы можно было стандартными средствами печатать. В общем, на этом все и засунуто в долгий ящик, т.к. такое не потяну. А так идея была распечатывать результаты диагностики авто на выезде.

Я тоже думал поиграться с термоголовками от факса. Но что-то руки так и не дошли, увы.

У меня в Питере валяется. Здоровая такая люминина шириной с рулон (почти А4).

Интересная статья, спасибо

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

Поскольку отрисовка идет построчно, хранить символ в виде строк было бы примерно в 8 раз эффективнее, чем в виде столбцов :)

Пару лет назад так сделал то же самое для заказчика. Встраиваемые решение в медицинское оборудование - регистратор.

Однако в серию так и не пошло... Заказчик закрыл проект.

Здорово. Люблю такие штуки. Хороший гайд

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

Принтер из поста на них печатать не сможет, шаговику не хватит момента проматывать. Плюс ещё нужен датчик конца этикетки, чтобы печаталось ровно.

Вообще можно же ещё и градации серого делать, если одну строку жечь несколько раз с разным временем

Sign up to leave a comment.