相关疑难解决方法(0)

检测串行端口插入/移除

我正在连接USB-to-serial端口,可以随时插入或移除.我发现我可以使用WMI(特别是使用WMI Code Creator)来查询PC中的设备更改.

在下面生成的代码段中,订阅了Win32_DeviceChangeEvent.但是,此事件不会显示导致事件的设备(例如USB,串行端口等).有没有办法只在插入或删除串行端口时接收通知?

为了澄清,代码的重点不是检测串口的打开/关闭,而是检测是否已将端口添加到计算机或删除了以前的端口.

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class WMIReceiveEvent
    {
        public WMIReceiveEvent()
        {
            try
            {
                WqlEventQuery query = new WqlEventQuery(
                    "SELECT * FROM Win32_DeviceChangeEvent");

                ManagementEventWatcher watcher = new ManagementEventWatcher(query);
                Console.WriteLine("Waiting for an event...");

                watcher.EventArrived += 
                    new EventArrivedEventHandler(
                    HandleEvent);

                // Start listening for events
                watcher.Start();

                // Do something while waiting for events
                System.Threading.Thread.Sleep(10000);

                // Stop …
Run Code Online (Sandbox Code Playgroud)

.net wmi serial-port

21
推荐指数
1
解决办法
2万
查看次数

标签 统计

.net ×1

serial-port ×1

wmi ×1