在Windows上是否有USB设备的标准API,我知道类会对它们产生影响但是我根本找不到标准的/列表?
谢谢
在C#应用程序中,有哪些好方法可以检测连接到计算机的某些设备的存在?当然是以编程方式.我需要支持Windows XP和7.
背景
我已经获得了一个使用某些连接设备的巨大C#应用程序.这些设备是定制硬件,并非设计用于没有软件.当C#应用程序启动时,它会搜索此类连接的设备并在适当时与它们通信.可以有多个连接的设备.我没有查看搜索设备的源代码.使用USB或串行电缆将设备插入PC.它们在设备管理器中显示为COM端口.有时PC和设备之间可能有USB集线器或串行到USB转换器.
当设备与某个USB集线器连接或使用某些串口转USB转换器时,软件有时无法正常检测到该设备.有时它因PC而异.我们不确定它是否会导致一些司机.
我被告知要研究设备搜索算法,如果可能的话,提出更好的解决方案并替换当前的实现.我以前没有完成这类任务,我需要了解Windows如何管理设备.
如何在C#中搜索特定的连接设备?什么是一些好的做法,我应该注意或避免什么?
我构建了一个小脚本,用于检查具有给定名称的USB Stick是否已插入计算机,但现在我想围绕此脚本构建一个服务,以观察Stick是否插入.起初我尝试用filewatcher执行此操作并在Stick上创建一个文件,但是如果从PC上取下棒并重新插入filewatcher dosent意识到它.以下脚本检查Stick是否插入,但我需要一个脚本来循环此DriveInfo.GetDrive函数.我不知道最好的方法是在这个函数周围建立一个10秒的定时器循环,或者.NET Framework中是否有可移动设备的观察者类.脚本来了:
public static void Main()
{
Run();
}
public static void Run()
{
var drives = DriveInfo.GetDrives()
.Where(drive => drive.IsReady && drive.DriveType == DriveType.Removable);
if (drives.Count() > 0)
{
foreach (var drive in drives)
{
if (drive.VolumeLabel == "TESTLABEL") Console.WriteLine("USB Stick is plugged in");
}
}
}
Run Code Online (Sandbox Code Playgroud)