C# 为什么是"€&引用;仅在打印机初始化之前而不是初始化之后打印的字符?
我有一台Epson TM-T88VI打印机,使用C#中的Microsoft.PointOfService.PosPrinter进行打印 使用以下函数,我得到一个奇怪的输出:C# 为什么是"€&引用;仅在打印机初始化之前而不是初始化之后打印的字符?,c#,epson,escpos,pos-for-.net,C#,Epson,Escpos,Pos For .net,我有一台Epson TM-T88VI打印机,使用C#中的Microsoft.PointOfService.PosPrinter进行打印 使用以下函数,我得到一个奇怪的输出: public static void printerTestFunction2(string printerName) { PosExplorer explorer = new PosExplorer(); DeviceInfo di = explorer.GetDevice(
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);
}
输出为:
一欧元
B欧元B
氟氯化碳
DFD
因此,欧元符号被打印为奇怪的“F”符号(似乎F低于正常字符)。
这张纸剪对了
我还测试了不同的星座。似乎“€”符号仅在至少打印出一行后发送到打印机的第一个init命令之前打印。(我可以在开始时发送多个init命令-打印欧元。如果在打印一些字符后发送init,则会出现“F”而不是“€”)。
如果重新启动程序,“€”再次正确打印,但如果发送init命令,它将再次打印为“F”
“€”符号仅在第三个init命令之前打印的原因是什么?
我的代码是否有问题,或者是否缺少设置?打印像F这样的字母的原因是因为打印机处于初始化状态,代码页437。
查看以下材料中的字母,十进制为213,十六进制为0xD5
POS for.NET服务对象根据CharacterSet属性的值在内部管理代码页设置 如果应用程序任意向打印机发送初始化命令,则服务对象的管理信息可能不一致,打印机可能打印不正确 如果您正在使用POS for.NET(包括OPOS/JavaPOS),则不应使用初始化命令(ESC@)或类似命令来更改模式或设置
从这个意义上说,与其直接发送剪纸,还不如调用剪纸方法,或者将UnifiedPOS中定义的POSPrinter剪纸转义序列(ESC | p)放入打印请求字符串中 谢谢你的快速回答,这很有意义。。。我不知道有任何初始化是自动完成的。我假设打印机恢复到手动向打印机发送任何命令之前的状态