USB转串口热插拔检测

       那么如何通过代码获取当前可用串口列表是通种注册表获取,操作比较复杂;微软为我们提供更简单的方式,通过SerialPort.GetPortNames()方法获取串口列表。使用时需要引用using System.IO.Ports;名字空间。代码如下:

        /// <summary>

        /// 构造函数

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

            GetSerialLstTbl();

        }

        /// <summary>

        /// 获取串口列表

        /// </summary>

        private void GetSerialLstTbl()

        {

            //string[] serialLst = SerialPort.GetPortNames();

            if (serialLst.Length > 0)

            {

                //

                comboBoxExUartNum.SelectedIndex = 0;

            }

        }

 

USB转串口热插拔检测

 

        实现上述的前提是必需先插上串口再启动软件,那么问题又来了,如果先启动软件再插上串口软件并不能检测出接入的串口。解决方法是捕获设备热插拔时public const int WM_DEVICE_CHANGE = 0x219;             //public const int DBT_DEVICE_REMOVE_COMPLETE = 0x8004; //protected override void WndProc(ref Message m)

        {

            switch (m.Msg)                                  //

                        GetSerialLstTbl();                  //

上述的实现方法还是比较粗略,因为只要是带USB接口的设备进行热插拔都会重新获取串口列。如果串口正在发送或者接收时进行热插拔,程序将抛出异常.此时可以将串口先关闭再重新获取串口列表.

 

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年7月18日
下一篇 2015年7月19日

相关推荐