定时创建文件储存数据
有几个问题还望小编能详细描述一下:
1、大量数据?
数据存储速率:KB/s、数据通道数、数据类型、时间戳精度
2、过一段时间?
是7x24小时存储吗?过期时间间隔多长?在时间维上是连续存储或是随机存储。
3、为什么用Text文件?
而不用二进制文件、tdms或数据库。
4、文件命名示例是什么?涉及那些元素:类型编码+编号+日期+时间+索引号.txt
5、做了那些文件存储测试?实现了那些?还有那些没有实现?
6、程序框图能否提供一下?LabVIEW和Windows版本号?
7、硬盘分区剩余容量需要监测吗?
9、多个存储文件如何按数据时间片段回放?
测试测量系统中数据存储与回放也是一个需要认真考虑的问题,多少有点麻烦。尤其对大数据、高速存储类应用。
1,大概每通道一秒钟要存放800kb左右的数据,类型都是字符串
2,一段时间指的是 一个小时,或者一分钟之类的,要是能实现,时间间隔都是可以调整的
3,二进制的lvm还有tdms都试过,但是,试验后读数据的时候,不太满意
4,名字:chan121 (chan1是通道名字,21是时间)
5,定时新建文件实现了,名字也是那个格式,但是,数据写入文件的时候出现差错,txt文本的数据是最后一秒的数据,之前的都被覆盖掉了
6,程序框图还真不太方便,我用的labview2012+xp
7,不用监视剩余的容量
8,数据回放不是很急,可以先放一下
数据采集确实很深奥,很多文件i/o啊 还有就是数据确实多,而且,速率快!
用创建文件、写入文本文件、关闭文件这三个函数,循环写入没问题。
5,定时新建文件实现了,名字也是那个格式,但是,数据写入文件的时候出现差错,txt文本的数据是最后一秒的数据,之前的都被覆盖掉了
6,程序框图还真不太方便,我用的labview2012+xp
txt数据覆盖是因为没有:先得到txt文件最后一个字符的位置(可有Get File Position 函数得到,然后写入的时候使用Get File Position 得到的Offset值,就可以将新数据追加到旧数据上面了。
用的就是这三个函数,而且,写入函数在while循环里,新的数据也能写进去,就是写进去是覆盖掉之前数据的,而不是在后面追加!创建函数的权限是,open or creat ,read|write,也都没问题啊
这我确实没太理解,txt文本的最后一个字符?但是,txt文件大小可以达到操作系统支持的最大文件大小,好几十gb的都有,怎么能做到呢?麻烦您再仔细说一下,我这也按您说得试试,3q
[open,write.....write,close]没问题,[open-write,open-write......open-write,close]有问题。
可以这样:{open,[(write......write),flush],close}
就像@fantek 说的一样,一直写就好了,等时间到了重新建立一个文本,再一直写。
对,我现在就是这个问题,不知道这个是labview哪的问题?
我框图中有个主while循环,那这个开关文件应该放在哪?要是放在while外面的话,就没法判断txt是否需要新建,要是放在while里面,就是这个open-write,open-write......open-write,close问题
既然不太方便提供程序框图截图,也就猜不道OPEN文件函数在程序中的那个地方多次调用了。请参考@sushu 说的获取和设置文件位置修改程序,在高级文件函数选板中有这样的函数。
一会我看看把那开关文件的部分的程序框图发上来吧
这个是程序框图截图,大概是这个思路,不知道怎么能实现,设计的思路是:初始化的时候,新建打开个文件,然后,写入数据,过了一分钟之后,再新建一个文件,关闭旧文件,然后往新文件写入数据
循环两侧的引用句柄(蓝线)和错误输出线用移位寄存器替换。
还是有问题,引用句柄和错误都换成移位寄存器,第一分钟的数据没问题,只要,分钟时间一变化之后,前面版显示的文件名就开始闪烁,举个例子:我19分开始跑,到20分之后,文件名就 19、20来回变化,然后,20分钟新建的txt文件里面之后两个数据,并不断变化,数据是替换写入的,不是在原数据后面追加写入的
条件结构"真"分支创建新文件后没有更新“文件名及路径“局部变量。
那应该怎么改呢?我刚才改了一下,还是不对啊
碰到了类似问题,着实比较难受
I:\ACS\vi\新建文件夹
你指的时间到了,是哪里创建的时间
用状态机的方式,一个case用来创建文件,一个case用来写,一个用来close。
什么时候想重新创建一个,执行一下创建的case就好了,