串口自动检测

 //检测可用串口,并增加到comboBox_PortName
        private void CheckAndAddAvailableSerialPort()
        {
            bool flag = true;
            comboBox_PortName.Items.Clear();
            for (int i = 1; i < 20; i++)
            {
                try
                {
                    serialPort1.PortName = "COM" + i;
                    serialPort1.Open();
                    serialPort1.Close();
                    comboBox_PortName.Items.Add("COM" + i);    
                    if(flag)
                    {
                        flag = false;
                        comboBox_PortName.Text = serialPort1.PortName; 
                    }
                }
                catch 
                { }
               
            }
        }
//
        int availableSerialPortNumber;
        //检测可用串口数量,返回availableSerialPortNumber
        private int CheckAvailableSerialPortNumber()
        {
            availableSerialPortNumber=0;
            //comboBox_PortName.Items.Clear();
            for (int i = 1; i < 20; i++)
            {
                try
                {
                    serialPort1.PortName = "COM" + i;
                    serialPort1.Open();
                    serialPort1.Close();
                    availableSerialPortNumber++;
                }
                catch
                { }
            }
            return availableSerialPortNumber;
        }
<pre name="code" class="csharp">//
 

        //当串口数量变化时,
        static int previousAvailableSerialPortNumbe=0;
        private void timer1_Tick(object sender, EventArgs e)
        {        
            int currentAvailableSerialPortNumber = CheckAvailableSerialPortNumber();
            if (previousAvailableSerialPortNumbe != currentAvailableSerialPortNumber)
            {
                CheckAndAddAvailableSerialPort();
                previousAvailableSerialPortNumbe = currentAvailableSerialPortNumber;
            }
        }
<pre name="code" class="csharp">//
 

        //打开串口
        private void Btn_OpenSerialport_Click(object sender, EventArgs e)
        {
            try
            {
                if (serialPort1.IsOpen)
                {
                    timer1.Enabled = true;                         //打开timer1
                    serialPort1.Close();
                    Btn_OpenSerialport.Text = "打开串口";    
                }
                else
                {
                    timer1.Enabled = false;                         //<span style="font-family: Arial, Helvetica, sans-serif;">关闭timer1</span>
                    serialPort1.BaudRate = Convert.ToInt32(comboBox_BandRate.Text);
                    serialPort1.PortName = comboBox_PortName.Text;
                    serialPort1.Open();
                    Btn_OpenSerialport.Text = "关闭串口";
                }
            }
            catch { MessageBox.Show("串口打开失败!"); }

            //是否连接数据库
            if(checkBox_ConnectDataBase.Checked==true)
            {
                ConnectDataBase();
            }
        
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值