zoukankan      html  css  js  c++  java
  • C# 过滤SerialPort端口

    C#中的SerialPort类只能通过SerialPort.GetPortNames()来获取端口名字,而且出来都是COM+数字的字样,如果我要识别COM端口是什么设备的,它就无能为力了,此时我们可以使用ManagementObjectSearcher获取所有COM&LPT的port,然后根据名字或者description来识别端口:

    try
                {
                    //{4d36e978-e325-11ce-bfc1-08002be10318}为设备类别port(端口(COM&LPT))的GUID
                    ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                                                            "root\CIMV2",
                        "SELECT * FROM Win32_PnPEntity WHERE ClassGuid="{4d36e978-e325-11ce-bfc1-08002be10318}""
                                                            );
                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        string name = queryObj.GetPropertyValue("Name").ToString();
                        string desc = queryObj.GetPropertyValue("Description").ToString();
                       
                    }
                }
                catch (Exception ex)
                {
                    //Log.w
                }

    如果事先知道某类port的名字特征,如知道Description为“abc”,就可以把ManagementObjectSearcher的第二个参数改为:

                try
                {
                    //{4d36e978-e325-11ce-bfc1-08002be10318}为设备类别port(端口(COM&LPT))的GUID
                    ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                                                            "root\CIMV2",
                                                            "SELECT * FROM Win32_PnPEntity WHERE Name LIKE '%abc%'"
                                                            );
                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        string name = queryObj.GetPropertyValue("Name").ToString();
                        string desc = queryObj.GetPropertyValue("Description").ToString();
                    }
                }
                catch (Exception ex)
                {
                    //Log.w
                }

    这样就不需要过滤了。

    google了半天,有用win32_serialport的,但是不知道问为啥,有些端口识别不出来。

  • 相关阅读:
    Django学习(文件上传与下载)
    Django学习(实现登录功能)
    Django学习(实现注册功能)
    Django学习(环境配置)
    Android-Universal-Image-Loader异步加载图片框架学习
    Android自定义控件_View的绘制流程
    Android自定义控件_Canvas分析
    属性方法介绍——View(1)
    Android平滑移动——Scroller类研究
    记录一个前端二级导航栏的淡入淡出效果
  • 原文地址:https://www.cnblogs.com/mrhyher/p/5383864.html
Copyright © 2011-2022 走看看