Thermal Printer (SparkFun Electronics)

Oregon
Offline
Зарегистрирован: 19.10.2013

Добрый день. Помогите разобраться с принтером COM-10438 (SparkFun Electronics).

https://www.sparkfun.com/products/10438

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

 

Спасибо.

maksim
Offline
Зарегистрирован: 12.02.2012

Oregon пишет:

Неужто никто не пользуется таким?

А зачем здесь кому то им пользоваться? У этого принтера есть графический режим, вот с помощью этого режима можно выводить все что угодно.

Oregon
Offline
Зарегистрирован: 19.10.2013

Если не трудно, дайте пример кода.

Облазил кучу сайтов, в основном забугорных в поиске примера, но так и не нашел.

maksim
Offline
Зарегистрирован: 12.02.2012

Да и врядли найдете. А я не дам, так как нету. Изучайте документацию на принтер и пишите код.

Oregon
Offline
Зарегистрирован: 19.10.2013

Есть еще кто-то, кто работал с таким принтером?

Спасибо.

Zizilk
Offline
Зарегистрирован: 30.05.2013

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

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

maksim
Offline
Зарегистрирован: 12.02.2012

Zizilk пишет:

Сомневаюсь что ардуинка потянет

Потянет, причем с легкостью.

Oregon
Offline
Зарегистрирован: 19.10.2013

Не, графический режим не особо интересует. Я так понимаю, существует возможность создать User Defined Character. А потом пользоваться этими символами. В эту сторону нужно "копать".

вот здесь человек писал:

http://arduino.ru/forum/apparatnye-voprosy/com-10438

 

Zizilk
Offline
Зарегистрирован: 30.05.2013

maksim пишет:

Zizilk пишет:

Сомневаюсь что ардуинка потянет

Потянет, причем с легкостью.

Ну речь не о том, чтобы перекодировать из одной кодировки в другой, а в том что на основе текста сформировать картинку и её уже отправить на принтер.

 

Oregon
Offline
Зарегистрирован: 19.10.2013

Это чересчур, наверное - из текста сделать картинку, чтобы напечатать текст ). Наверное, проще купить принтер с поддержкой кириллицы.

И да, этот же человек обращался на forums.adafruit.com с этим же вопросом.

 

...ESC & s n m w Define User-defined characters

The command is used to define user-defined character.Max 64 user chars can
be defined....

Это из datasheet на принтер. Т.е. можно же переопределить пользовательские символы и ими пользоваться, так?

 

Zizilk
Offline
Зарегистрирован: 30.05.2013

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

 

Zizilk пишет:

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

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

Oregon
Offline
Зарегистрирован: 19.10.2013

Может Вы ссылочку на datasheet ребятам из тех. отдела скините, чтоб они своим профессиональным взлядом ее окинули и сказали? )

http://www.adafruit.com/datasheets/A2-user%20manual.pdf

maksim
Offline
Зарегистрирован: 12.02.2012

Zizilk пишет:

maksim пишет:

Zizilk пишет:

Сомневаюсь что ардуинка потянет

Потянет, причем с легкостью.

Ну речь не о том, чтобы перекодировать из одной кодировки в другой, а в том что на основе текста сформировать картинку и её уже отправить на принтер.

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

maksim
Offline
Зарегистрирован: 12.02.2012

Oregon пишет:

Это чересчур, наверное - из текста сделать картинку, чтобы напечатать текст ). Наверное, проще купить принтер с поддержкой кириллицы.

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

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

maksim
Offline
Зарегистрирован: 12.02.2012

Oregon пишет:

Может Вы ссылочку на datasheet ребятам из тех. отдела скините, чтоб они своим профессиональным взлядом ее окинули и сказали? )

http://www.adafruit.com/datasheets/A2-user%20manual.pdf

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

The command is used to define user-defined character. Max 64 user chars can 
be defined. 
 
 что означает что есть возможность формирования 64 пользовательских символов, что вполне достаточно для кириллицы. И как говорилось выше отрисовывать их все равно прийдется.
 
Oregon
Offline
Зарегистрирован: 19.10.2013

maksim пишет:

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

Наверное правильно - не кодировок, а пользовательских символов? А что значит - формировать построчно?

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

maksim
Offline
Зарегистрирован: 12.02.2012

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

Для формирования строки время тоже тратится только один раз.

Значит формируте только одну строку как картинку и выводите ее на печать, а не формируете сначала весь тект как картинку и выводите ее целиком.

В общем есть два решения, а каким из них воспользоваться решать вам.

Oregon
Offline
Зарегистрирован: 19.10.2013

Я понял.  Спасибо за разъяснения.

Вариант с картинкой кажется более сложным (хотя если есть алгоритм...), а вот с пользовательскими символами - более прозрачно, что ли.

А нет ли у вас информации, как формировать эту строку из картинки (это что то типа среза такого, да?).

 

Oregon
Offline
Зарегистрирован: 19.10.2013

 

I don't have an actual Cyrillic font, so I'll just do this as an example. You character looks sort of like this:

To map it to the coordinate system of the printer, we have to flip it around, like this:

Here's how the character looks as an actual printer bitmap:


So, looking at the top row of the grid, you've got 21 white pixels, then 2 black, and then another white. This would be sent to the printer as 3 bytes:
0000 0000, 0000 0000, and 0000 0110 == 0, 0, 6 decimal
The next row would be
0000 0000, 0000 0000, and 0000 0100 == 0, 0, 4 decimal
The third row would be
0000 0000, 0000 0000, and 0001 1100 == 0, 0, 28 decimal
and so on

These numbers are the ones referred to as d1, d2, d3, d4, … etc.
So,
d1 = 0
d2 = 0
d3 = 6
d4 = 0
d5 = 0
d6 = 4
d7 = 0
d8 = 0
d9 = 28

etc.

I'll leave it to you to map out d10 through d36.

Then, to map this to character #64, your command to the printer would be:
ESC & 3 64 64 12 0 0 6 0 0 4 0 0 28 … (d10 through d36)

Oregon
Offline
Зарегистрирован: 19.10.2013

Тут вот вроде объясняется, как сформировать пользовательский символ. А код? кто нибудь поможет?

Oregon
Offline
Зарегистрирован: 19.10.2013

Работает!!!

Не все, правда... (

Но символ удалось вывести на печать.