获取已安装的POS设备的逻辑名称

时间:2013-05-08 18:04:16

标签: .net pos-for-.net

我将使用.NET与POS for .NET制作POS应用程序。有没有办法在机器上列出已安装设备的逻辑名称,然后我可以将选定的逻辑名称传递给GetDevice方法

2 个答案:

答案 0 :(得分:4)

如果您不想深入注册表,这是另一种方式:

PosExplorer explorer = new PosExplorer();    
List<String[]> foundLogicalNames = new List<String[]>();   // String[0] will hold device type, String[1] will hold logical name

foreach (DeviceInfo deviceInfo in explorer.GetDevices())   // This will get ALL device types
    foreach (String logicalName in deviceInfo.LogicalNames)
        if (!String.IsNullOrWhiteSpace(logicalName))
            foundLogicalNames.Add(new String[2] { deviceInfo.Type, logicalName });  // Only add devices with logical names set

此时,变量 foundLogicalNames 应包含所有可访问设备的列表,其中包含先前已设置的逻辑名称。

现在我们可以从此列表中选择我们想要的设备:

DeviceInfo selectedDevice;

if (foundLogicalNames.Count > 0)   // Ensure we have found some logical names set on our system
{
    int desiredDeviceIndex = selectDesiredDeviceFromFoundLogicalNames();   // user implemented function, get integer index into foundLogicalNames of desired device
    selectedDevice = explorer.GetDevice(foundLogicalNames[desiredDeviceIndex][0], foundLogicalNames[desiredDeviceIndex][1]);    // [0] = device type, [1] = logical name
    ...     
    // continue to Open(), Claim() etc
}

答案 1 :(得分:0)

检查密钥HKLM / SOFTWARE / OLEforRetail

下的注册表树

实际的驱动程序ocx / dll将列在ServiceInfo子键的相关部分下 逻辑名称将在ServiceOPOS子键的相关部分下

那就是硬件制造商。遵守OPOS标准。