C# 串口查寻方法改进

文章介绍了一种改进的串口搜索方法,通过使用系统自带的SerialPort.GetPortNames()接口获取可用串口,而不是逐个尝试1-20个串口。这种方法提高了搜索效率,尤其是在串口数量超过20时。代码示例展示了如何将可用串口添加到ComboBox中,并处理可能的异常。
摘要由CSDN通过智能技术生成

串口改进:原来使用try尝试1-20个串口 搜寻比较慢,如果串口号大于20还搜不到。

改进:使用系统自带接口获取串口,然后通过try尝试哪个串口可用,然后添加到comboBox

        private void SearchAndAddSerialToComboBox(SerialPort MyPort, ComboBox MyBox)
        {                                                       
            //将可用端口号添加到ComboBox
            //             string[] MyString = new string[20];                         //最多容纳20个,太多会影响调试效率
            //             string Buffer;                                              //缓存
            //             MyBox.Items.Clear();                                        //清空ComboBox内容
            //             for (int i = 1; i < 20; i++)                                //循环
            //             {
            //                 try                                                     //核心原理是依靠try和catch完成遍历
            //                 {
            //                     Buffer = "COM" + i.ToString();
            //                     MyPort.PortName = Buffer;
            //                     MyPort.Open();                                      //如果失败,后面的代码不会执行
            //                     MyString[i - 1] = Buffer;
            //                     MyBox.Items.Add(Buffer);                            //打开成功,添加至下俩列表
            //                     MyPort.Close();                                     //关闭
            //                 }
            //                 catch
            //                 {
            // 
            //                 }
            //             }
            //             MyBox.Text = MyString[0];                                   //初始化


            MyBox.Items.Clear();
            string[] strport = System.IO.Ports.SerialPort.GetPortNames();
            if (strport == null)
            {
                //MessageBox.Show("本机没有串口!", "Error");
                return;
            }
            foreach (string s in System.IO.Ports.SerialPort.GetPortNames())
            {
                try
                {
                    MyPort.PortName = s;
                    MyPort.Open();                                      //如果失败,后面的代码不会执行
                    MyBox.Items.Add(s);                            //打开成功,添加至下俩列表
                    MyPort.Close();                                     //关闭
                }
                catch
                { }

            }

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值