⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 单片机串口通信程序
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace wsdp
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        int a1, a2, a3, a4;
        int b1, b2, b3, b4;


        string SendData="00000000";  //处于定时器模式使用

        private void Form1_Load(object sender, EventArgs e)
        {

        }


        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (btnOpen.Text.Equals("连接设备"))
            {

                try
                {
                    serialPort1.PortName = txtPortName.Text;
                    serialPort1.BaudRate = int.Parse(txtBaudRate.Text);

                    serialPort1.Open();

                    btnOpen.Text = "关闭设备";

                    JS();

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else
            {
                try
                {
                    serialPort1.Close();
                    btnOpen.Text = "连接设备";

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            System.IO.Ports.SerialPort serialPort = (System.IO.Ports.SerialPort)sender;

            int len = serialPort.BytesToRead;
            byte[] bs = new byte[len];
            serialPort.Read(bs, 0, len);
            if (len == 0)
            {
                return;
            }
            else
            {
                //接收处理
                string r = Encoding.ASCII.GetString(bs, 0, len);
            
                //接收数据处理                
                //RevDataChars.Invoke(new EventHandler(DoUpdate), r);  //线程处理

            }
        }

        //private void DoUpdate(object s, EventArgs e)
        //{
        //    string x = s.ToString();
        //    if (x[0] == '+' && x.Length>5)
        //    {           

       //    }
        //}

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                serialPort1.Close();
            }
            catch (Exception /*ex*/)
            {
            }
        }


        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Close();
            }

            catch (Exception/* ex*/)
            {
            }
            this.Close();
        }






        [DllImport("kernel32.dll")]
        public static extern bool Beep(int freq, int duration);


        private void buttonDoor_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            int i = btn.TabIndex - 100;

            if (btn.FlatStyle == FlatStyle.Standard)
            {

                btn.ForeColor = Color.Red;
                btn.FlatStyle = FlatStyle.Popup;

                switch (i)
                {
                    case 1: { a1 = 1; break; }
                    case 2: { a2 = 1; break; }
                    case 3: { a3 = 1; break; }
                    case 4: { a4 = 1; break; }
                    case 5: { b1 = 1; break; }
                    case 6: { b2 = 1; break; }
                    case 7: { b3 = 1; break; }
                    case 8: { b4 = 1; break; }



                }
            }
            else
            {
                //关闭窗户
                btn.ForeColor = Color.Blue;
                btn.FlatStyle = FlatStyle.Standard;
                switch (i)
                {
                    case 1: { a1 = 0; break; }
                    case 2: { a2 = 0; break; }
                    case 3: { a3 = 0; break; }
                    case 4: { a4 = 0; break; }
                    case 5: { b1 = 0; break; }
                    case 6: { b2 = 0; break; }
                    case 7: { b3 = 0; break; }
                    case 8: { b4 = 0; break; }


                }
            }





            JS();





        }


        private void JS()
        {
            string A = a4.ToString() + a3.ToString() + a2.ToString() + a1.ToString();
            string B = b4.ToString() + b3.ToString() + b2.ToString() + b1.ToString();


            int TAB = Convert.ToInt32(B + A, 2);  //二进制字符串 转  十六进制
            string data = Convert.ToString(TAB, 16);

            byte[] buf = HexCon.StringToByte(data);

            serialPort1.Write(buf, 0, buf.Length);

        }




        private void Form1_SizeChanged(object sender, EventArgs e)
        {
           
        }

       
        private void button15_Click_1(object sender, EventArgs e)
        {
            button2.ForeColor = Color.Blue;
            button2.FlatStyle = FlatStyle.Standard;
            button3.ForeColor = Color.Blue;
            button3.FlatStyle = FlatStyle.Standard;
            button4.ForeColor = Color.Blue;
            button4.FlatStyle = FlatStyle.Standard;
            button5.ForeColor = Color.Blue;
            button5.FlatStyle = FlatStyle.Standard;
            button6.ForeColor = Color.Blue;
            button6.FlatStyle = FlatStyle.Standard;
            button7.ForeColor = Color.Blue;
            button7.FlatStyle = FlatStyle.Standard;
            button8.ForeColor = Color.Blue;
            button8.FlatStyle = FlatStyle.Standard;
            button9.ForeColor = Color.Blue;
            button9.FlatStyle = FlatStyle.Standard;
        }

        private void btnRest_Click(object sender, EventArgs e)
        {
            button2.ForeColor = Color.Blue;
            button2.FlatStyle = FlatStyle.Standard;
            button3.ForeColor = Color.Blue;
            button3.FlatStyle = FlatStyle.Standard;
            button4.ForeColor = Color.Blue;
            button4.FlatStyle = FlatStyle.Standard;
            button5.ForeColor = Color.Blue;
            button5.FlatStyle = FlatStyle.Standard;
            button6.ForeColor = Color.Blue;
            button6.FlatStyle = FlatStyle.Standard;
            button7.ForeColor = Color.Blue;
            button7.FlatStyle = FlatStyle.Standard;
            button8.ForeColor = Color.Blue;
            button8.FlatStyle = FlatStyle.Standard;
            button9.ForeColor = Color.Blue;
            button9.FlatStyle = FlatStyle.Standard;


            a1 = a2 = a3 = a4 = 0;
            b1 = b2 = b3 = b4 = 0;
            JS();

        }

        private void btnLSD_Click(object sender, EventArgs e)
        {

            N = 0;  //初始
            MODE = 0;
            timer1.Enabled = true;

            btnLSD.Enabled = false;
            button10.Enabled = false;
            button11.Enabled = false;

            int SPEED = trackBar1.Value * 100 + trackBar2.Value;
            txtTimerSpeed.Text = "周期:" + SPEED.ToString() + "ms";
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            int SPEED = trackBar1.Value * 100 + trackBar2.Value;
            txtTimerSpeed.Text = "周期:"+SPEED.ToString()+"ms";
            timer1.Interval = SPEED;
           
        }

        private int N;
        private int MODE; //模式
        Random rn = new Random(0);
        private void timer1_Tick(object sender, EventArgs e)
        {
            switch (MODE)
            {
                case 0:
                    {
                        //流水灯
                        int s_data = 1100000000;

                        s_data += (int)Math.Pow(10, N);
                        N++;

                        a1 = int.Parse(s_data.ToString()[2].ToString());
                        a2 = int.Parse(s_data.ToString()[3].ToString());
                        a3 = int.Parse(s_data.ToString()[4].ToString());
                        a4 = int.Parse(s_data.ToString()[5].ToString());

                        b1 = int.Parse(s_data.ToString()[6].ToString());
                        b2 = int.Parse(s_data.ToString()[7].ToString());
                        b3 = int.Parse(s_data.ToString()[8].ToString());
                        b4 = int.Parse(s_data.ToString()[9].ToString());
                        break;
                    }
                case 1:
                    {
                        //小星星眨眼睛
                        a1 = NOT(a1);
                        a2 = NOT(a2);
                        a3 = NOT(a3);
                        a4 = NOT(a4);
                        b1 = NOT(b1);
                        b2 = NOT(b2);
                        b3 = NOT(b3);
                        b4 = NOT(b4);

                        break;
                    }
                case 2:
                    {
                        //随机
                        
                        switch (rn.Next(8))
                        {
                            case 0: a1 = NOT(a1); break;
                            case 1: a2 = NOT(a2); break;
                            case 2: a3 = NOT(a3); break;
                            case 3: a4 = NOT(a4); break;
                            case 4: b1 = NOT(b1); break;
                            case 5: b2 = NOT(b2); break;
                            case 6: b3 = NOT(b3); break;
                            case 7: b4 = NOT(b4); break;

                        }
                        
                        break;

                    }
            }
           

            if (N > 7)
                N = 0;
 
            
            if (!serialPort1.IsOpen)
            {
                timer1.Enabled = false;
            }
            else
            {
                JS();
            }

         

        }

        private int NOT(int i)
        {
            if (i == 1) return 0;
            else
                return 1;
        }
        private void button10_Click(object sender, EventArgs e)
        {
            //小星星眨眼睛
            MODE = 1;
            N = 0;
            timer1.Enabled = true;

            btnLSD.Enabled = false;
            button10.Enabled = false;
            button11.Enabled = false;
            int SPEED = trackBar1.Value * 100 + trackBar2.Value;
            txtTimerSpeed.Text = "周期:" + SPEED.ToString() + "ms";
        }

        private void btnSTOP_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;

            btnLSD.Enabled = true;
            button10.Enabled = true;
            button11.Enabled = true;
        }

        private void button11_Click(object sender, EventArgs e)
        {
            MODE = 2;
            N = 0;
            timer1.Enabled = true;

            btnLSD.Enabled = false;
            button10.Enabled = false;
            button11.Enabled = false;

            int SPEED = trackBar1.Value * 100 + trackBar2.Value;
            txtTimerSpeed.Text = "周期:" + SPEED.ToString() + "ms";
        }





    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -