- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们正在尝试为 POS 应用程序创建类似于打印机驱动程序包装器的东西,这将使我们能够捕获打印的收据,然后再次将其转发给原始打印机。
到目前为止,我们在“POS for .Net”之上实现了一个作为服务对象的服务对象,它工作得非常好,但事实证明,一些遗留 POS 应用程序只支持 OPOS。为了支持它们,我们必须使我们的“POS for .Net”服务对象可用作 OPOS 服务对象,或者我们必须使用 CCO 编写我们自己的 OPOS 服务对象。
我的问题是:
最佳答案
问)在这些遗留 POS 应用程序中,甚至可以使用我们的 POS for .Net 解决方案吗? (如果是,怎么做?)
A) 不,这些应用程序不使用 POS for .Net 库,也不使用 POS for .Net 注册表项搜索服务对象,这些应用程序仅使用 OPOS(OLE POS) 注册表项进行搜索对于已注册的服务对象,通常调用 CCO,CCO 又调用服务对象。
Q) 如何建立一个OPOS服务对象?它可以使用 .Net 框架(例如 C#)吗?
A) 是的,它可以使用 .Net 来完成,但是你需要将它公开为一个 COM 库,一个好方法是在 CCO 中实现接口(interface),每个设备都有一个 DLL,引用那个您需要的设备,实现它的接口(interface),并将您的类型标记为 COM 可见,添加一个 GUID 和一个 ProgId,使用 regasm “path”/register/codebase/tlb 命令,添加所需的注册表项——可以在 UPOS 规范\开发指南文档中找到——然后你就完成了,或者至少我是这么想的,你会得到一个错误,指出你的方法缺失正确运行它所需的服务对象,好吧,我发现这很困难,但是有 7 个方法没有在接口(interface)中引用——尽管在 UPOS 规范\开发指南文档中被引用——这些方法是:
实现这些方法后一切正常,这很奇怪,因为 CCO 接口(interface)中没有引用任何方法,但是正如我所说的,这些方法中的每一个都在 UPOS 规范中被引用并且有完整的描述。
似乎 OpenService 和 CloseService 方法存在的原因是,当 CCO 库作为 com 实现时,Open 和 Close 方法名称不合适,必须更改为 OpenService 和 CloseService,同样适用于 Claim 和 Release使用新名称 ClaimDevice 和 Release Device – 但是这些在接口(interface)中正确公开,至于其余方法我找不到原因。
Get\Set 属性方法
这 4 个方法用于访问对象中的所有属性,为什么?我不确定,但似乎应该从 Dispatch 接口(interface)使用这些来访问您的对象,为什么默认情况下该接口(interface)不可用? C++ 服务对象是否以相同的方式实现?我没有答案。
要以正确的方式实现这些,应该查看 OPOS 安装下的 Include 目录 – CCO 安装 – 并检查 *.hi 文件,主要是 Opos.hi 和 OposPtr.hi(取决于设备,在我们的例子中是打印机),您会看到这些包括 CCO 的常量,如成功或失败的枚举,以及对于这 4 种方法的属性索引和设备索引偏移量。
使用 OPOS 常量中的数字,您只需打开 PropIndex 参数值,并获取\设置正确的属性值。
if (PropertyIndexHelper.IsStringPidx(PropIndex))
{
switch (PropIndex)
{
case PropertyIndexHelper.PIDX_CheckHealthText:
return _physicalPrinter.CheckHealthText;
case PropertyIndexHelper.PIDX_DeviceDescription:
return _physicalPrinter.DeviceDescription;
case PropertyIndexHelper.PIDX_DeviceName:
return _physicalPrinter.DeviceName;
.
.
.
.
.
关于c# - 实现用于捕获打印文本的 OPOS 打印机服务对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632453/
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!