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

因为自己毕业需要做一个有关环境监测的项目,原理是通过无线采集环境信息,将信息实时保存到数据库,上位机是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浓度"); 

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

  

时间: 2024-08-25 17:32:39

C# chart 关于实时更新传感器数据的相关文章

WebSocket 实时更新mysql数据到页面

使用websocket的初衷是,要实时更新mysql中的报警信息到web页面显示 没怎么碰过web,代码写的是真烂,不过也算是功能实现了,放在这里也是鞭策自己,web也要多下些功夫 准备 引入依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> <

将学校摆在桌面上-实时更新校内数据的Android桌面部件

项目地址: https://github.com/hwding/AeolosXDUWidget 求支持(╭ ̄3 ̄)╭? 本小白所在的学校虽身为某某电子科技大学, 但是网络基础设施实在是...用于查询的各个网页根本用的不是一套系统...也就是说, 如果你想很方便地获取你的实验成绩\体育打卡次数\校内一卡通的流水情况和余额以及水电费的使用情况\图书馆借还信息等等, 你得登录很多不同的网页使用多套不同的系统输入不同的账户与密码...(不想吐槽某些系统居然还外包给另外一个某某电子科大...) 所以能不能

Jquery无刷新实时更新表格数据

html代码: <table width="600" align="center">  <tr class="head">  <th>First</th><th>Last</th>  </tr>  <?php  $sql=mysql_query("select * from add_delete_record");  $i=1;  whi

基于server broker 的数据实时更新

Service Broker介绍:SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持.这使开发人员可以轻松地创建使用数据库引擎组件在完全不同的数据库之间进行通信的复杂应用程序.开发人员可以使用 Service Broker 轻松生成可靠的分布式应用程序.使用 Service Broker 的应用程序开发人员无需编写复杂的内部通信和消息,即可跨多个数据库分发数据工作负荷.因为 Service Broker 会处理会话上下文中的通信

使用php+swoole对client数据实时更新(二) (转)

上一篇提到了swoole的基本使用,现在通过几行基本的语句来实现比较复杂的逻辑操作: 先说一下业务场景.我们目前的大多数应用都是以服务端+接口+客户端的方式去协调工作的,这样的好处在于不论是处在何种终端的情况下,都可以完美的和服务端兼容.这样就轻松实现了MVC各个部分的真正解耦.但是提高程序的友好性还是有很多路要走,其中一个大家都会遇到的就是数据实时更新的问题.比如一个用户在手机上做了添加操作,这时候其他的终端也应该及时显示数据的变化情况.这个对于手机来说还算好办,因为现在的各种推送服务完全可以

Qt之模型/视图(实时更新数据)

上两节简单介绍了Qt中对于模型/视图的编程,大部分助手里说的很清楚了,现在就开始实战部分吧! 在实际应用中,视图展示的数据往往并非一成不变的,那么如何实时更新成了一个很重要的问题!功能:(1)添加委托(进度条)(2)显示文件名称.大小.进度.速度.剩余时间.状态等.(3)可进行添加.更新.删除.清空等操作.(4)实时更新数据先看一个效果图:委托(进度条):ProgressBarDelegate::ProgressBarDelegate(QObject *parent): QItemDelegat

如何根据传感器实时采集的数据计算出前进后退侧移下蹲等动作,并且能够估算出速度,算法

遇到一个好问题.现在做穿戴式设备的多.我没去写过相应的程序.但原理是了解一些的. 问: 1.在大腿上绑定一个9轴姿态传感器 2.根据传感器实时采集的数据计算出前进后退侧移下蹲等动作,并且能够估算出速度,可以有误差 答: 有这么多轴的吗?只知道三轴的,相反方向是运动方向.多轴的相反方向.组合计算相位角度和力度,就是方向和速度了. 要是想考虑人体角度 和动作,就要考虑人体解剖学了 在论坛中回答总是有些不方便. 接着写点,其实三轴就够,但更复杂的人体动作判断就不一定了. 把人腿的形状,通过膝的角度来判

实时更新数据,无需刷新:a,如何使用Turbolinks clearCache(), b Action Cable

https://gorails.com/episodes/how-to-use-turbolinks-clearCache?autoplay=1 用途: 更方便的实时从服务器更新局部网页,在这页更新了一条记录的显示方式, 再打开的之前网页的相同位置或相同的功能模块显示也会同步更新. 把Turbolinks.clearCache(), Turbolinks.clearCache(); 比如放在你写的xx.js.erb的第一行. 如果不加这句话,turbolinks只会reload之前的网页中的数据

form 内置字段,数据实时更新,下拉框

用来验证 和 显示 生成html代码 类创建字段 使用参数 Field函数 required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=None, 初始值 help_text='', 帮助信息(在标签旁边显示) error_messages=None, 错误信息 {'required': '不能为空', 'invalid': '格式错误'} show_hidden_initial=False, 是否