C# 是否有创建OPOS打印队列c的方法#

C# 是否有创建OPOS打印队列c的方法#,c#,epson,pos,opos,C#,Epson,Pos,Opos,环境:我有2台爱普生打印机通过网络连接。这台打印机使用OPOS以c#格式打印5台PC上的所有收据票据 问题:大多数情况下,打印机无法打印票据,因为它们被某些POS机锁定。其他情况下,打印机打印时间过长 打印代码: p.printerOPOS.Open(); p.printerOPOS.Claim(PRINT_WAIT_SECONDS); //5 seconds p.printerOPOS.DeviceEnabled = true; p.printerOPOS.PrintNormal(Printe

环境:我有2台爱普生打印机通过网络连接。这台打印机使用OPOS以c#格式打印5台PC上的所有收据票据

问题:大多数情况下,打印机无法打印票据,因为它们被某些POS机锁定。其他情况下,打印机打印时间过长

打印代码:

p.printerOPOS.Open();
p.printerOPOS.Claim(PRINT_WAIT_SECONDS); //5 seconds
p.printerOPOS.DeviceEnabled = true;
p.printerOPOS.PrintNormal(PrinterStation.Receipt, builder);
p.printerOPOS.DeviceEnabled = false;
p.printerOPOS.Close();

问题:如何确保打印?有没有办法创建OPOS队列(就像windows上用于正常打印的队列一样)?

最好不要从单个应用程序中使用OPOS,而是查看和更改应用程序的结构

  • 只有一台PC在两台票据打印机上管理打印
  • 创建在管理PC上执行打印服务的应用程序
  • 打印服务应用程序定义并实现必要的功能,如接受打印请求、通知等待/执行/错误状态、打印取消、通知打印机自身状态以及通知POS应用程序
  • POS应用程序使用这些接口向执行打印服务并接收通知/结果的应用程序发出打印请求

  • 此外:
    下面回答了关于在一台装有JavaPOS的计算机上使用一台POS打印机的问题,但它也可以应用于类似您的问题的情况。
    如果你只处理OPOS的使用,请考虑这个问题。
    这取决于应用程序的软件结构

    如果使用打印机的应用程序只有一个进程,请在应用程序启动时执行一次
    Open()
    Claim()
    DeviceEnabled=True
    。您可以在应用程序终止之前执行
    DeviceEnabled=False
    Release()
    Close()

    如有必要,应用程序将结合使用
    TransactionPrint()
    RotatePrint()
    PrintNormal()
    等进行打印

    这缩短了打印所需的时间

    如果使用打印机的应用程序同时在多个进程中同时运行,则在每个进程中只有
    Open()

    如果需要打印的过程几乎保持不变,
    Claim()
    DeviceEnabled=True
    在获取打印机控制权的同时切换作业和屏幕的一侧,使用
    DeviceEnabled=False释放打印机控制权的一侧,调用
    Release()


    当需要打印的进程频繁更改时,
    Claim()
    DeviceEnabled=True
    将在每次使用打印机后执行,并且在打印完成后,当必要的打印完成时,
    DeviceEnabled=False
    Release()
    将保留。对于OPOS,有什么更好的解决方案?我需要个性化每张票,我的客户有不同的打印机