我有一台 Epson TM-T88VI 打印机并使用 C# 中的 Microsoft.PointOfService.PosPrinter 进行打印。
使用以下函数,我打印出一个奇怪的输出:
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);
}
输出是:
欧元
早餐
氟氯化碳
DFD
因此,€ 符号被打印为一个奇怪的“F”符号(似乎 F 低于普通字符)。纸张被正确裁切。
我也测试了不同的星座。似乎“€”符号仅在打印出至少一行后发送到打印机的第一个 init 命令之前打印。(我可以在开始时发送多个初始化命令 - 打印€。如果我在打印一些字符后发送初始化,“F”将出现而不是“€”)。如果我重新启动程序,“€”会再次正确打印,但如果我发送 init 命令,它将再次打印为“F”。
“€”符号仅在第三个 init 命令之前打印的原因是什么?我的代码有什么问题还是我错过了某个设置?