扫描仪实现(POS for .NET v1.14 SDK 文档)

扫描仪设备用于读取条形码数据。

扫描仪是一种专用设备:

  • 应用程序必须先声明设备,然后才能启用设备。
  • 应用程序必须先声明并启用设备,然后设备才能开始读取输入。

扫描仪对象遵循事件驱动的输入的常规模型:

  • 从设备接收到输入时,DataEvent 事件将使用 Microsoft 帮助程序方法 ScannerBase.GoodRead 排队。 如果设备收到错误数据,服务对象还可以通过调用 ScannerBase.FailedRead 将 ErrorEvent 事件排入队列。
  • 如果 PosCommon.AutoDisable 属性设置为 true,ScannerBase 类会将 PosCommon.EnableDevice 属性设置为 false。 如果服务对象已实现此方法,则需要酌情禁用设备。

只有当属性 ScannerBase.DataEventEnabled 设置为 true 时,才会将排队的 DataEvent 事件传递到应用程序。

  • 统一服务点 (UnifiedPOS) 规范要求来自传入的 DataEvent 的数据必须先复制到相应的属性中,然后才能被传递到应用程序。 在将 DataEvent 传递给应用程序之前调用的 ScannerBase.PreFireEvent 方法通过调用 ScannerBase.DecodeScanDataLabel 和 ScannerBase.DecodeScanDataType(如果 DecodeData 属性设置为 true)来满足此要求。 通常必须在服务对象中实现这些方法。
  • 扫描的数据将放入 Scanner.BaseScanData 属性中。 如果应用程序已将 ScannerBase.DecodeData 属性设置为 true,数据将被解码为 ScannerBase.ScanDataLabel 和 ScanDataType 属性。
  • 在将 DataEvent 传递到应用程序之前,属性 ScannerBase.DataEventEnabled 设置为 false。 这可以防止进一步将 DataEvent 传递到应用程序,直到应用程序完成对当前事件的处理。 应用程序在准备好处理传入事件时,将 ScannerBase.DataEventEnabled 设置为 true。
  • 可以读取 ScannerBasic.DataCount 属性以获取已排队事件的总数。
  • 可以通过调用 ScannerBasic.ClearInput 方法来删除所有已排队事件。

本节内容

  • 数据解码 - 描述了解码设备特定的数据所需的代码。

  • 扫描仪事件 - 演示了扫描仪服务对象如何使用 POS for .NET 队列向应用程序引发事件。