我将使用 .NET 和 POS for .NET 制作一个 POS 应用程序。有没有办法列出机器上已安装设备的逻辑名称,然后我可以将选定的逻辑名称传递给 GetDevice 方法
问问题
4108 次
2 回答
5
如果您不想深入注册表,这里有另一种方法:
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
}
于 2013-12-13T00:47:40.220 回答
0
检查键 HKLM/SOFTWARE/OLEforRetail 下的注册表树
实际的驱动程序 ocx/dll 将在 ServiceInfo 子键的相关部分下列出,逻辑名称将在 ServiceOPOS 子键的相关部分下
那是如果硬件制造商。遵循 OPos 标准。
于 2013-08-01T15:19:56.040 回答