为什么我的扫描仪不在 PosExplorer.GetDevices() 列表中?
Why isn't my scanner in the PosExplorer.GetDevices() list?
LS2208 扫描器已插入,我通过阅读手册中找到的条形码尝试了下面列出的扫描器模式。在“USB HID 键盘”和“OPOS(IBM 手持设备,完全禁用)”模式下,我可以使用扫描仪将条码读取到文本文档中。
USB HID 键盘
IMB Table 顶级 USB
IBM 手持 USB
OPOS(IBM 手持设备,完全禁用)
简单的 COM 端口仿真
explorer = new PosExplorer();
scannerList = new ArrayList(explorer.GetDevices("Scanner"));
我在列表中看到的只有两个扫描仪,即使计算机未插入任何东西,它们也始终可见:
{
服务对象名称:Microsoft Scanner Simulator,
描述:扫描仪的模拟服务对象,
制造商:微软公司,
类型:扫描仪,
服务对象版本:1.14.1.0,
UPOS 版本:1.14,
兼容性:CompatibilityLevel1,
硬件说明: ,
硬件编号: ,
硬件路径: ,
默认值:假}
{服务对象名称:扫描仪示例,
逻辑名称: ,
说明:示例扫描仪的服务对象,
制造商:微软公司,
类型:扫描仪,
服务对象版本:1.14.1.0,
UPOS 版本:1.14,
兼容性:CompatibilityLevel1,
硬件说明: ,
硬件编号: ,
硬件路径: ,
默认值:假}
尝试连接到它们中的任何一个都会引发异常:“'DevicePath' 属性 的值必须在调用 Open() 之前由服务对象定义。”
我假设“Simple COM Port Emulation”模式会模拟串口输入,但扫描仪也没有出现在串口列表中。
System.IO.Ports.SerialPort.GetPortNames();
您对不同种类的用法感到困惑。
USB HID 键盘
它模拟键盘输入,不需要额外的驱动程序或软件。
换句话说,它不能被软件控制。
PointOfService
标签
这个主要属于UWP中使用的API,使用该方法需要设置硬件模式
LS2208可能不支持此模式
支持DS2208
Windows.Devices.PointOfService Namespace
Supported Point of Service Peripherals
scannerList = new ArrayList(explorer.GetDevices("Scanner"));
您尝试使用的软件是 POS for .NET。
LS2208支持OPOS/JPOS,但不直接支持POS for.NET.
SYMBOL LS2208 GENERAL PURPOSE BARCODE SCANNER SUPPORT
但是,您可以通过 Legacy Interop System 从 POS for .NET 使用 OPOS。
POS for .NET Architecture (POS for .NET v1.12 SDK Documentation)
为此,需要执行以下步骤。
- 安装 Zebra OPOS 驱动程序(包含在 Windows 的扫描仪 SDK 中)。
Support and Downloads > OPOS Driver Downloads & Support / SCANNER SDK FOR WINDOWS
- 安装 CommonControlObjects。
MCS: OPOS Common Control Objects - Current Version
- 在GetDevices()的参数中指定搜索OPOS设备。
DeviceCompatibilities.Opos
或 DeviceCompatibilities.OposAndCompatibilityLevel1
PosExplorer.GetDevices Method (String, DeviceCompatibilities) (POS for .NET v1.12 SDK Documentation)
DeviceCompatibilities Enumeration (POS for .NET v1.12 SDK Documentation)
例如,使用方法请参考这篇文章
问题没有解决,但是GetDevices()的用法没问题
Why does Honeywell POS4NET fire the same event for two different scanners?
pos explorer is not finding any device connected to the system in C#
LS2208 扫描器已插入,我通过阅读手册中找到的条形码尝试了下面列出的扫描器模式。在“USB HID 键盘”和“OPOS(IBM 手持设备,完全禁用)”模式下,我可以使用扫描仪将条码读取到文本文档中。
USB HID 键盘
IMB Table 顶级 USB
IBM 手持 USB
OPOS(IBM 手持设备,完全禁用)
简单的 COM 端口仿真
explorer = new PosExplorer();
scannerList = new ArrayList(explorer.GetDevices("Scanner"));
我在列表中看到的只有两个扫描仪,即使计算机未插入任何东西,它们也始终可见:
{ 服务对象名称:Microsoft Scanner Simulator, 描述:扫描仪的模拟服务对象, 制造商:微软公司, 类型:扫描仪, 服务对象版本:1.14.1.0, UPOS 版本:1.14, 兼容性:CompatibilityLevel1, 硬件说明: , 硬件编号: , 硬件路径: , 默认值:假}
{服务对象名称:扫描仪示例, 逻辑名称: , 说明:示例扫描仪的服务对象, 制造商:微软公司, 类型:扫描仪, 服务对象版本:1.14.1.0, UPOS 版本:1.14, 兼容性:CompatibilityLevel1, 硬件说明: , 硬件编号: , 硬件路径: , 默认值:假}
尝试连接到它们中的任何一个都会引发异常:“'DevicePath' 属性 的值必须在调用 Open() 之前由服务对象定义。”
我假设“Simple COM Port Emulation”模式会模拟串口输入,但扫描仪也没有出现在串口列表中。
System.IO.Ports.SerialPort.GetPortNames();
您对不同种类的用法感到困惑。
USB HID 键盘
它模拟键盘输入,不需要额外的驱动程序或软件。
换句话说,它不能被软件控制。PointOfService
标签
这个主要属于UWP中使用的API,使用该方法需要设置硬件模式
LS2208可能不支持此模式
支持DS2208
Windows.Devices.PointOfService Namespace
Supported Point of Service PeripheralsscannerList = new ArrayList(explorer.GetDevices("Scanner"));
您尝试使用的软件是 POS for .NET。
LS2208支持OPOS/JPOS,但不直接支持POS for.NET.
SYMBOL LS2208 GENERAL PURPOSE BARCODE SCANNER SUPPORT
但是,您可以通过 Legacy Interop System 从 POS for .NET 使用 OPOS。
POS for .NET Architecture (POS for .NET v1.12 SDK Documentation)
为此,需要执行以下步骤。
- 安装 Zebra OPOS 驱动程序(包含在 Windows 的扫描仪 SDK 中)。
Support and Downloads > OPOS Driver Downloads & Support / SCANNER SDK FOR WINDOWS - 安装 CommonControlObjects。
MCS: OPOS Common Control Objects - Current Version - 在GetDevices()的参数中指定搜索OPOS设备。
DeviceCompatibilities.Opos
或DeviceCompatibilities.OposAndCompatibilityLevel1
PosExplorer.GetDevices Method (String, DeviceCompatibilities) (POS for .NET v1.12 SDK Documentation)
DeviceCompatibilities Enumeration (POS for .NET v1.12 SDK Documentation)
例如,使用方法请参考这篇文章
问题没有解决,但是GetDevices()的用法没问题
Why does Honeywell POS4NET fire the same event for two different scanners?
pos explorer is not finding any device connected to the system in C#