C# 检测USB是否插入

本文介绍了一种使用C#检测HIDUSB设备插入的方法,通过定时器DispatcherTimer进行轮询,并从USBHID驱动代码中提取设备搜索功能。当找到目标设备(设备标识包含特定字符串“1111”和“2222”)时,返回true,否则返回false。该方法适用于WPF应用,避免了跨线程问题。
摘要由CSDN通过智能技术生成

做工控的,经常要用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;
        }

最终效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值