【问题标题】:Why is the "€" character only printed before printer initialization and not after the initialization?为什么“€”字符只在打印机初始化之前打印,而不是在初始化之后?
【发布时间】:2020-07-20 07:44:13
【问题描述】:

我有一台 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);
    }

输出是:

A€A

B€B

氟氯化碳

DFD

因此,€ 符号被打印为一个奇怪的“F”符号(似乎 F 低于普通字符)。 剪纸正确。

我也测试了不同的星座。似乎“€”符号仅在打印出至少一行后发送到打印机的第一个 init 命令之前打印。 (我可以在开始时发送多个初始化命令 - 打印€。如果我在打印一些字符后发送初始化,“F”将出现而不是“€”)。 如果我重新启动程序,“€”会再次正确打印,但如果我发送 init 命令,它将再次打印为“F”。

“€”符号只打印在第三个 init 命令之前的原因是什么? 我的代码有什么问题还是我错过了某个设置?

【问题讨论】:

    标签: c# epson escpos pos-for-.net


    【解决方案1】:

    之所以打印F之类的字母,是因为打印机处于初始化状态,代码页437。
    查看以下材料中的十进制 213 和十六进制 0xD5 中的字母。

    Page 0 [PC437: USA, Standard Europe]

    Page 19 [PC858: Euro]


    POS for .NET 服务对象在内部根据 CharacterSet 属性的值管理代码页设置。

    如果应用程序随意向打印机发送初始化命令,可能会导致服务对象的管理信息不一致,导致打印机打印不正确。

    如果您使用 POS for.NET(包括 OPOS/JavaPOS),则不应使用初始化命令 (ESC@) 或类似命令来更改模式或设置。

    从这个意义上说,与其直接发送剪纸也不是直接发送 ESC i({ 27, 105 }) 命令,而是调用 CutPaper 方法或将 UnifiedPOS 中定义的 POSPrinter 剪纸转义序列 (ESC|P) 放入 print请求字符串。

    【讨论】:

    • 感谢您的快速回答,这是有道理的……我不知道有任何初始化会自动完成。我假设打印机恢复到我手动向打印机发送任何命令之前的状态
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多