2

我正在使用与 OPOS 兼容的 MSR。是事件的顺序:

  1. 打开
  2. 宣称
  3. 使能够
  4. 发布
4

1 回答 1

5

从技术上讲,它是Open()/ ClaimDevice()/ DeviceEnabled= TRUE / DeviceEnabled= FALSE / ReleaseDevice()/ Close()

Open()请求指定设备的句柄,如果设备存在,应该可以工作。 Close()是匹配对函数,它应该在应用程序不再需要设备时调用。

ClaimDevice()(以前称为Claim()方法)将尝试访问设备。如果设备是专用设备(例如条形码扫描仪),ClaimDevice()则如果其他进程已声明它,则会失败。 ReleaseDevice()(也称为Release()但它的名称与COM方法冲突Release())是当应用程序不再需要访问设备时应该调用的匹配对函数。这使得应用程序之间可以优雅地共享设备。例如,如果您的销售应用程序上有一个按钮可以进入库存应用程序 - 销售应用程序应该调用ReleaseDevice()扫描仪,以便库存应用程序可以成功调用ClaimDevice()

设置DeviceEnable为 TRUE 将使设备准备好输入。如果是条码扫描仪,它会打开激光。只有启用的设备才会触发DataEvent()s。当您准备好接受条形码时,您通常会将条形码扫描仪设置为 true,然后如果条形码错误并且您希望它们停止扫描,则将其设置为 false。

从技术上讲,您不必DeviceEnable在调用之前设置为 false ReleaseDevice();你甚至不必在打电话ReleaseDevice()之前打电话Close()。OPOS 就像一个神经质的女仆,即使应用程序没有清理它们也会清理它们。但是,我个人认为,如果设备管理不善,这就是编程草率的证据。

于 2012-11-02T20:55:53.517 回答