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输入缓冲区中同步读取一个字节。

时间: 2024-10-04 07:19:14

C#用serialPort和chart控件实现简单波形绘制的相关文章

C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性

原文有备份,如有错误和需要改进的地方,请不吝指正会继续修改的 8个月没写博客了- -,一来是有不想继续干开发的想法,二来是赖的写,三来还是不想总结.所以为了继续坚持自己的开发和总结的信念,总结一下C# chart控件的一些基本属性,由于属性太多了,一时半会儿写不完,以后继续补充,这里总结重要的常用的属性 为避免耽误不喜欢这种曲线图效果的亲们的时间,先看一下小DEMO效果图: 先简单说一下,从图中可以看到一个chart可以绘制多个ChartArea,每个ChartArea都可以绘制多条Series

WinForm Chart控件使用记录(由于制作饼装,柱状,折线图)

由于公司的winform项目需要用到Chart图表,抽空研究了一下,特地发上来给大家做个参考,就目前而言用到的属性说明都做了注释: 主要用到Chart控件图表区域的属性有五个属性 Annotations 批注集合(我没怎么用到,但是配置的话会在图标区域出现一些可以备注的东西吧) ChartAreas 图表区属性:主要设置图标数据的背景,比如3D或者隐藏还是显示横纵轴交叉线,分块颜色显示等 Lengends 图表图例集合 主要设置图表边说明的一些东西,这次项目没什么用到,但是觉得这个基本没啥用,有

C# chart控件绘制曲线

在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图.柱状图什么的了. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.C

使用Chart控件进行实时监控

Chart作为微软提供绘制图表的控件,在刚开始使用时非常的迷茫,因为功能强大,涉及到的知识多, 一开始难以接收过来,但后天经过查找资料,耐心学习,终于还是有了一定的收获. Chart相当于一个大的图纸,可以包含很多小的图纸ChartArea,一个ChartArea可以包含很多的Series, Series即Point,画在ChartArea上的数据. 主要的思想就是添加Points的同时改变X轴的显示范围,以此来达到动态显示的目的. 代码解析: Chart的相关设置 因为Chart控件是直接托入

解决 ASP.NET Chart 控件出错 为 ChartImg.axd 执行子请求时出错

    今天在做一个关于MVC的MSChart时,本以为很简单的一个东西,后面把数据什么的都绑定好后,满以为OK了,一运行就报错“ ASP.NET Chart 控件出错 为 ChartImg.axd 执行子请求时出错 ”,纠结~~后面网上搜了一下这方面的解决方案,然后结合自己的,最后做了一个小的总结: 一.在vs2008中,你需要按照如下的步骤进行配置: 1.<pages controlRenderingCompatibilityVersion="3.5" enableEvent

c# 通过.net自带的chart控件绘制饼图pie chart

c# 通过.net自带的chart控件绘制饼图pie chart 需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 具体的实现步骤: >>前台界面的设置: 1.设置chart1的属性Legends中默认的Legend1的Enable为false: 2.设置Series的ChartType为Pie 3.设置Series显示的文字内容(此处比较关键) 至此,前台的设置完成. >>下面填写后台代码: List<string&g

Winform Chart控件绘制阴影区域

先来看看效果 公司电力项目需要绘制这种工业图表,之前同事用Series绘制的 有点麻烦 需要计算起始点位置,后来我发现Chart控件本来就提供了这种阴影属性,简单方便 直接上代码 private void InitChart() { ChartArea chartArea2 = new ChartArea(); chartArea2.AxisX.Minimum = 10; chartArea2.AxisX.Maximum = 100; chartArea2.AxisX.Interval = 10

Chart控件使用初步

学习了Chart控件的初步使用方法,生成柱形图和饼图.    <asp:Chart ID="Chart1" runat="server" Width="553px" Height="403px">             <Series>                 <asp:Series LegendText="得票数" Name="Series1" 

Winform的Chart控件使用笔记

这里记录在使用Winform的Chart控件过程中发现的一些技巧点. 1. 撤销所有放大动作 chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(1); —— 撤销一次放大动作 chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(0); —— 撤销所有放大动作 Winform的Chart控件使用笔记