我有一个基于 c# Visual Studio 2012 构建的 POS 应用程序。
POS 解决方案基于从消费者到受益人的货币交易。我的 POS 解决方案为发生的每笔交易提供打印输出。我使用的是 EPSON TM-T81 热敏打印机。正在使用用于 c# 的 EPSON api。现在我将打印命令作为 RAW 数据直接发送到打印机。但我想使用 windows spooler 发送打印命令。
EPSON 提供的 api 只提供 RAW 打印的代码。有一个异步打印功能,但没有给出所需的结果。我的 c# 应用程序基于主服务器和几个执行货币交易的手持设备之间的套接字通信。为此,我正在使用异步套接字服务器。到这部分没有问题,但如果同时发生 2 笔交易,打印机只打印一张收据。我在两次打印之间放置了一个 sleep() 大约 2 秒,但这仍然不是方法,以后会引起问题。
我使用 c# 发送打印命令的代码:
m_Printer.PrintNormal(PrinterStation.Receipt, "\u001b|N" + "userID : " + cardId + "\n");
m_Printer.PrintNormal(PrinterStation.Receipt, "\u001b|N" + "Member : " + user_name + "\n");
我早些时候初始化打印机:
PosExplorer posExplorer = new PosExplorer();
DeviceInfo deviceInfo = null;
try
{
deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter, strLogicalName);
m_Printer = (PosPrinter)posExplorer.CreateInstance(deviceInfo);
}
catch (Exception)
{
}
//Register OutputCompleteEventHandler.
AddOutputComplete(m_Printer);
//Open the device
m_Printer.Open();
try
{
//Get the exclusive control right for the opened device.
//Then the device is disable from other application.
m_Printer.Claim(1000);
Console.WriteLine("Printer claimed");
}
catch (Exception e)
{
Console.WriteLine("Printer Not claimed");
}
我想从直接 RAW 打印转变为在 c# 上使用 windows spooler。
我看了一下windows spooler api: Windows Spooler API 但不知道如何实现我的格式和使用相同的打印机。
我将不胜感激提供的任何帮助。