Thermal Printer (SparkFun Electronics)
- Войдите на сайт для отправки комментариев
Пт, 08/11/2013 - 00:04
Добрый день. Помогите разобраться с принтером COM-10438 (SparkFun Electronics).
https://www.sparkfun.com/products/10438
Как заставить его печатать русские буквы? В прошивке только китайские и английские. Тема на форуме подымалась, но ответа не было. Неужто никто не пользуется таким?
Спасибо.
Неужто никто не пользуется таким?
А зачем здесь кому то им пользоваться? У этого принтера есть графический режим, вот с помощью этого режима можно выводить все что угодно.
Если не трудно, дайте пример кода.
Облазил кучу сайтов, в основном забугорных в поиске примера, но так и не нашел.
Да и врядли найдете. А я не дам, так как нету. Изучайте документацию на принтер и пишите код.
Есть еще кто-то, кто работал с таким принтером?
Спасибо.
У принтера есть графический режим? Сомневаюсь что ардуинка потянет, но у нас на работе у некоторых термопринтеров чековых есть графический режим который позволяет выводить что угодно. Сейчас наш отдел по железу колдует с ними и уже научился печатать с помощью него любым шрифтом и кодировками, а не только зашитыми в принтер.
Но для этого все преобразования должны делаться до отправки на печать, то есть в случае если подключаете к ардуинке то на ней. А перекодирование вроде не такая дешёвая по ресурсам операция и не знаю можно ли её вообще реализовать.
Сомневаюсь что ардуинка потянет
Не, графический режим не особо интересует. Я так понимаю, существует возможность создать User Defined Character. А потом пользоваться этими символами. В эту сторону нужно "копать".
вот здесь человек писал:
http://arduino.ru/forum/apparatnye-voprosy/com-10438
Сомневаюсь что ардуинка потянет
Ну речь не о том, чтобы перекодировать из одной кодировки в другой, а в том что на основе текста сформировать картинку и её уже отправить на принтер.
Это чересчур, наверное - из текста сделать картинку, чтобы напечатать текст ). Наверное, проще купить принтер с поддержкой кириллицы.
И да, этот же человек обращался на 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 на принтер. Т.е. можно же переопределить пользовательские символы и ими пользоваться, так?
Я не профи и даже не новичок но судя по разговорам из тех отдела принтеры, по крайней мере те, что используются у нас как чековые, могут работать только с шрифтами зашитыми в них, и получится что вы будете возиться в пределах латинского алфавита при переопределении
Я не профи и даже не новичок но судя по разговорам из тех отдела принтеры, по крайней мере те, что используются у нас как чековые, могут работать только с шрифтами зашитыми в них, и получится что вы будете возиться в пределах латинского алфавита при переопределении
Ну не знаю, наши с этим для своих целей возятся, возможность печатать любыми шрифтами и кодировками, а также буквами любого размера, а не только использовать предопределённые оказалась попобочным продуктом. =)
Может Вы ссылочку на datasheet ребятам из тех. отдела скините, чтоб они своим профессиональным взлядом ее окинули и сказали? )
http://www.adafruit.com/datasheets/A2-user%20manual.pdf
Сомневаюсь что ардуинка потянет
Ну речь не о том, чтобы перекодировать из одной кодировки в другой, а в том что на основе текста сформировать картинку и её уже отправить на принтер.
Ну так и я о том же. Никакой проблемы и особых ресурсозатрат тут нет, дуина с легкостью с этим справится. К тому же, когда речь идет о тексте не нужно формировать всю картинку, достаточно сформировать только одну строку.
Это чересчур, наверное - из текста сделать картинку, чтобы напечатать текст ). Наверное, проще купить принтер с поддержкой кириллицы.
Это адекватное и практическое решение, котрое применяется, например, во многих ФР-ах, построеных на базе готового принтера. Ну так если проще, то купите другой принтер.
Более того, даже если принтер и поддерживает возможность добавления других кодировок, то все равно вам прийдет отрисовывать каждую букву, так что особо большой разницы нет - формировать построчно и выводить на печать или при инициализации прогружать всю таблицу символов, а потом ей пользоваться при печати.
Может Вы ссылочку на datasheet ребятам из тех. отдела скините, чтоб они своим профессиональным взлядом ее окинули и сказали? )
http://www.adafruit.com/datasheets/A2-user%20manual.pdf
Я вам могу сказать - кириллицу он не поддерживает. Но зато ,как и говорилось выше:
Более того, даже если принтер и поддерживает возможность добавления других кодировок, то все равно вам прийдет отрисовывать каждую букву, так что особо большой разницы нет - формировать построчно и выводить на печать или при инициализации прогружать всю таблицу символов, а потом ей пользоваться при печати.
Наверное правильно - не кодировок, а пользовательских символов? А что значит - формировать построчно?
И да, я готов однократно потратить время на создание таблицы символов (причем не всех, а лишь недостающих) и потом пользоваться ей.
После того как вы загрузили пользовательский символ, вы обращаетесь к нему по коду, а значит... И так и так будет правильно. Не важно как назвать структуру имеющую код символа и графическое изображение символа.
Для формирования строки время тоже тратится только один раз.
Значит формируте только одну строку как картинку и выводите ее на печать, а не формируете сначала весь тект как картинку и выводите ее целиком.
В общем есть два решения, а каким из них воспользоваться решать вам.
Я понял. Спасибо за разъяснения.
Вариант с картинкой кажется более сложным (хотя если есть алгоритм...), а вот с пользовательскими символами - более прозрачно, что ли.
А нет ли у вас информации, как формировать эту строку из картинки (это что то типа среза такого, да?).
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)
Тут вот вроде объясняется, как сформировать пользовательский символ. А код? кто нибудь поможет?
Работает!!!
Не все, правда... (
Но символ удалось вывести на печать.