如何创建 OPOS 服务对象虚拟打印机 - c#
Posted
技术标签:
【中文标题】如何创建 OPOS 服务对象虚拟打印机 - c#【英文标题】:How to create a OPOS Service Object virtual printer - c# [closed] 【发布时间】:2021-04-05 02:21:30 【问题描述】:我希望为 POS 应用程序构建一个 OPOS 服务对象 (SO) 虚拟打印机,以捕获购物收据。如果有人可以建议如何创建服务对象的步骤将不胜感激。
【问题讨论】:
【参考方案1】:总的来说,回答这个问题所需的信息量非常大,很难很快回答。
因此,这里主要是相关信息的链接。 请将这些作为学习和工作的参考。
我的 GitHub 上有一个独立于设备的简单介绍说明。kunif/OposInternals
除此之外,它既不是C#也不是POSPrinter,但是GitHub上有VC++的ATL的MSR SO骨架。RichardChambers/atl_msr_so
以下是关系中使用的属性。ComVisibleAttribute ClassGuidAttribute ClassInterfaceTypeAttribute ClassComRegisterFunctionAttribute ClassComUnregisterFunctionAttribute Class
这是评论文章的目录,包括其背后的机制。Interoperability (C# Programming Guide)Advanced COM Interoperability
为响应 cmets 添加:
-
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)
对于 VirtualPrinter 而不是 PhysicalPrinter,该类中定义的哪些功能应该被实现为必不可少的? 在我们只处理虚拟打印机的打印命令的情况下。
这不取决于虚拟打印机因素,而是取决于应用程序使用的方法属性事件。 如果您的应用程序使用的功能不受您的虚拟打印机支持,您的应用程序将检测到异常并停止处理。你写的“保存指向CO的IDispatch ....事件通知的指针”这句话是不是意味着将“pDispatch”保存到这个类中?
关于以下内容。是的。在 OpenService 方法的实现中,通过准备动态类型变量,保存指向 CO 的 IDispatch 对象的指针作为参数传递,并将其用于事件通知。
【讨论】:
您好 Kunif,感谢您提供有用的链接。我还有一些其他问题: 1. OPOS PosPrinter internals 和 OPOS internals ENUM 中定义的该属性的定义是什么?从名字上,我找不到那是什么意思? 2. 对于 VirtualPrinter 而不是 PhysicalPrinter,该类中定义的哪些功能应该被实现为必不可少的?在这种情况下,我们只处理虚拟打印机的打印命令。 3.你写的“保存指向CO的IDispatch ....事件通知的指针”这句话是否意味着将“pDispatch”保存到这个类中?干杯,S。 谢谢Kunif,我还有一个问题是:我们的虚拟打印机是否可以只处理打印命令并将其他命令传递给其他OPOS物理打印机? 由你来创建服务对象做什么。但是,与直接使用打印机本应组装ESCPOS命令并直接发送的情况不同,POS打印机OPOS是通过各种设置和功能协同工作的,因此它不会仅通过模拟几个功能来工作。以上是关于如何创建 OPOS 服务对象虚拟打印机 - c#的主要内容,如果未能解决你的问题,请参考以下文章