Страницы

Поиск по вопросам

четверг, 25 октября 2018 г.

Как правильно печатать на термальном (чековом) принтере

Имею принтер Epson TM-T58. Печатаю на ESC/POS. Поставил дровишки с сайта производителя. Попробовал распечатать как через обычный принтак - кракозябры, кодировка или шрифт не нравится, это и так понятно. Может кто подкинуть готовый примерчик на C# который бы смог подключиться к COM1 и отправить команды для печати, к примеру, слова - "Привет"? Осилил на яве это дело, а вот на C# так и не смог. Мне достаточно наброска даже для другой модели. Какую библиотеку использовать в принципе тоже не важно.


Ответ

Собственно, спустя некоторое кол-во времени, я таки разобрался, как отсылать команды. Оставлю тут небольшой пример:
SerialPort serialPort; serialPort = new SerialPort("COM1"); serialPort.Encoding = Encoding.GetEncoding("CP866"); serialPort.Open();
const string ESC = "\u001B"; ///ESC command (1B) const string Init = ESC + "\u0040"; ///Init printer commands - ESC @ (1B 40) const string CommandSize = ESC + "\u0021"; ///Set size chars - ESC ! (1B 21) const string CommandDoubleSize = CommandSize + "\u0030"; ///Double charsize - ESC ! 0 (1B 21 30) const string CommandDefaultSize = CommandSize + "\u0000"; ///Default style - ESC ! null (1B 21 00)
if(serialPort.IsOpen) { serialPort.Write(Init); serialPort.Write("Привет!"); serialPort.Write(CommandDoubleSize + "Привет!" + CommandDefaultSize); }
serialPort.Close();
К принтаку обычно документация идет, какие команды принтер кушает, а для тех кто в танке, отправляем просто HEX вариант этой команды, в примере показал, как изменить шрифт на моем принтере, в частности, сделать его большим.
А у тех, у кого ошибка из серии "Доступ к порту 'COM1' закрыт." - удалите весь софт от принтера, даже дрова, пусть вообще не будет определен в системе.

Комментариев нет:

Отправить комментарий