扫描仪设备用于读取条形码数据。
扫描仪是一种专用设备:
- 应用程序必须先声明设备,然后才能启用设备。
- 应用程序必须先声明并启用设备,然后设备才能开始读取输入。
扫描仪对象遵循事件驱动的输入的常规模型:
- 从设备接收到输入时,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 方法来删除所有已排队事件。