1、做数据采集,需要显示信号文本,信号曲线,保存文本等功能,基本的框架应该是怎么样的。是不是一定要有数据库。
通过数据也可以, 网络SOCKET 也行, 只要能够通信,不丢数据包的都可以
2、数据库的写入与文件的写入有什么区别,是不是也要多硬盘频繁的写
数据库在大批量数据导入有优势文件保存个配置什么的都行
3、在ui更新比较耗时导致不能实时显示的情况下,是不是可以从数据库来读取数据进行文本显示和曲线显示。
可以的
通过数据也可以, 网络SOCKET 也行, 只要能够通信,不丢数据包的都可以
2、数据库的写入与文件的写入有什么区别,是不是也要多硬盘频繁的写
数据库在大批量数据导入有优势文件保存个配置什么的都行
3、在ui更新比较耗时导致不能实时显示的情况下,是不是可以从数据库来读取数据进行文本显示和曲线显示。
可以的
首先要明确数据采集的目的.
数据采集如果是为了最终的查询与统计,当然必须有数据库,否则从文件直接筛选数据会很困难.
如果单纯的采集出来,将数据给第三方(比如通过互联网传xml),由第三方入库,你就不需要数据库.
2、数据库的写入与文件的写入有什么区别,是不是也要多硬盘频繁的写
同1,看你数据库放在哪.如果放在本地,当然最终还是以文件形式存储.如果是在其他地方,可能就只需要通信.
3、在ui更新比较耗时导致不能实时显示的情况下,是不是可以从数据库来读取数据进行文本显示和曲线显示。
数据量很大的时候,只显示个当前数据就够了,有任何必要把所有数据都实时显示?
1、框架没有固定的形式,要看你的需求来定,要不要数据库取决于你将来是否需要进行历史数据的查询和具体的查询方式。
2、两者使用的组件不同,数据库的读写是通过ADO.NET,而文本文件是通过文件系统读写。使用数据库可不用管磁盘IO这方面的问题,但文本文件的话,就要你自己来处理了,频不频繁就看数据量的大小和你的程序了。
3、你首先应该要解决的是UI更新比较耗时这个问题,如果只是画一条曲线和显示一些文本,应该不会非常耗时的。至于要从哪里读数据,等你的框架先确定下来再说。
1、框架没有固定的形式,要看你的需求来定,要不要数据库取决于你将来是否需要进行历史数据的查询和具体的查询方式。
2、两者使用的组件不同,数据库的读写是通过ADO.NET,而文本文件是通过文件系统读写。使用数据库可不用管磁盘IO这方面的问题,但文本文件的话,就要你自己来处理了,频不频繁就看数据量的大小和你的程序了。
3、你首先应该要解决的是UI更新比较耗时这个问题,如果只是画一条曲线和显示一些文本,应该不会非常耗时的。至于要从哪里读数据,等你的框架先确定下来再说。的确是的,我现在没有查询需求,现在的方案是30s存一次文件,但是ui显示可能要显示多条曲线,ui耗时搞了几天了。所以昨天发帖时其实我有点想换方案,存数据库,然后读取数据库更新ui
当然数据量大的时候,或者比较复杂,或者数据本来就是存放在datatable里了,也会用datagridview来显示
1、框架没有固定的形式,要看你的需求来定,要不要数据库取决于你将来是否需要进行历史数据的查询和具体的查询方式。
2、两者使用的组件不同,数据库的读写是通过ADO.NET,而文本文件是通过文件系统读写。使用数据库可不用管磁盘IO这方面的问题,但文本文件的话,就要你自己来处理了,频不频繁就看数据量的大小和你的程序了。
3、你首先应该要解决的是UI更新比较耗时这个问题,如果只是画一条曲线和显示一些文本,应该不会非常耗时的。至于要从哪里读数据,等你的框架先确定下来再说。我是不是可以在数据处理线程吧处理好的数据放入队列,然后再在画曲线的线程取队列数据。这样会不会好一点
不要在数据处理线程去更新UI啊
线程里面,要做的工作,就是把收集来的数据,放到你的缓冲队列中。
然后在主线程(界面线程),用一个timer(设置的时间以不影响UI操作为基础的最小值),每隔一段时间,就去读取缓冲队列,如果缓冲队列不为空,就把里面的数据取出来做展示(曲线,图表什么的)。。
这样做,即使你数据收集的速度大于UI更新的速度,也是可以接受的,但是如果数据收集速度和UI更新速度相差太大,导致缓冲队列把PC的内存占满而溢出,那你就要想其他办法了
不要在数据处理线程去更新UI啊
线程里面,要做的工作,就是把收集来的数据,放到你的缓冲队列中。
然后在主线程(界面线程),用一个timer(设置的时间以不影响UI操作为基础的最小值),每隔一段时间,就去读取缓冲队列,如果缓冲队列不为空,就把里面的数据取出来做展示(曲线,图表什么的)。。
这样做,即使你数据收集的速度大于UI更新的速度,也是可以接受的,但是如果数据收集速度和UI更新速度相差太大,导致缓冲队列把PC的内存占满而溢出,那你就要想其他办法了现在是在主线程用定时器在更新曲线,但是会阻塞主线程的数据接受,但是我开新线程来更新曲线,看上去貌似可以了,但是偶尔程序会自动退出。还在找原因
不要在数据处理线程去更新UI啊
线程里面,要做的工作,就是把收集来的数据,放到你的缓冲队列中。
然后在主线程(界面线程),用一个timer(设置的时间以不影响UI操作为基础的最小值),每隔一段时间,就去读取缓冲队列,如果缓冲队列不为空,就把里面的数据取出来做展示(曲线,图表什么的)。。
这样做,即使你数据收集的速度大于UI更新的速度,也是可以接受的,但是如果数据收集速度和UI更新速度相差太大,导致缓冲队列把PC的内存占满而溢出,那你就要想其他办法了我下午做了一些测试,数据每2ms上传22字节。在仅接受并存储数据的情况下,我17分钟接受到了1100W字节左右的数据,没有数据丢失。我开一个线程来计算每个字节中的某个特定的值,采取的是队列形式。队列是没有增大,但是貌似阻塞了主线程一样的,14分钟接受了800W字节左右的数据,实际应该接受920W字节的数据。这是怎么回事,难道数据处理线程对主线程有影响。
1、框架没有固定的形式,要看你的需求来定,要不要数据库取决于你将来是否需要进行历史数据的查询和具体的查询方式。
2、两者使用的组件不同,数据库的读写是通过ADO.NET,而文本文件是通过文件系统读写。使用数据库可不用管磁盘IO这方面的问题,但文本文件的话,就要你自己来处理了,频不频繁就看数据量的大小和你的程序了。
3、你首先应该要解决的是UI更新比较耗时这个问题,如果只是画一条曲线和显示一些文本,应该不会非常耗时的。至于要从哪里读数据,等你的框架先确定下来再说。我是不是可以在数据处理线程吧处理好的数据放入队列,然后再在画曲线的线程取队列数据。这样会不会好一点可以的