У меня есть принтер Epson TM-T88VI, и я использую Microsoft.PointOfService.PosPrinter в C# для печати.
Используя следующую функцию, я получаю странный вывод:
public static void printerTestFunction2(string printerName)
{
PosExplorer explorer = new PosExplorer();
DeviceInfo di = explorer.GetDevice("PosPrinter", printerName);
PosPrinter printer = (PosPrinter)explorer.CreateInstance(di);
printer.Open();
printer.Claim(10000);
printer.DeviceEnabled = true;
printer.AsyncMode = false;
string init = System.Text.ASCIIEncoding.ASCII.GetString(new byte[] { 27, 64 });
string totalCut = System.Text.ASCIIEncoding.ASCII.GetString(new byte[] { 27, 105 });
string cmd = init + init + "A€A\nB€B\n" + init + "C€C\nD€D\n\n\n\n\n\n\n" + totalCut;
printer.PrintNormal(PrinterStation.Receipt, cmd);
}
Результат:
A€A
B€B
ХФУ
ДФД
Таким образом, символ € печатается как странный символ «F» (кажется, что F ниже, чем обычные символы). Бумага обрезана правильно.
Я также тестировал различные созвездия. Кажется, что знак «€» печатается только перед первой командой инициализации, которая отправляется на принтер после того, как хотя бы одна строка была распечатана. (Я могу отправить несколько команд инициализации в начале - печатается €. Если я отправлю инициализацию после того, как были напечатаны некоторые символы, вместо «€» появится «F». Если я перезапущу свою программу, «€» снова будет напечатан правильно, но если я отправлю команду инициализации, она снова будет напечатана как «F».
По какой причине символ «€» печатается только перед третьей командой инициализации? Что-то не так с моим кодом или я пропустил настройку?