Cha*_*ell 8 c# asp.net usb hid
我正在尝试为USB设备编写自己的控制器,而不是使用产品附带的SDK(我觉得sdk低于标准杆).
USB设备已插入运行此应用程序的SAME SERVER.
所以我决定前往Nuget并抓住HidLibrary
PM> Install-Package hidlibrary
然后我继续按照GitHub上的例子进行操作.
首先,我进入控制面板验证VendorID和ProductID

我将它放入我的代码中.
然后我在抓住设备的线路上设置断点,但不幸的是它总是回来null.
using HidLibrary;
public class MyController : ApiController
{
private const int VendorId = 0x0BC7;
private const int ProductId = 0x0001;
private static HidDevice _device;
// POST api/<controller>
public string Post(CommandModel command)
{
_device = HidDevices.Enumerate(VendorId, ProductId).FirstOrDefault();
if (_device != null)
{
// getting here means the device exists
}
else
{
// ending up here means the device doesn't exist
throw new Exception("device not connected");
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我希望它是愚蠢的,而不是直接从IIS工作者连接到USB设备的一些突破性权限问题.
gar*_*nti 10
尽管你希望成为愚蠢的东西,但事实并非如此.您有一些突破性的权限问题.如果您将从Hid库的GitHub浏览Mike O'Brien的代码,您将看到它调用位于以下内容的Win32 API函数:kernel32.dll,setupapi.dll,user32.dll,hid.dll(Native.cs).
枚举本身是通过setupapi.dll函数完成的.它浏览所有已安装的设备并过滤所需的设备.
所以...我认为使用匿名身份验证直接从IIS中的Web应用程序执行kernel32.dll代码是一个安全问题,不是吗?
如果你真的需要与那个HID(谁知道它可能是温度传感器或其他东西)进行通信,我会做一个单独的Windows服务,IIS托管的Web应用程序将通过WCF与此服务进行通信.这项服务想要代理.
将相同的代码放在控制台应用程序中并运行它.这将帮助您验证它是您的代码还是环境.
如果是环境,请尝试使用Process Monitor查看是否存在任何隐藏的访问错误.还要尝试枚举所有设备,而不仅仅是寻找你所追求的设备,只是为了看看你是否可以在ASP.NET中实现它.
| 归档时间: |
|
| 查看次数: |
1628 次 |
| 最近记录: |