我将使用.NET与POS for .NET制作POS应用程序。有没有办法在机器上列出已安装设备的逻辑名称,然后我可以将选定的逻辑名称传递给GetDevice方法
答案 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标准。