- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
对于与遗留 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/
我正在为咖啡吧餐厅开发一个 POS 系统。它工作正常,但我有一些关于打印机的问题。这里的人建议我使用 POS for .NET . 但我不能,因为: 我的客户有一台以 Windows 家庭版为服务器的
我打算从零开始开发一个POS系统,该系统将基于windows(目前是XP SP3)。我试图大致了解使用哪个 API 来处理 POS 设备。到目前为止,我发现 OPOS 是作为一组 COM 对象实现的,
我正在使用兼容 OPOS 的 MSR。是事件的顺序: 打开 claim 启用 发布 关闭 最佳答案 从技术上讲,它是 Open()/ClaimDevice()/DeviceEnabled = TRUE
我正在使用兼容 OPOS 的 MSR。是事件的顺序: 打开 claim 启用 发布 关闭 最佳答案 从技术上讲,它是 Open()/ClaimDevice()/DeviceEnabled = TRUE
因此,经过一系列研究后,我发现使用 WideCharToMultiByte 非常适合通过 OPOS 将数据从控制对象发送到我的自定义 SO。好吧,我们遇到了一个错误。在 DirectIO 部分,C#
我们正在尝试为 POS 应用程序创建类似于打印机驱动程序包装器的东西,这将使我们能够捕获打印的收据,然后再次将其转发给原始打印机。 到目前为止,我们在“POS for .Net”之上实现了一个作为服务
我目前正在开发一个应用程序,它将使用用于 OPOS 设备的 Monroe Consulting Services 通用控制对象包。我在网站上看到这些都向后兼容所有以前的版本。 "This releas
下面是我的代码: PosExplorer posExplorer = new PosExplorer(); DeviceCollection receiptPrinterDevices = posEx
我正在运行Microsoft POS for .NET。我有一个现金抽屉,条形码扫描仪和票据打印机连接到计算机。使用Microsoft POS for .NET测试应用程序,它们都可以正常工作。 我们
我正在尝试使用 Delphi (BDS2006) 中的 OPOS 驱动程序打开销售点 (POS) 打印机,但不知道如何检查打印机状态。 如何检查打印机中是否有诸如检查纸张和卡纸之类的消息? 最佳答案
我们使用windows iot版本来做一个OPOS的钱箱服务对象。我们使用 GPIO 引脚打开现金抽屉,因此我们与系统通信使用物理内存地址做一个开放我们不知道如何设置 POS.NET 配置文件的硬件设
我想使用 OPOS 控件编写一个小型 C# 应用程序,通过串行通信端口 进行通信。 我有OPOS dll。 我已经安装了 OPOS CommonControlObjects。 要在我的应用程序中使用此
对于与遗留 POS 应用程序的一些互操作,我想知道是否有可能在 C# 中实现假 OPOS 设备。 基本上我会实现一个假键盘,它接收网络请求并将按键操作传递给遗留应用程序。 有谁知道这是否可行或从哪里获
下面的代码片段使用 OPOS .NET 打开 POS 打印机进行打印。当作为独立应用程序的一部分执行时,它工作正常。当由 Windows 服务执行时,对 GetDevice(...) 的调用始终返回
OPOS PosExplorer.GetDevice() returns null when executed in Windows Service 上面的来源似乎很少有回应,所以我希望能有一个详细的
有人在 Windows 7 上使用过 Epson OPOS ADK for .NET。我尝试在 Windows 7 上安装 Windows Vista 驱动程序,因为没有适用于 Windows 7 的
我们在桌面应用程序中使用 OPOS 驱动程序 v 1.11,现在将其迁移到 v 1.14。该应用程序在 x86 架构上的较新版本上运行良好,但在编译为 x64 时,它会针对未注册的类抛出运行时错误。第
我试图了解将在 x86 Windows 10 上运行的 C++ MFC 应用程序移植到带有 Qualcomm Snapdragon 处理器的 ARM Windows 10 设备的障碍。 32位应用程序
我是一名优秀的程序员,十分优秀!