C# chart 關於即時更新感應器資料

來源:互聯網
上載者:User

標籤:

     因為自己畢業需要做一個有關環境監測的項目,原理是通過無線採集環境資訊,將資訊即時儲存到資料庫,上位機是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 關於即時更新感應器資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.