如何获得ResultCodeExtended OPOS?

时间:2018-07-20 20:51:43

标签: c# epson escpos opos

我正在尝试在Epson TM-T20II上打印图像。这是我的代码:

string path = @"test.bmp";
if (File.Exists(path))
{
    Console.WriteLine("exists");
    OPOSHelper.printer.ErrorEvent += Printer_ErrorEvent; // Do I have to configure this?
    OPOSHelper.printer.SetBitmap(1, PrinterStation.Receipt, path, PosPrinter.PrinterBitmapAsIs, PosPrinter.PrinterBitmapCenter);
    OPOSHelper.printer.PrintNormal(PrinterStation.Receipt, "\x1B|1B");                     
}
else
{
    Console.WriteLine("DOES NOT EXIST!!!");
}

当我运行它时,出现下一个错误:

  

方法SetBitmap引发异常。特定于类的错误条件   发生了。错误条件代码位于   ResultCodeExtended属性

我想阅读ResultCodeExtended property,但是我找不到方法,必须配置ErrorEvent吗?还是读起来有道理?

2 个答案:

答案 0 :(得分:0)

ResultCodeExtendedControlObject的属性。

您的OPOSHelper.printer可能是某人创建的库,您将通过该库使用内部ControlObject

如果OPOSHelper.printer没有公开ResultCodeExtended,您将无法得知。

请检查OPOSHelper.printer的规范或相应的源代码。

答案 1 :(得分:0)

将代码包装在try / catch中。 SetBitmap函数是POS for .NET框架的一部分。

请参阅以下链接以查看有关SetBitmap函数的文档:https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms843078(v%3dwinembedded.11)

您的try catch应该至少将异常类型转换为POSControlException:

SetBitmap可能会引发PosControlException并带有以下错误代码:

Illegal
  

发生以下情况之一:

     

指定的电台是无效的-它必须是“凭条”或“收据”。

     

指定的工作站不支持位图的打印(即,   适当的CapSlpBitmap或CapRecBitmap属性设置为   错误)。

     

打印机当前处于插入模式。打印机当前   在删除模式下。为bitmapNumber指定的数字小于   大于1或大于20,因此无效。

     

width值小于或等于零,但未设置为   PrinterBitmapAsIs,因此无效。

NoExist
  

找不到文件名。

Extended
  

ExtendedErrorTooBig:位图太宽而无法打印而没有   转换,或者太大而无法转换。

     

ExtendedErrorBadFormat:指定的文件不是位图   文件,或格式不受支持。

如果您确定要在断点处设置断点,那么您会看到有关ResultCodeExtended属性的详细信息。