首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C#中获取新连接的USB设备的COM端口(串口)

在C#中获取新连接的USB设备的COM端口(串口),可以通过使用System.Management命名空间下的ManagementEventWatcher类和WqlEventQuery类来实现。

首先,需要引用System.Management命名空间,并创建一个ManagementEventWatcher对象和一个WqlEventQuery对象。然后,使用WqlEventQuery对象设置查询条件,以便监听USB设备的连接和断开事件。

下面是一个示例代码:

代码语言:txt
复制
using System;
using System.Management;

public class USBWatcher
{
    private ManagementEventWatcher watcher;

    public void StartWatching()
    {
        WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2 or EventType = 3");
        watcher = new ManagementEventWatcher(query);
        watcher.EventArrived += new EventArrivedEventHandler(USBEventArrived);
        watcher.Start();
    }

    public void StopWatching()
    {
        if (watcher != null)
        {
            watcher.Stop();
            watcher.Dispose();
        }
    }

    private void USBEventArrived(object sender, EventArrivedEventArgs e)
    {
        ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
        string eventType = (string)e.NewEvent["EventType"];

        if (eventType == "2") // USB设备连接事件
        {
            string deviceName = (string)instance["Name"];
            string comPort = GetCOMPort(deviceName);

            Console.WriteLine("USB设备已连接:{0},COM端口:{1}", deviceName, comPort);
        }
        else if (eventType == "3") // USB设备断开事件
        {
            string deviceName = (string)instance["PreviousInstanceName"];
            string comPort = GetCOMPort(deviceName);

            Console.WriteLine("USB设备已断开:{0},COM端口:{1}", deviceName, comPort);
        }
    }

    private string GetCOMPort(string deviceName)
    {
        // 在这里编写获取COM端口的逻辑
        // 可以使用System.IO.Ports.SerialPort类来获取已连接的串口设备信息

        return "COM1"; // 假设返回COM1端口
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        USBWatcher usbWatcher = new USBWatcher();
        usbWatcher.StartWatching();

        Console.WriteLine("正在监听USB设备连接和断开事件,请按任意键退出...");
        Console.ReadKey();

        usbWatcher.StopWatching();
    }
}

上述代码中,USBWatcher类封装了USB设备的连接和断开事件的监听逻辑。在StartWatching方法中,创建了一个WqlEventQuery对象,并设置查询条件为Win32_DeviceChangeEvent的EventType为2(USB设备连接事件)或3(USB设备断开事件)。然后,通过ManagementEventWatcher对象的EventArrived事件处理程序USBEventArrived来处理事件。在USBEventArrived方法中,可以通过ManagementBaseObject对象获取USB设备的相关信息,如设备名称。然后,可以调用GetCOMPort方法来获取USB设备的COM端口。

需要注意的是,GetCOMPort方法中需要编写获取COM端口的逻辑。可以使用System.IO.Ports.SerialPort类来获取已连接的串口设备信息。具体的实现方式根据实际需求和环境而定。

这是一个基本的实现示例,具体的应用场景和推荐的腾讯云相关产品和产品介绍链接地址需要根据实际情况进行选择和提供。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

1分6秒

小米手机忘记WiFi密码不用愁,导出查看所有曾经连接过的WIFI密码

1分58秒

腾讯千帆河洛场景连接-维格表&企微自动发起审批配置教程

1分9秒

用于物联网智能家居工业网关openwrt串口数据透传无线路由WiFi模块开发板

48秒

可编程 USB 转串口适配器开发板

7分20秒

鸿怡电子工程师:芯片测试座在半导体测试行业中的关键角色和先进应用解析

1分37秒

MR300C图传模块 USB摄像头内窥镜转WIFI网口WEBcam机器人图像传输

1分29秒

U盘根目录乱码怎么办?U盘根目录乱码的解决方法

1分10秒

DC电源模块宽电压输入和输出的问题

16分8秒

人工智能新途-用路由器集群模仿神经元集群

领券