我们正在尝试截取pos和打印机之间的数据。
我们遇到的问题是,当我们将打印机x连接到com0com端点时,POS机报告它处于脱机状态。
com0com端点两端上的超级终端的实例可以彼此通信。
我从来不知道有一种方法可以检测硬件是否真的连接到了串行端口。通常,无论是否有设备在监听,我都会写入com端口。我知道pos使用opos作为与打印机通信的底层方式。opos触发什么事件来通知pos应用程序认为打印机处于脱机状态?硬件如何识别设备是否已连接?在使用com0com时,有什么方法可以绕过这个事件吗?
发布于 2013-04-23 04:49:31
OPOS遵循三个步骤的过程: Open()、ClaimDevice()和Enable。调用Open()将导致OPOS公共控制对象(OPOS CCO)构造供应商提供的特定于设备的服务对象( SO ),然后它将调用SO上的Open()方法。这将初始化软件,但此时可能不会尝试与设备通信。
ClaimDevice()与SO协商以确保设备对应用程序是可共享和可用的。此时可以离线报告该设备。ClaimDevice()将引发一个异常,其中的ResultCode表示为OPOS_E_OFFLINE。
如果将Enable设置为true,或者如果设备处于脱机状态,则执行打印活动可能会使调用失败。例如,有人可能在打印过程中拔下打印机插头。
SO负责执行与设备的协商和通信。供应商提供的OPOS安装包通常会为您安装和配置SO。但您有责任确保SO被正确配置为与正确的端口和设备通信。如果没有正确配置,则在调用ClaimDevice()时会出现设备脱机错误。
https://stackoverflow.com/questions/16115219
复制相似问题