POS for .NET 中的每个硬件设备都由一个抽象接口(如 CashDrawer 类)和一个基本类(如 CashDrawerBasic)表示。 基本类派生自基础接口,包含对设备的基本功能支持。 POS for .NET 为打开、声明和启用设备、设备统计信息,以及管理事件到应用程序的传递提供了通用支持。 此外,每个基本类都包含一组继承的和受保护的方法,可由服务对象实现。 本主题提供了有关基本类的概要信息,这些类可由派生自设备的基本类的服务对象使用,而不是利用更全面实现的设备 Base 类。
构造函数
每个基本类都包含一个构造函数,用于创建类的实例,并初始化 UPOS 版本、设备类别和安装日期的统计信息。
通用属性和方法
每个基本类都提供经过重写的 PosCommon 属性和方法定义。 对于其中每个属性和方法,基本类处理状态验证(即验证应用程序是否已打开、声明或启用设备),然后调用该属性或方法的 POS for .NET 实现。 有关 PosCommon 类的详细信息,请参阅 PosCommon。
服务对象可以使用 CommonProperties 类来更新被指定为对应用程序只读的 PosCommon 属性,或更新这些属性,无需担心状态验证。
Dispose 方法
每个基本类都包含两个已实现的 Dispose 方法,供服务对象使用。 有关这些方法的工作原理,请参阅 IDisposable 类的 .NET Framework 文档。
打开、声明和启用设备
每个基本类都提供用于打开、声明和启用设备的核心功能。 不过,通常,服务对象需要重写这些方法以添加其自己的自定义处理。
面向服务对象开发人员的受保护方法和事件
每个基本类都包含面向服务对象开发人员的一组方法和事件。
下面一些受保护的属性定义如下:
- CommonProperties 属性,该属性返回 CommonProperties 的实例,其中包含所有 PosCommon 属性的 get 和 set 值。 服务对象可以使用 CommonProperties 来更新属性,不必担心状态验证或属性是否被指定为对应用程序只读。
- ExternallyClaimed 属性,服务对象可以检索该属性以确定是否已声明设备的另一个实例(在这种情况下,属性设置为 true)。
- ErrorCount 属性。 当服务对象查询 ErrorCount 的值时,基本类会检查事件队列并计算已找到的 ErrorEvent 事件数,然后将该计数作为 ErrorCount 的值返回。
- DataCount 属性。 POS for .NET 验证设备是否已打开,然后返回当前为设备排队的 DataEvent 事件数。
定义了以下受保护的方法:
- StateChangedEvent 和委托 StateChangedEventHandler(EventArgs 类)。 服务对象可以实现这些方法,以在设备的 State 属性发生变化时接收通知。
- 设备支持的每种事件的 PreFireEvent 受保护方法。 每个基本类都提供一个可立即返回的 PreFireEvent 的默认通用实现。 在事件发送到应用程序之前,如果服务对象需要更新其内部状态,服务对象可以重写 PreFireEvent 的默认实现,并为相关事件类型提供自己的实现。
- 设备支持的每种事件的 QueueEvent 受保护方法。 服务对象调用 QueueEvent 以将事件添加到事件队列。 基本类验证设备是否已启用,然后将事件添加到要传递到应用程序的事件队列中。 在传递之前,基本类调用相应的 PreFireEvent,使服务对象有机会更新其内部状态。 当返回 PreFireEvent 时,基本类会将事件传递给应用程序。
- QueueEventAndWait 受保护的方法。 服务对象调用 QueueEventAndWait 以将 ErrorEvent 事件或 DirectIOEvent 事件添加到事件队列中,服务对象需要从中获取来自应用程序的响应。 基本类验证设备是否已启用,然后在条件成立时将事件添加到要传递给应用程序的事件队列中。 在传递之前,基本类调用 PreFireEvent,使服务对象有机会更新其内部状态。 当返回 PreFireEvent 时,基本类会将事件传递给应用程序。
- VerifyState 方法,该方法采用两个布尔值 mustBeClaimed 和 mustBeEnabled。 服务对象可以调用此方法的 POS for .NET 实现,以在方法或属性的调用之前对设备执行必要的状态验证。
- CreateStatistic 方法。 服务对象应使用这些方法来创建自定义的(即,特定于制造商的)统计信息。 POS for .NET 处理所有 UPOS 定义的统计信息的创建和管理。
- SetStatisticValue 和 IncrementStatistic 方法允许服务对象更新指定的统计信息,即使它未定义为可重置(即,这些方法绕过由 PosCommonResetStatistic(String) 和 UpdateStatistic(String, Object) 方法强制执行的规则)也是如此。
- SetStatisticHandlers(String, GetStatistic, SetStatistic) 方法,该方法允许服务对象提供用于检索和设置基于硬件的统计信息的外部回调函数。 如果未定义 get 属性,则基本类假定统计信息是基于软件的,并且其值保留在统计信息 XML 文件中。 如果同时定义了 get 和 set 属性,则基本类会在需要更新或重置统计信息时调用这些函数。 由服务对象决定是否提供代码来更新硬件中的统计信息。
- ClearInput 方法。 POS for .NET 清除设备的事件队列,然后调用服务对象的 ClearInputImpl 实现。
- ClearInputImpl 方法。 服务对象应实现此方法,以清除设备的任何硬件缓冲区。