У меня есть принтер 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
CF C
DFD
Таким образом, символ € печатается в виде странного символа "F" (кажется, что F ниже, чем нормальные символы). Бумага обрезана правильно.
Я также проверил различные созвездия. Кажется, что знак «€» печатается только перед первой командой инициализации, которая отправляется на принтер после того, как будет напечатана хотя бы одна строка. (Я могу отправить несколько команд инициализации в начале - печатается €. Если я отправлю инициализацию после того, как будут напечатаны некоторые символы, вместо «€» появится «F»). Если я перезапущу свою программу, символ «€» снова будет напечатан правильно, но если я отправлю команду init, она снова будет напечатана как «F».
По какой причине символ «€» является только печатать перед третьей командой инициализации? Что-то не так с моим кодом или я пропустил настройку?