对于一些传统POS应用程序的互操作,我想知道是否有可能在C#中实现虚假的OPOS设备.
基本上我会实现一个虚假键盘,它接受Web请求并将按键传递给遗留应用程序.
有谁知道这是可能的还是在哪里获得文件?我认为OPOS刚刚调用了由注册表项配置的COM对象.所有这些都应该在C#中实现.
Joe*_*Joe 12
是的,这当然是可能的.
您可以开发一个OPOS SO(服务对象),它实现了OPOS在C#中所期望的COM接口.然后,这可以以您想要的任何方式实现API.
我建议你从http://monroecs.com/oposccos.htm下载Curtiss Monroe的OPOS通用控制对象.
这将为您提供为Service对象实现的类型库,并且可能包含一些指向OPOS文档的链接.NB我认为OPOS使用后期绑定,因此您需要实现双接口.
需要注意的是:恕我直言OPOS在技术上是一个可怕的API,由委员会外围设备供应商设计,以揭示其外围设备的功能,而不是为POS应用程序开发人员提供有用的抽象.
一个特别引人注目的例子是所谓的ToneIndicator设备,该设备暴露了富士通键盘中音调发生器的功能,以发出不同音高和音量的两个音调的重复序列.
UPDATE
我之前已经实现了OPOS服务对象,但已经很长时间了.这里有一些更多信息可以帮助您开始使用POSKeyboard SO.
Control对象(CO)将使用后期绑定加载您的服务对象(SO).所以实际上没有你实现的COM IID或类型库.相反,您需要实现在相应版本的OPOS规范中定义的所有必需方法和事件(例如,本页面上的文档之一:http://monroecs.com/oposreleases.htm).以下信息基于本页面上链接的1.6控制程序员指南(CPG).
CPG的第2章描述了您需要实现的内容.请注意,OPOS使用一种奇怪的方法来获取/设置属性.虽然控制对象(CO)公开具有合理名称的属性(例如DeviceEnabled,DeviceName,DeviceDescription),但这些都调用相同的方法GetPropertyString(对于字符串属性)或GetPropertyNumber(对于整数属性),传递整数"属性索引"作为定义要检索哪个属性的参数."属性索引"都是在随OPOS标准提供的头文件中定义的.
通过快速浏览CCO PosKeyboard源,您需要实现的方法名称列在源文件POSKeyboardImpl.cpp中的s_SOMethodNames中.
您需要设置的注册表项在OPOS Application Programmer's Guide(APG)附录"OPOS Registry Usage"中定义.在您的情况下,您将需要创建一个注册表项HKLM\OleForRetail\ServiceOPOS\POSKeyboard\DefaultPOSKeyboard(其中DefaultPOSKeyboard是您传递Open方法的设备名称).此注册表项需要具有默认值,即SO类的ProgId.您还可以在其中存储其他值(例如,您的SO使用的配置信息).
祝你好运 - 这将是一个痛苦的过程,有很多WTF.
| 归档时间: |
|
| 查看次数: |
9985 次 |
| 最近记录: |