Имею принтер 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' закрыт." - удалите весь софт от принтера, даже дрова, пусть вообще не будет определен в системе.
Комментариев нет:
Отправить комментарий