Write to Spreadsheet File.vi 和 Read from Spreadsheet File.vi 用来读写时,有精度错误



主要软件: LabVIEW Development Systems>>Full Development System
主要软件版本: 6.1
主要软件修正版本:
次要软件: N/A

问题: 我使用Get Date/Time in Seconds 函数来得到时间用来标注我的数据,我使用Write to Spreadsheet File.vi 来储存我的数据。我注意到我用以标注时间的数据没有正常工作,当我打开保存数据的Excel时,我的时间数据都是同一个数值,或者是一个不正确的值。为什么会出现这种情况?

解答:

Write to Spreadsheet File.vi  截断了你的数据,因为两端的数据类型不同。Write to Spreadsheet File.vi  有两种输入数据类型,1D 数组输入和2D数组输入。这两种输入都是32-bit 单精度浮点数组。所以,当使用这个函数的时候,你的数据首先自动转换(或者强制转换)成32-bit 单精度浮点数组,然后在被写入文件,并且以普通的电子表格可以识别的格式保存, 比如Microsoft Excel。LabVIEW对数据进行强制转换时会进行特别的标注,在输入数据VI的端口会显示一个灰色的小点。

你也可能遇到其他的相似情况,比如当写入很大或者很小的数据时,其不能表示成同样的精度(比如单精度,双精度或者更大的数据类型)。 Get Date/Time in Seconds 函数返回一个64-bit 双精度浮点值(具体的来说,是1903年 12月31日晚上6点到当前时间经历的秒数),这个值将超过 Write to Spreadsheet File.vi可以接受的范围。当 Write to Spreadsheet File.vi需要将一个很大的数值(比如Get Date/Time in Seconds产生的数值)写入电子表格时,将对该数值进行四舍五入或者做较小的改动,导致引入一些误差。这个函数会常常使所有的输入项都为同一个值。

在使用Read From Spreadsheet File.vi读取时间信息时也会遇到相同的问题。 Read From Spreadsheet File.vi的输出为单精度。可以改变Write to Spreadsheet File.vi和Read From Spreadsheet File.vi的输入和输出数据的表示法,使其符合你的数据类型。可以通过以下方法来转换为双精度数据类型:

  1. 放置Write to Spreadsheet File.vi 在你的程序框图中.
  2. 双击Write to Spreadsheet File.vi 图标,打开该函数.
  3. 观察程序框图.
  4. 右键单击 "1D data"的接线端, 选择表示法. 选择DBL (双精度).
  5. 右键单击 "2D data"的接线端, 选择表示法. 选择DBL (双精度).

  6. 保存该VI 为另一个名字 (比如 Write to Spreadsheet File (DBL).vi)
  7. 对Read From Spreadsheet File.vi重复1-6步, 改变以下接线端"all rows," "first row," and "type(empty)" 从单精度到双精度.

  当使用双精度的输入和输出时,时间数据就可以正常储存和下载了。



相关链接:

附件:





报告日期: 11/12/1999
最近更新: 10/28/2008
文档编号: 1RBDAG5P