码迷,mamicode.com
首页 > Windows程序 > 详细

C# chart 关于实时更新传感器数据

时间:2016-05-05 22:36:25      阅读:812      评论:0      收藏:0      [点我收藏+]

标签:

     因为自己毕业需要做一个有关环境监测的项目,原理是通过无线采集环境信息,将信息实时保存到数据库,上位机是winform程序,程序需要实时的显示已经采集到的数据,并用曲线的方式表现出来,自己折腾了几天,也算是有一些小的收货,自己也是刚接触C#编程,给我的感觉非常的好。

用到的chart控件下载地址  链接: http://pan.baidu.com/s/1eSnYj3W 密码: xqhm 我用的是VS2010.

  分析我的目的要求:实时刷新获取数据库的数据,将数据实时的显示到chart表上。

  我的解决办法:1、处理数据库,搜索数据库内数据,并准备好,绑定数据库到表格,接着,定时刷新显示chart表格。从网上搜索的时候说可以通过将要显示的数据先存到数组或者araylist当中,我没这样,当新数据再出现的时候,报错说有了**数据,如果一直让往下存的话,感觉会越来越占内存,最终会卡死吧,所以就换了思路。

  先看一下我的chart类

        private void showChart_From_SQL(Chart myChart,string str_Sql,string AxisX,string title)
        {
            myChart.Series.Clear();
            myChart.Width = 520;                      //图表宽度  
            myChart.Height = 320;                     //图表高度  
            myChart.BackColor = Color.Azure;             //图表背景色  
            //myChart.Titles.Add("CO2浓度");                //图表标题
            //新建连接 
            myChart.DataBindTable(SqlHelper.getread(str_Sql), AxisX);             
            //注意数据绑定后,它的series是1而不是0  本来正常应该是1   博文后注
            myChart.Series[0].ChartType = SeriesChartType.Spline;
            //myChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "yyyy-MM-dd-HH:mm:ss";
            myChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "MM-dd/HH:mm";//格式化时间样式
            myChart.Series[0].IsValueShownAsLabel = false;             //是否显示数据      
            myChart.Series[0].IsVisibleInLegend = false;              //是否显示数据说明  
            myChart.Series[0].MarkerStyle = MarkerStyle.Circle;        //线条上的数据点标志类型  
            myChart.Series[0].MarkerSize = 8;                          //标志大小  

            myChart.ChartAreas[0].AxisX.LineColor = Color.Blue;            //X轴颜色  
            myChart.ChartAreas[0].AxisY.LineColor = Color.Blue;            //Y轴颜色
            myChart.ChartAreas[0].AxisX.LineWidth = 2;                     //X轴宽度
            myChart.ChartAreas[0].AxisY.LineWidth = 2;                      //Y轴宽度  
            myChart.ChartAreas[0].AxisY.Title = title;
        }

     在实际使用过程中我是通过每次清除掉series,再重新加载,所以本来是myChart.Series[1].ChartType……,我这样处理后就变成了myChart.Series[0]……

     到底是什么问题导致的,我每次刷新表格时,我需要调用一遍showChart_From_SQL(Chart myChart,string str_Sql,string AxisX,string title),而每次调用势必会产生一个新的series(假设为CO2曲线图),当再次画CO2曲线时,那么会再次新建绑定myChart.DataBindTable(SqlHelper.getread(str_Sql), AxisX);就会报错,因为俩个series(CO2)冲突了。其实我也是模模糊糊的,反正这样就是行了。下面是我关于这个chart的调用

             SqlStr = @"SELECT TOP 10 CO2,addTime  FROM [CO2] order by addTime desc";
             Time_New = Time_last;
             showChart_From_SQL(chart_CO2, SqlStr, "addTime","CO2浓度"); 

           自己的第一篇博文,马马虎虎吧,记录在此,多积累!加油

  

C# chart 关于实时更新传感器数据

标签:

原文地址:http://www.cnblogs.com/xc2444/p/5463354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!