以下是我的代码:
PosExplorer posExplorer = new PosExplorer();
DeviceCollection receiptPrinterDevices = posExplorer.GetDevices(DeviceType.PosPrinter);
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter,"SRP2");
PosPrinter printer = (PosPrinter)posExplorer.CreateInstance(receiptPrinterDevice);
printer.Open();
printer.Claim(10000);
printer.DeviceEnabled = true;
printer.PrintNormal(PrinterStation.Receipt, "test print 1");
我进行了调试,一切都顺利通过,已经确认目标打印机是正确的,但打印机没有打印任何东西。我做错了什么步骤?非常感谢任何指导。感谢
如果有帮助,我的打印机接口通过以太网连接到特定的IP。
答案 0 :(得分:4)
问题似乎是你没有在\n
字符串的末尾发送换行符(PrintNormal
),如果没有它,服务对象只会缓冲行数据,等到在将数据发送到设备之前,它会看到\n
。
printer.PrintNormal(PrinterStation.Receipt, "test print 1\n");
来自PrintNormal
换行符/换行符(10十进制)
打印行缓冲区中的所有数据,然后输入到下一个打印行。 (打印生产线不需要回车。)
这是因为打印机必须一次打印一行,所以它等到你在开始打印之前告诉它你已经完成了一行,这允许你使用2个或更多PrintNormal
个来电单行打印输出以在需要时构建行数据(例如,在循环中)。
我在联网的POS打印机(Tysso PRP-250)上运行了以下代码,然后用\ n打印该行,没有它就没有。
PosExplorer posExplorer = new PosExplorer();
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter, "SRP2");
PosPrinter printer = posExplorer.CreateInstance(receiptPrinterDevice) as PosPrinter;
printer.Open();
printer.Claim(10000);
if (printer.Claimed)
{
printer.DeviceEnabled = true;
printer.PrintNormal(PrinterStation.Receipt, "test print 1\n");
printer.DeviceEnabled = false;
}
printer.Release();
printer.Close();