c# 实现自动搜索串口列表并刷新

由于在工作的过程中,经常用到串口测试工具,在测试连接硬件设备的时候一般使用usb转232来连接,但是在不同的电脑甚至不同的usb口都可能映射出不同的串口号来,在这个时候就要在设备管理器中查看当前的串口号是多少,这个操作比较繁琐,如下:

先要确定我的串口号是com4,如果这个选择不正确,后面的串口连接是不可能正常的。

那么能不能省掉这一步呢,经查找资料,可以在c#中体现,当然具体其他环境是否可以,没有查找,咱们只关注我们要关心的。下面描述下实现的过程:

1. 

定义串口,我这里使用的一个我自己封装的类,可以使用getportnames来获得列表

public string[] ports;                             //串口列表

        public YFCSerial()
        {
            //初始化SerialPort对象
            comm.NewLine = "\r\n";
            comm.RtsEnable = true;      //根据实际情况吧。
            received_count = 0;
            send_count = 0;
            ports = SerialPort.GetPortNames(); //获得串口的列表
            Array.Sort(ports);//排序
            HexFlag = true;
        }   

然后在窗口初始化的时候,将列表传递过来并显示

public form1()

YFCSerial serial = new YFCSerial();

serial_name.Items.AddRange(serial.ports);

if(serial.ports.Length>0)

          serial_name.SelectedIndex = 0;

这里 还需要注意一点,以上虽然实现了可以自动查找的功能,但是有一个要求,必须是先插入usb转232,然后启动程序才行,但是我平时为了省时间,经常是先启动程序在插入usb转232,这样就不能实现了,这样需要再增加一个消息,当combox控件的dropdown的时候触发。

private void combo_comm_DropDown(object sender, EventArgs e)
        {
            InitPorts();
        }

 public void InitPorts()
        {
            //初始化串口
            combo_comm.Items.Clear();
            string[] comm_names = SerialPort.GetPortNames();
            combo_comm.Items.AddRange(comm_names);
            if (comm_names.Length > 0)
                combo_comm.SelectedIndex = 0;
            comboBox4.Items.AddRange(comm_names);
            if (comm_names.Length > 0)
                comboBox4.SelectedIndex = 0;
        }

 

这样就可以完美实现了,即使在使用的过程中不小心拔出usb,再插到别的usb接口上,程序也能扫描到,完全省去从设备管理器中查找串口的步骤。

这里仅作记录和部分人参考使用,如果有其他更好的办法,欢迎留言讨论。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

six2me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值