微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > 虚拟仪器 > 一个困扰很久的问题

一个困扰很久的问题

时间:12-13 整理:3721RD 点击:
写了个labview的程序,主要就就是通过can总线采集数据,然后存放到一个数组(几万行吧)里,再把这个数组存到一个excel表格里。
程序运行的初期一切良好,但是时间久了了labview这个软件就会死掉,或者说“not enough memory to complete the operation”,请问这个一般怎么解决阿?

是不是一次写太多数据了?
还是有啥资源没释放

恩,数据应该不多,数组也就几万行
不过把数组写到excel的数据里的时候用的是write to spreadsheet这个vi
但是每次调用完这个write to speadsheet后,我close了这个文件
然后我去打开刚刚写完的excel文件(程序仍在运行),
它说“这个文件目前在处于编辑状态,只能读”
是不是labview还在调用这个excel?可是我已经close file了阿?

是不是第二次打开太快了?
你要反复写的话不用close吧

哦,我每次写的时候都是新创建一个文件,然后把几万行数组一次性写进去
然后写完一个文件后一般都close了
然后再存几万行数据到一个数组,然后再创建.......
不知道是哪有问题,苦闷阿苦闷

也许不是文件问题
程序里内存使用有问题?
大数组能确保每次释放么

每次写完了把数组初始化为空再用

你是不是只是close worksheet?workbook也需要close掉才可以

一头labview,一头Excel,都是大的程序环境,一次还要由这头传到那头几万个数据.还要开一个大数组. 说实话,这不是好的编程习惯. 别与计算机较劲.这种用法是应该尽可能避免的.

恩?请问怎么才能close workbook?

so?
采用小数组传数据?多传几次?

恩,我现在用shift register来代替数组了,循环使用
然后每存满5000行,清空一次
现在出错的概率比之前小不少了,但是有时候还是会出现这个问题
而且经常出现在将5000行的数组写到excel里面这一步
但是我觉得这个数组已经挺小了,写到excel里面应该没问题啊
郁闷中

很可能用了build array之类的操作
建议长时间的数据采集及存储操作,先开辟内存再循环使用
做好把简化的代码传上来大家分析分析

调用write to speadsheet不需要close file,
其实它里面有close file 的节点
另外后面说到的程序里关闭workbook问题与这个无关
你存成的其实不是excel文件,而是以tab为间隔的文本文件
按道理几万行应该是没问题的,不超过65535 excel时可打开的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top