背景:近期由于项目需要,需要操作短信猫,当短信猫插入电脑后,会根据当前PC状况,映射COM口,这里需动态获取短信猫映射的COM端口号。

编程语言C#:

具体代码如下

         public enum HardwareEnum
         {
             Win32_PnPEntity // 所有设备
         }

         /// <summary>
         /// 获取相应COM口号
         /// </summary>
         private static string getComInfo(HardwareEnum hardType, string propkey)
         {
             List<string> deviceslist = new List<string>();
             StringBuilder comsb = new StringBuilder();

             try
             {
                 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select *from " + hardType))
                 {
                     var hardInfos = searcher.Get();
                     foreach (var hardInfo in hardInfos)
                     {

                  Object deviceprop=hardInfo.Properties[propkey].Value;
                  if (deviceprop!=null&&deviceprop.ToString().Contains("COM"))  //避免出现空设备值异常
                         {
                             deviceslist.Add(hardInfo.Properties[propkey].Value.ToString());
                         }
                     }
                     searcher.Dispose();
                 }
                 string[] devicestemps = deviceslist.ToArray();

                 foreach (string device in devicestemps)
                 {
                     if (device.Contains("AT")) //这里短信猫需操作AT口
                     {
                         int index = device.IndexOf("(");
                         ); //得到形如"3)"形式
                         , devicetemp.Length - ); //直接得到相应COM端口号
                         comsb.Append(comnum + "*");  //用“*”号隔开,当出现多个的时候
                     }
                 }

                 string comsbstring=comsb.ToString();
                 , comsbstring.Length - ); //移除最后一个“*”号

             }
             catch
             {
                 return null;
             }
             finally
             {
                 deviceslist = null;
             }

         }

         /// <summary>
         /// 获取COM端口号
         /// </summary>
         public static string getComNum()
         {
             string comnums = getComInfo(HardwareEnum.Win32_PnPEntity, "name");

             return comnums; //返回多个COM号的组成,可在这里进行解析,也可在调用时进行解析,这里不做过多赘述
         }

注:1.通过该种方式可以获取实际你所需要操作的COM端口号。

  2.这里通过“*”对COM端口号进行拼接,可以通过解析返回值,判断当前时候连接了多个短信猫,以便做下一步操作。

by ShawnChen 2017.6.26 晚

获取串口映射的COM端口号的更多相关文章

  1. C# 获取 串口 设备名称 与 串口号 ManagementObjectSearcher类

    1.效果图: 2.代码 class Program { static void Main(string[] args) { GetComList(); } private static void Ge ...

  2. Request.Url.Port 获取不到正确的端口号

    今天遇到一个很奇怪的事情,用request.url.port来获取一个请求的端口,返回是80 ,很纳闷啊我的请求上面是http://www.XX.com:8088 啊,怎么会是80啊,太不可思议了! ...

  3. jfinal获取当前访问路径和端口号

    public void generateSingleLicense() throws Exception { System.out.println(getRequest().getRequestURL ...

  4. Websocket-Sharp获取客户端IP地址和端口号

    //OnOpen事件 protected override void OnOpen() { string IPAddress = base.Sessions.Sessions.First().Cont ...

  5. Apache 日志管理,获取客户端端口号

    日志管理分类 日志文件是用户管理和监控 Apache 安全的非常好的第一手资料,它清晰地记录了客户端访问 Apache 服务器资源的每一条记录,以及在访问中出现的错误信息,可以这样说,Apache 可 ...

  6. C# 获取随机可用端口号

    TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号.对于这65536个端口号有以下的使用规定: (1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来 ...

  7. js中如何获取页面的Url,域名和端口号

    有时候通过获取上个页面的Url来做一个跳转,获取域名防止非正常访问 获取上一个页面的一个URL,这个URL一般做一个页面的跳转 window.location.href <script>w ...

  8. JavaScript获取当前站点的域名和端口号

    获取域名(第一种方法): document.hostname 获取域名(第二种方法): document.domin 获取端口号: location.port 获取主机+端口号: location.h ...

  9. python网络编程,通过服务名称和会话类型(tcp,udp)获取端口号,简单的异常处理

    作为一个php程序员,同时有对网络方面感兴趣,php就比较蛋疼了,所以就抽了些时间看python 之前学python基础因为工作原因,断断续续的看了个基础,差不多是可以写代码了 最近在看<pyt ...

随机推荐

  1. C++输入输出cin与cout

    输入对象 istream:cin(标准输入) 输出对象 ostream: cout(标准输出), cerr(标准错误),clog(输出程序运行时的一般性信息)

  2. 浏览器怎么解析一个hmtl文档

    注意 link里面的css文件是并行请求下载的 script里面的js文件是同步请求下载的 html页面中的语句都是从上往下执行的 浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到 def ...

  3. Hive安装和部署

    在root的用户下搭建的 构建hive之前必须要先搭建好hadoop才可以. hive定义了一种类似SQL查询语言--HQL 类似SQL ,但是不完全相同 Hive是一个数据仓库,它部署在Hadoop ...

  4. http 500错误怎么解决方法

    出现500错误的原因是很多的,一般来说,如果程序出错,那么在浏览器内会返回给用户一个友好的错误提示,统一称之为服务器500错误. 解决的方法就是您必须在http中能够正确的获得错误信息,方法为:请打开 ...

  5. JavaScript Function.arguments 属性详解

    语法 [functionObject.]arguments arguments属性是正在执行的函数的内置属性,返回该函数的arguments对象.arguments对象包含了调用该函数时所传入的实际参 ...

  6. jsbin本地部署

    jsbin 本地运行 1.首先安装node.js,下载地址http://nodejs.org/ 安装完成后,使用node.js安装jsbin,如下:进入node环境,执行下面语句: $ npm ins ...

  7. asp.net core 开发的https证书服务-agilelabs.net

    创建证书-生成CSR(Certificate Sign Request): 填写证书基本信息 接下来我们就可以看到创建的证书签名请求信息(CSR): 为我们刚才创建的CSR签名: 签名的意思是说通过证 ...

  8. QT中槽的使用

    一.建立槽和按钮之间的连接 connect(信号发送者,发送的信号,信号接收者,信号接收者的槽函数) 1.例子 connect(ui->pushButton,SIGNAL(clicked(boo ...

  9. Java线程面试题

     1:什么是线程?    线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线 ...

  10. js经典闭包

    setTimeout函数之循环和闭包 前言 之前对于setTimeout的一个经典问题的理解总是感到很迷惑,现在好像清晰一点了,所以把我的理解写下来,我对js的理解也不深入,如果有错误,请务必指出.以 ...