这是一个关于是否以及如何配置销售点外围设备以在 pos4.net(Microsoft 的 .net 销售点框架)中工作的一般问题。简单地说,我不太清楚,是否以及如何可以在没有相关供应商提供的特殊驱动程序的情况下自行配置硬件。
提供有关我的问题的一些背景信息。我正在研究几个需要与 C# 代码交互的外围设备(确切地说是扫描仪)。我对此还比较陌生,但根据我的理解,从表面上看,pos4.net
似乎是 upos 规范的 .net 风格实现,是一个简化兼容性的抽象层。
类似地,如果人们想从 java 进行接口(interface),可以使用 jpos
,而 opos
似乎是一个遗留标准。真正让我困惑的是,有一些不太知名的品牌扫描仪(如 NADAMOO),而且它们的兼容性对我来说并不是那么不透明。
根据我自己的经验,在 PosExplorer
识别 HoneyWell 扫描仪和 Epson 打印机之前,必须对它们进行配置并安装由各自供应商提供的软件。这种方法效果很好,但是,这些不太知名的品牌似乎没有网站,也没有可下载的驱动程序,如果可以连接它们,这确实令人困惑。
我想使用的扫描仪仅声明它可以配置虚拟通信,或者使用 USB 即插即用驱动程序充当键盘。但是如何配置要从 PosExplorer
使用的扫描仪呢?从我读到的点点滴滴来看,pos.net 似乎需要一个服务对象
或opos 驱动程序
。前者似乎只是文件中的一些 xml?
因此,如果供应商不提供任何可安装的软件/驱动程序,我是否可以通过手动创建 xml 来支持外围设备,或者是否还需要更多。
<ServiceObject Type="Scanner" Name="HoneywellScannerSO">
<Device HardwarePath="COM1"></Device>
<Device HardwarePath="" HardwareId=""></Device>
<Device HardwarePath="COM6"></Device>
<Device HardwarePath="COM5"></Device>
<Device HardwarePath="COM7"><LogicalName Name="genisis" /></Device>
<Device HardwarePath="COM8"><LogicalName Name="Scanner1234" /></Device>
<Device HardwarePath="COM10"></Device>
<Device HardwarePath="COM11"></Device>
<Device HardwarePath="LPT1"></Device>
</ServiceObject>
基于 com 的扫描仪的 XML 看起来并不那么令人畏惧。但我不确定这是正确的方法,是否还有其他方法?我也很好奇这将如何扩展到更复杂的硬件,您如何知道要构造什么 XML、什么属性等等。
有人可以解释一下人们是如何做到这一点的吗?
最佳答案
如果扫描仪硬件供应商未提供 OPOS 或 POS for .NET 服务对象,您必须自行创建。
不是仅仅通过设置和自定义配置文件就可以使用的。
如果您是应用程序供应商/开发人员,并且没有 I/O 设备控制经验,则应改用支持 OPOS 或 POS for.NET 的供应商的扫描仪,或在键盘输入模拟模式下使用扫描仪。会很好的。
如果您有控制 I/O 设备的经验,最好使用 COM 端口直接从应用程序控制扫描仪设备,而不使用 OPOS 或 POS for.NET。
如果您有 I/O 设备控制经验并计划创建服务对象,最简单的方法是完整安装 POS for.NET(包括 SDK),它将作为一个非常简单的示例提供。根据您拥有的扫描仪服务对象的来源,将其修改为您要使用的扫描仪。
Microsoft Point of Service for .NET v1.14.1 (POS for .NET)
添加以回复评论:
UPOS 是一种 API 标准化,可为应用程序和设备带来更大的可移植性和互操作性。
它不能保证完全的插头兼容性,但它有助于系统的多供应商支持,例如在使用的设备和支持多个应用程序的 I/O 设备之间进行应用程序切换。
而且由于API标准化是一种规范标准化,而不是程序或库实现标准化,因此没有可以应用于实际设备的工作程序。
它还与时间问题和供应商业务需求的强度有关。
例如,对于条码扫描仪,有 AIM(ISO/IEC-15424)作为读取条码类型(符号)通知的规范,但在创建 OPOS 时,它不是 ISO,甚至现在来自参与供应商标准化工作。
UPOS 不支持,因为没有请求。
关于c# - 如何在 microsoft pos.net 中为不提供 SDK/驱动程序的品牌配置销售点硬件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64062777/