gpt4 book ai didi

c# - 在 C# 中实现 OPOS 设备

转载 作者:太空狗 更新时间:2023-10-29 17:45:38 25 4
gpt4 key购买 nike

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

基本上我会实现一个假键盘,它接收网络请求并将按键操作传递给遗留应用程序。

有谁知道这是否可行或从哪里获得文档?我认为 OPOS 只是调用由注册表项配置的 COM 对象。所有这些都应该可以在 C# 中实现。

最佳答案

是的,这当然是可能的。

您可以开发一个 OPOS SO(服务对象),它在 C# 中实现 OPOS 期望的 COM 接口(interface)。然后,这可以以您想要的任何方式实现 API。

我建议您从 http://monroecs.com/oposccos.htm 下载 Curtiss Monroe 的 OPOS Common Control Objects .

这将为您提供需要为您的服务对象实现的类型库,并且可能有一些指向 OPOS 文档的链接。注意,我认为 OPOS 使用后期绑定(bind),因此您需要实现双重接口(interface)。

警告:恕我直言,从技术上讲,OPOS 是一个可怕的 API,由外围设备供应商委员会设计,目的是公开其外围设备的功能,而不是为 POS 应用程序开发人员提供有用的抽象。

这方面的一个特别引人注目的例子是所谓的 ToneIndicator 设备,它展示了富士通键盘中音调发生器的功能,可以发出不同音高和音量的两种音调的重复序列。

更新

我以前实现过 OPOS 服务对象,但是已经很久了。这里有更多信息可帮助您开始使用 POSKeyboard SO。

  • 控制对象 (CO) 将使用后期绑定(bind)加载您的服务对象 (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 应用程序程序员指南 (APG) 附录“OPOS 注册表使用”中定义。在您的情况下,您需要创建一个注册表项 HKLM\OleForRetail\ServiceOPOS\POSKeyboard\DefaultPOSKeyboard(其中 DefaultPOSKeyboard 是您传递给 Open 方法的设备名称)。此注册表项需要有一个默认值,即您的 SO 类的 ProgId。您还可以在那里存储其他值(例如,您的 SO 使用的配置信息)。

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

关于c# - 在 C# 中实现 OPOS 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1076068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com