发表于:2010/10/28 21:02:21
#0楼
在有曲线存在的地方,多会有数据采集问题的出现,通常采用的办法是:
1.每一个采集周将采集的数据保存到硬盘中,历史曲线从数据库调出一定时间段内数据,这样,可基本实时显示数据,但这种做法缺点也很明显,对硬盘访问量太大,造成速度较慢,而且,从数据库调出数据时间也较慢。优点是不会丢失数据,每一个采集周期都保存。
2。将采集的数据放在内存表中,在vb.net中可以用集合来做,c#可以用datatable来做为内存数据库,最后将这些数据保存到硬盘中,这种做法好处是速度可以提升,但是最后保存的时候会使计算机很卡,解决的办法是另外开辟一个线程,在这个线程里来完成这个耗时的任务。
3。将采集的数据分别放在两个内存表,一个内存表用于实时显示曲线,每次开始时将其清空,每个采集周期放入内存表,这样实时曲线显示的数据来自内存,速度相当快,第二个内存表用来暂存历史数据,当超过一定量(比如50个)时,将其写入数据库,同时将其清空,这样,历史数据保存和实时曲线显示各用各的,互不影响,也不会使计算机速度降低。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=127877&Name=wizzly
1.每一个采集周将采集的数据保存到硬盘中,历史曲线从数据库调出一定时间段内数据,这样,可基本实时显示数据,但这种做法缺点也很明显,对硬盘访问量太大,造成速度较慢,而且,从数据库调出数据时间也较慢。优点是不会丢失数据,每一个采集周期都保存。
2。将采集的数据放在内存表中,在vb.net中可以用集合来做,c#可以用datatable来做为内存数据库,最后将这些数据保存到硬盘中,这种做法好处是速度可以提升,但是最后保存的时候会使计算机很卡,解决的办法是另外开辟一个线程,在这个线程里来完成这个耗时的任务。
3。将采集的数据分别放在两个内存表,一个内存表用于实时显示曲线,每次开始时将其清空,每个采集周期放入内存表,这样实时曲线显示的数据来自内存,速度相当快,第二个内存表用来暂存历史数据,当超过一定量(比如50个)时,将其写入数据库,同时将其清空,这样,历史数据保存和实时曲线显示各用各的,互不影响,也不会使计算机速度降低。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=127877&Name=wizzly