【问题标题】:What is the order of events for working with OPOS compatible hardware?使用 OPOS 兼容硬件的事件顺序是什么?
【发布时间】:2012-10-17 02:03:21
【问题描述】:

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

  1. 打开
  2. 索赔
  3. 启用
  4. 发布
  5. 关闭

【问题讨论】:

    标签: c# opos pos-for-.net


    【解决方案1】:

    从技术上讲,它是 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。

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

    【讨论】:

    • 我在我的程序中使用了 OPOS 扫描仪。当程序关闭时,我禁用、释放和关闭设备,但在我的程序运行后没有其他应用程序可以使用它。此外,如果我重新启动,任何应用程序都无法使用它。甚至我的应用程序都不会导致问题。有什么想法吗?
    • @Chris-HaddoxTechnologies 这是一个老问题/评论,但你有没有弄清楚你的问题克里斯?我自己也遇到了类似的问题。
    • 好久不见。我相信我的问题是错误地处理了同时访问扫描仪的线程。很久没有搞乱那些扫描仪了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    相关资源
    最近更新 更多