如何使用 Microsoft POS 打印机画线

问题描述

我正在使用 Microsoft 服务点 SDK,我正在我的应用程序和随 SDK 提供的示例中进行测试,以尝试使用与此类似的代码打印一行:

posPrinter.DrawRuledLine(PrinterStation.Receipt,"0,500",LineDirection.Horizontal,1,Linestyle.brokenLine,1);

我收到此错误

POSControlException ErrorCode(Illegal) ExtendedErrorCode(0) 发生:方法 DrawRuledLine 抛出异常。试图对设备执行非法或不受支持的操作,或者使用了无效的参数值。

Microsoft POS 倾向于抛出非常一般的错误,我不知道我做错了什么。我在其他方法上也有类似的错误,结果证明是因为我传递了一个不太有效的参数,比如宽度太大。但是我测试了各种组合,但总是失败。并且没有足够的文档说明它接收到的参数。

我需要传递什么参数给这个方法来画一条线?这是与 Microsoft POS 划清界限的首选方式吗?

解决方法

Microsoft Point Of Service(UnifiedPOS 实现的一部分)是一个具有抽象标准规范的 API,不具备真正打印机的所有功能。

如果您的打印机和运行它的服务对象没有 DrawRuledLine 功能,您将收到该错误。

ErrorCode Enumeration (POS for .NET v1.12 SDK Documentation)

非法
试图对设备执行非法或不受支持的操作,或者使用了无效的参数值。

可以通过检查 CapRecRuledLine(CapSlpRuledLine for Slip station) 属性的值来提前确认该功能的存在与否。

如果您想使用此 DrawRuledLine 方法在收据上画一条线,您需要切换到支持该功能的打印机和服务对象。

如果您不想更换打印机,则必须将其替换为字符行。