做工控的,经常要用C#写上位机,这时,USB的驱动是一个无法避免的问题,其中,如果要做得好,必须得处理检测USB是否插入的问题。
目前是用一个 DispatcherTimer定时器 也定时检测是否插入,至于为什么要用这个定时器,是因为WPF中,这和UI处于同一个线程,无需处理跨线程的问题。
定时检测的代码是从USB的驱动代码里抠出来的,因为USB驱动的第一步就是搜索USB设备。后面才是打开USB等一系列操作。所以,把这个搜索的代码复制出来,单独成一个函数,就是检测USB是否插上的代码了。
这次的是HID USB,搜索HID USB,检测USB是否插入的代码如下:
public bool IsPlusUsb(){USBHID usbHID_plus = new USBHID();string DstDev = "";System.Diagnostics.Debug.Print("搜索到的USB HID 设备如下; ");foreach (string device in usbHID_plus.GetDeviceList()){System.Diagnostics.Debug.Print(device);if (device.IndexOf("1111") >= 0 && device.IndexOf("2222") >= 0){DstDev = device;}}System.Diagnostics.Debug.Print("");if (DstDev.Length > 0){System.Diagnostics.Debug.Print("目标USB-HID设备为:");System.Diagnostics.Debug.Print(DstDev);}else{System.Diagnostics.Debug.Print("错误:找不到目标USB-HID设备");//while (true) { }return false;}return true;}
最终效果如下: