对于一些与遗留POS机应用程序的互操作,我想知道是否有可能在C#中实现一个假的OPOS设备。
基本上,我会实现一个接受web请求并将按键传递给遗留应用程序的伪键盘。
有没有人知道这是不是可能的,或者在哪里可以找到文档?我认为OPOS只是调用COM对象,这些对象是由注册表项配置的。所有这些都应该在C#中实现。
发布于 2009-07-02 20:05:46
是的,这当然是可能的。
您可以开发一个OPOS SO (服务对象),它实现了C#中OPOS所期望的COM接口。然后,这可以以任何您想要的方式实现API。
我建议你从http://monroecs.com/oposccos.htm下载Curtiss Monroe的OPOS公共控件对象。
这将为您的服务对象提供您需要实现的类型库,并且可能有一些到OPOS文档的链接。注意:我认为OPOS使用了后期绑定,所以你需要实现一个双接口。
注意:从技术上讲,IMHO OPOS是一个可怕的API,由外围设备供应商委员会设计,目的是公开其外围设备的功能,而不是为POS应用程序开发人员提供有用的抽象。
一个特别引人注目的例子是所谓的ToneIndicator设备,它展示了富士通键盘上的音调发生器的功能,可以发出不同音高和音量的两个音调的重复序列。
更新
我以前实现过OPOS服务对象,但是已经很长时间了。这里有一些更多的信息,可以让你开始使用POSKeyboard。
注册表项的s_SOMethodNames中,您需要设置的注册表项在OPOS应用程序程序员指南附录"OPOS注册表使用“中定义。在本例中,您将需要创建一个注册表项HKLM\OleForRetail\ServiceOPOS\POSKeyboard\DefaultPOSKeyboard (其中DefaultPOSKeyboard是您传递给Open方法的设备名称)。此注册表项需要有一个默认值,即SO类的ProgId。您还可以在其中存储其他值(例如,SO使用的配置信息)。
祝你好运--这将是一个痛苦的过程,有很多WTF。
https://stackoverflow.com/questions/1076068
复制相似问题