0

我正在寻找为 POS 应用程序构建 OPOS 服务对象 (SO) 虚拟打印机来捕获购物收据。如果有人可以建议如何创建服务对象的步骤,将不胜感激。

4

1 回答 1

0

总的来说,回答这个问题所需的信息量非常大,很难很快回答。

因此,这里主要是相关信息的链接。
请将这些作为学习和工作的参考。

我的 GitHub 上有一个独立于设备的简单介绍说明。
kunif/OposInternals

除此之外,它既不是 C# 也不是 POSPrinter,但在 GitHub 上有一个由 VC++ 的 ATL 编写的 MSR SO 的骨架。
理查德钱伯斯/atl_msr_so

以下是关系中使用的属性。
ComVisibleAttribute 类
GuidAttribute 类
InterfaceTypeAttribute 类
ComRegisterFunctionAttribute 类
ComUnregisterFunctionAttribute 类

这是评论文章的目录,包括其背后的机制。
互操作性(C# 编程指南)
高级 COM 互操作性


为回应评论添加:

  1. 在 OPOS PosPrinter internals 和 OPOS internals ENUM 中定义的该属性的定义是什么?
    从名字上,我找不到那是什么意思?
    • 以下部分基于C++创建的Service Objects的包含文件(OPOSyyyy.hi)中描述的属性名称和索引值定义,该文件包含在CCO(Common Control Objects)中。
  • 设备公共属性:OPOS_Internals.PIDX_pppp(pppp中的属性名)
  • 设备特定属性:OPOSxxxxInternals.PIDXyyyy_pppp(OPOS 设备类名在 xxxx,设备类名在 yyyy 的缩写,属性名在 pppp)
  1. 对于 VirtualPrinter 而不是 PhysicalPrinter,该类中定义的哪些功能应该被实现为必不可少的?
    在这种情况下,我们只处理虚拟打印机的打印命令。

    • 它不取决于虚拟打印机因素,而是取决于应用程序使用的方法属性事件。
    • 如果您的虚拟打印机不支持您的应用程序使用的功能,您的应用程序将检测到异常并停止处理。
  2. 你写的这句话“保存指向CO的IDispatch ....事件通知的指针”是否意味着将“pDispatch”保存到这个类中?

    • 关于以下。是的。
  • 在 OpenService 方法的实现中,通过准备一个动态类型变量,保存指向作为参数传递的 CO 的 IDispatch 对象的指针,并将其用于事件通知。
于 2020-12-30T07:19:03.590 回答