C#用serialPort和chart控件实现简单波形绘制

先看最终的效果图:

主要实现功能是将串口发送过来的数据按波形显示

注:本例是以串口调试助手和虚拟串口VSPD软件模拟串口发送数据的,详细说明见下文

说明:
serialPort的ReadByte()方法用于从System.IO.Ports.SerialPort输入缓冲区中同步读取一个字节。

chart控件的spline为曲线图,以光滑的曲线连接各点。


几个代码块说明:

(1)

  private void SearchAndAddSerialToCombobox(SerialPort Myport, ComboBox Mybox)
        {
            string Buffer;
            Mybox.Items.Clear();
            for (int i = 1; i < 20; i++)
            {
                try
                {
                    Buffer = "COM" + i.ToString();
                    Myport.PortName = Buffer;
                    Myport.Open();
                    Mybox.Items.Add(Buffer);
                    Myport.Close();
                }
                catch
                { }
            }
        }
这段代码功能是寻找可用的串口并添加到comboBox下拉选项中。原理是逐个测试串口是否可用,一般来说电脑1-20就足够了,如果超过20个,可修改。

(2)

 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            byte[] data_receive = new byte[3];
            data_receive[0] = (byte)serialPort1.ReadByte();
            data_receive[1] = (byte)serialPort1.ReadByte();
            data_receive[2] = (byte)serialPort1.ReadByte();
            textBox1.AppendText(data_receive[0].ToString()+" ");
            textBox1.AppendText(data_receive[1].ToString());
            textBox1.AppendText(data_receive[2].ToString()+"\r\n");
            series.Points.AddY(data_receive[0]);
            /*  int data_receive = serialPort1.ReadByte();
              textBox1.AppendText(data_receive.ToString()+" ");
              series.Points.AddY(data_receive);*/

        }

这段代码是将串口数据显示在chart表格中,这里的代码需要根据自己实际传送的数据加以修改,不难,textbox控件就可以显示,若用源码资源(文章末尾)中带的串口调试助手当做发送则不用修改。

我所用的串口调试助手每次发送过来的单字节都会自动在末尾加换行“\r\n”,所以我用读三次显示第一个方式记录数据,串口调试助手发送时记得勾选hex发送,每次发送一个字节。

源码下载:http://download.csdn.net/detail/u012342996/9513760

(注:该资源中有串口调试助手,但无VSPD,VSPD自行百度下载即可)




serialPort的ReadByte()方法用于从System.IO.Ports.SerialPort输入缓冲区中同步读取一个字节。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页