我希望比我聪明的人能够找到解决这个问题的方法。
我有一个自助服务终端应用程序,其中有两个usb rfid阅读器插入运行Windows 10 IoT的raspberry pi 3,其中包含一个用Visual Studio编写的c#UWP应用程序。 rfid阅读器充当键盘。基本上他们只是读取rfid令牌上的id“输入”,然后按回车键。
我需要能够在任何给定时间告诉哪个rfid阅读器正在读取标签。
在插入了多个usb rfid阅读器的Windows 10计算机上使用以下项目:http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard我可以分辨出哪个rfid阅读器正在使用但无法在运行Windows 10 IoT Core的raspberry pi上运行。
我使用Windows.Devices.HumanInterfaceDevice命名空间创建了一个UWP应用程序,可以让读者显示但无法打开它。
我使用的代码是:
string selector = HidDevice.GetDeviceSelector(0x0001, 0x0006, 0x08FF, 0x0009);
var hidDevice = await HidDevice.FromIdAsync(selector, FileAccessMode.Read);
var inputReportEventHandler = new TypedEventHandler<HidDevice, HidInputReportReceivedEventArgs>(this.OnInputReportEvent);
hidDevice.InputReportReceived += inputReportEventHandler;
当我使用:
配置Package.appxmanifest时<DeviceCapability Name="humaninterfacedevice">
<Device Id="vidpid:08FF 0009">
<Function Type="usage:0001 0006"/>
</Device>
</DeviceCapability>
并编译应用程序我收到错误:
错误DEP0700:应用注册失败。 Appx包的清单无效:由于功能元素使用问题,无法注册包:0001 0006:值被阻止,此总线上不允许(0x80073cf6)
因此,看起来Microsoft已使用Windows.Devices.HumanInterfaceDevice命名空间(https://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.humaninterfacedevice.aspx)阻止了对rfid阅读器的访问,因为它已被归类为位于顶级应用程序集合中。
所以我的选择是:
尝试使用原始输入应用程序(从上面的代码项目站点的链接),但我认为由于它正在进行的基础调用,它将在pi上运行。
< / LI>在pi上放置一个不同的操作系统并重写自助服务终端应用程序(我真的很喜欢使用Windows IoT和带有UWP应用程序的c#。
想一个不同的解决方案,我希望阅读这篇文章的聪明人能够提出建议。
欢迎任何建议!