你好,游客 登录 注册 搜索
背景:
阅读新闻

获取串口映射的COM端口号

[日期:2018-01-12] 来源:cnblogs.com/AlanLee  作者:AlanLee [字体: ]

背景:近期由于项目需要,需要操作短信猫,当短信猫插入电脑后,会根据当前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("(");
                        string devicetemp = device.Substring(index + 4); //得到形如"3)"形式
                        string comnum = devicetemp.Substring(0, devicetemp.Length - 1); //直接得到相应COM端口号
                        comsb.Append(comnum + "*");  //用“*”号隔开,当出现多个的时候
                    }
                }

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

            }
            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端口号进行拼接,可以通过解析返回值,判断当前时候连接了多个短信猫,以便做下一步操作。

本文永久更新链接地址http://www.chineselinuxuniversity.net/Linux/2018-01/150260.htm

linux
相关资讯       COM端口号 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款