C#上位机控制STM32 LED灯开关

最近做上位机控制下位机,最终呈现的是转速与温度的一个显示面板。先从最简单的开始,上位机控制LED灯的亮灭。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20191115160822631.png)![这个是UI的设计界面]
namespace LED开与关
{
    public partial class Form1 : Form
    {
        

        public Form1()
        {
            InitializeComponent();
        }
    

        private void button1_Click(object sender, EventArgs e)
        {
           // try
           // {
                //首先判断串口是否开启
                if (serialPort1.IsOpen)
                {
                //串口处于开启状态,将发送区文本发送
                //以ASCII模式发送
                // serialPort1.Write("'1'");    //通过串口写入字符1
                byte[] Data = new byte[1];
                Data[0] = 1;//对应下位机的工作模式
                try
                {
                    serialPort1.Write(Data, 0, 1);
                    MessageBox.Show("LED亮");
                }
                catch
                {
                    MessageBox.Show("数据发送错误");
                }

            }
           // }
            //catch(Exception ex)
           // {
              //  serialPort1.Close();
                //捕获到异常,创建一个新的对象,之前的不可以再用
               // serialPort1 = new System.IO.Ports.SerialPort();
                //刷新COM选项
               // comboBox1.Items.Clear();
               // comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
                //响铃并显示异常给用户
               // System.Media.SystemSounds.Beep.Play();
               // button1.Text = "打开串口";
                //button1.BackColor = Color.ForestGreen;
               // MessageBox.Show("串口错误", "错误");
               // comboBox1.Enabled = true;
              //  comboBox2.Enabled = true;
           // }

        }


        private void button3_Click(object sender, EventArgs e)
        {

          //  try
           // {
                //首先判断串口是否开启
                if (serialPort1.IsOpen)
                {
                    //串口处于开启状态,将发送区文本发送
                    //以ASCII模式发送
                    //serialPort1.Write("'0'");    //通过串口写入字符1
                    byte[] Data = new byte[1];
                    Data[0] = 0;//不能通过串口直接写,要从缓存区读取
                    try
                    {
                        serialPort1.Write(Data, 0, 1);
                        MessageBox.Show("LED灭");
                    }
                    catch
                    {
                        MessageBox.Show("数据发送错误");
                    }
                }
          //  }
            //catch (Exception ex)
           // {
            //    serialPort1.Close();
            //    //捕获到异常,创建一个新的对象,之前的不可以再用
           //     serialPort1 = new System.IO.Ports.SerialPort();
                //刷新COM选项
           //     comboBox1.Items.Clear();
           //     comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
                //响铃并显示异常给用户
            //    System.Media.SystemSounds.Beep.Play();
            //    button1.Text = "打开串口";
            //    button1.BackColor = Color.ForestGreen;
            //    MessageBox.Show("串口错误", "错误");
            //    comboBox1.Enabled = true;
            //    comboBox2.Enabled = true;
           // }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                //将可能产生异常的等待吗放置在try快中
                //根据当前串口属性来判断是否打开
                if(serialPort1 .IsOpen )
                {
                    serialPort1.Close();//关闭串口
                    button2.Text = "打开串口";
                    comboBox1.Enabled = true;
                    comboBox2.Enabled = true;
                    
                }
                else
                {
                    //串口已经处于关闭状态,则设置好串口属性后打开
                    comboBox1.Enabled = false;
                    comboBox2.Enabled = false;
                    serialPort1.PortName = comboBox1.Text;
                    serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
                    serialPort1.DataBits = 8;
                    serialPort1.Parity = System.IO.Ports.Parity.None;
                    serialPort1.StopBits = System.IO.Ports.StopBits.One;
                    serialPort1.Open();//打开串口
                    button2.Text = "关闭串口";
                }
            }
            catch(Exception ex)
            {
                //捕获可能发生异常并进行处理

                //捕获到异常,创建一个新的对象,之前的不可以再用
                serialPort1 = new System.IO.Ports.SerialPort();
                //刷新COM口选项
                comboBox1.Items.Clear();
                comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
                //响铃并显示异常给用户
                System.Media.SystemSounds.Beep.Play();
                button1.Text = "打开串口";
                button1.BackColor = Color.ForestGreen;
                MessageBox.Show("串口错误", "错误");
                comboBox1.Enabled = true;
                comboBox2.Enabled = true;
            }
          
        }

       // private void button4_Click(object sender, EventArgs e)
        //{
        //    serialPort1.Close();
        //}

        private void Form1_Load(object sender, EventArgs e)
        {
            // serialPort1.PortName = "COM36";
            //serialPort1.BaudRate = 115200;
            //添加波特率列表
            string[] baud = { "9600","38400","57600", "115200" };
            comboBox2.Items.AddRange(baud);

            //设置默认选项值
            comboBox2.Text = "115200";

            //获取当前电脑可用串口并添加到选项列表中
            comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
        }
    }
}

板子用的是STM32F407

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页