首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中实现OPOS器件

在C#中实现OPOS器件
EN

Stack Overflow用户
提问于 2009-07-02 18:52:44
回答 1查看 11K关注 0票数 9

对于一些与遗留POS机应用程序的互操作,我想知道是否有可能在C#中实现一个假的OPOS设备。

基本上,我会实现一个接受web请求并将按键传递给遗留应用程序的伪键盘。

有没有人知道这是不是可能的,或者在哪里可以找到文档?我认为OPOS只是调用COM对象,这些对象是由注册表项配置的。所有这些都应该在C#中实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

  • 控制对象(CO)将使用后期绑定加载您的服务对象(SO)。因此,实际上并没有实现COM或类型库。相反,您需要实现适当版本的OPOS规范中定义的所有必需的方法和事件(例如,此页面上的文档之一:http://monroecs.com/oposreleases.htm)。以下信息基于本页面上链接的1.6控制程序编程器指南( CPG )。
  • CPG的第2章描述了您需要实现的内容。请注意,OPOS使用一种奇怪的方法来获取/设置属性。尽管控制对象(CO)公开了具有合理名称的属性(例如DeviceEnabled、DeviceName、DeviceDescription),但这些对象都调用相同的方法GetPropertyString (用于字符串属性)或GetPropertyNumber (用于整数属性),传递一个整数“属性索引”作为定义要检索哪个属性的参数。“属性索引”都是在OPOS标准提供的头文件中定义的。
  • 快速浏览一下CCO PosKeyboard源代码,您需要实现的方法名称列在源文件

注册表项的s_SOMethodNames中,您需要设置的注册表项在OPOS应用程序程序员指南附录"OPOS注册表使用“中定义。在本例中,您将需要创建一个注册表项HKLM\OleForRetail\ServiceOPOS\POSKeyboard\DefaultPOSKeyboard (其中DefaultPOSKeyboard是您传递给Open方法的设备名称)。此注册表项需要有一个默认值,即SO类的ProgId。您还可以在其中存储其他值(例如,SO使用的配置信息)。

祝你好运--这将是一个痛苦的过程,有很多WTF。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1076068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档