数据模块.docx

上传人:b****5 文档编号:7382686 上传时间:2023-05-11 格式:DOCX 页数:19 大小:1.19MB
下载 相关 举报
数据模块.docx_第1页
第1页 / 共19页
数据模块.docx_第2页
第2页 / 共19页
数据模块.docx_第3页
第3页 / 共19页
数据模块.docx_第4页
第4页 / 共19页
数据模块.docx_第5页
第5页 / 共19页
数据模块.docx_第6页
第6页 / 共19页
数据模块.docx_第7页
第7页 / 共19页
数据模块.docx_第8页
第8页 / 共19页
数据模块.docx_第9页
第9页 / 共19页
数据模块.docx_第10页
第10页 / 共19页
数据模块.docx_第11页
第11页 / 共19页
数据模块.docx_第12页
第12页 / 共19页
数据模块.docx_第13页
第13页 / 共19页
数据模块.docx_第14页
第14页 / 共19页
数据模块.docx_第15页
第15页 / 共19页
数据模块.docx_第16页
第16页 / 共19页
数据模块.docx_第17页
第17页 / 共19页
数据模块.docx_第18页
第18页 / 共19页
数据模块.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据模块.docx

《数据模块.docx》由会员分享,可在线阅读,更多相关《数据模块.docx(19页珍藏版)》请在冰点文库上搜索。

数据模块.docx

数据模块

单次存盘.vi

 

 

该模块主要负责数据的存储功能。

输入量为一维数组、保存路径文件名称和是否存盘,详细程序流程如下:

当存盘的Booleanvariable量为False的时候,CaseStructure内的程序框图为空,此时,本程序不进行任何操作,如果为True的时候,本程序使用了WritetoSpreadsheetFile.vi(记录电子数据表.vi)程序组件。

 

组件的输入输出入下,这个单次存盘程序主要使用该程序的format.filepath.1Ddata.Appendtofile选项来完成数据存储。

 

 

I如果为0,则CASE结构为真,且存储WriteToSpreadsheetFile.vi模块appendtofile?

选择为假(默认为假),该程序会擦除文件已经存在的数据,如果路径上不存在目标文件,VI会忽略这个选项,直接创建一个新文件。

本程序设置的默认路径为E:

\we\1.txt。

 

写电子表格节点程序(WriteToSpreadsheetFile.vi)介绍:

该节点把一个二维或一维单精度浮点数据数组写到一个电子表格文件中。

如果文件是已经存在的,则既可以把数据追加到这个文件,也可以覆盖原有的数据;如果文件不存在,则创建新文件。

节点图标及其连线端口如上图示。

该节点要调用ArraytoSpreadsheetString节点把数据数组总的数值转换成电子表格字符串。

该节点在写数据之前把文件打开,数据写完之后自动关闭该文件。

●输出参数如下:

⏹format(%.3f)决定单精度浮点数到字符串的转换格式

⏹filepath(dialogifempty)文件路径输入。

可以直接在filepath中输入一个文件路径和文件名,如果文件是已经存在的,则打开这个文件,如果输入的文件不存在,则创建这个文件。

如果filepath的值为空或者是非法的路径,则调用filedialog,通过文件对话框来选择或输出文件。

⏹2D,1D输入二维或一维的写入数据

⏹appendtofile?

(newfile:

f)布尔输入。

如果设为True,且写入数据前该文件已经存在,则新的数据被追加到文件尾。

当然,对于一个新创建的文件来说,该输入为True或False含义是一样的;如果该输入的值为False(缺省值),则对于已经存在的文件,新的数据将会覆盖掉原有的数据,在使用时必须注意。

●输出参数如下:

⏹newfilepath(NotAPathif…)路径输出。

输出已写入数据的文件路径名。

如上所述,可以使用一个文件对话框来选择或输入要操作的文件路径。

但是如果此时选择对话框的Cancel键,则该输出将返回一个值。

通道选择.vi

该子程序主要执行在A,B,A&B三个通道进行选择,使用了CASE结构进行选择,实际程序如下:

数据读盘.vi

 

该程序中,wavein悬空,对外,只使用“读盘”和“读路径”与waveout三个接口。

内部程序如图所示:

 

程序中,wavein悬空,无输入数据,箭头2所指waveout为箭头1所指的局部变量。

在程序运行中,选择读盘,则Booleanvariable打开上面的CASE结构,里面的程序如图所示:

内部使用了

 

读电子表格文件(ReadFromSpreadsheetFile.vi):

从一个电子表格文件中读取一定数量的数据,并把这些数值字符串转换成单精度浮点数从一个二位数组中返回。

节点图标及其连接端口如上图所示。

值得注意的是,必须有保证这个电子表格文件的所有字符串全部由有效的数字字符组成。

此节点在读取数据前打开这个文件,操作完成后关闭该文件。

●输入参数如下:

⏹format(%.3f)确定字符串到浮点数的转换格式。

⏹Filepath(dialogifempty)输入文件路径及文件名。

如果其值为空或者为,则将通过文件对话框来选择文件,如果在对话框中选择“取消”键,则由error返回一个错误代码,错误代码为47。

⏹Numberofrows(all:

-1)确定该节点读取的最多行数。

如果该值小于0,则该节点将读取整个文件的数据。

注意,电子表格的一行是一个回车符(carriagereturn)、一个换行符(linefeed)、或一个文件结束符(EOF)来结束的。

⏹StartofreadOffset(chars...)确定读取数据的厨师位置。

单位是byte。

●输出参数如下:

⏹newfilepath(NotAPathif…)返回文件的路径。

如果操作有错误,则返回

⏹Allrows读取的所有的浮点数都通过这个二维数组返回。

⏹Firstrow返回读取数据的每一行。

如果想把数据的一行读入一个一维的数组中,则要使用这个输出端。

⏹Markafterread(chars.)返回当前文件指针的位置。

 

当所要读取的目的文件不是默认的文件时,使用路径后面的选取文件的按键,则上CASE结构为F,下CASE转为True。

 

改程序使用filedialog节点来实现。

在程序中使用的参数如下:

Prompt字符串输入,用来定义对话框的标题栏,通常在操作作用作为给用用户的提示信息。

在上图中,其值为“打开”。

Startpath路径的输入,定位文件对话框的初始显示路径。

如果这个输入的值为,则其初始位置为对话框最近一次使用的路径。

Selectmode参数是用来显之用户选择文件或目录的类型。

在这里,程序主要使用了参数0,该参数指定用户只能选择一个已经存在的文件,如果输入了一个不存在的文件名,对话框将弹出一个警告窗口,要求重新选择,直到选择了正确的文件路径或者按“取消”按钮取消本次文件选择为止。

Path返回以选择或已输入的文件路径或者目录。

如果因为某种原因使对话框不能返回正确的路径,则其值为

数据存盘.vi

 

该模块,是把程序中采集出来的一维数组进行存储。

分别放在程序流程的采样环节之后和读取环节之后,这样可以把采样出来的数据和在他处读取出来的数据直接保存下来。

VI的程序如下:

 

数据保存VI的设计思路与数据读取的设计思路相同,采用的方法也相同,使用的是函数面板上:

FileI/O中的前两个,即WritetoSpreadsheetfile.vi&readfromSpreadsheetfile.vi。

当Booleanvariable为真时,上下两个CASE结构分别为

其中函数使用方法与单次存盘和数据读取两个子程序相同,这里就不再赘述。

 

波形运算.vi

 

 

波形运算模块在显示前,可以对两个波形进行加、减与乘的运算。

面板和位置如图所示。

内部主要使用了CASE结构对波形运算进行选择。

直接对1D数组进行运算输出。

内部程序如下图:

 

 

程序中,进行运算的是1D数组,里面保存的是64位双精度数(A部分),经过打包后成为一个包含数组的簇(B),然后经过BuildArray命令组成一个包含三个数组的簇,输出到绘图程序WaveformGraph中。

 

时基控制.vi

 

事实上,这个模块在虚拟示波器中已经不在需要,因为在普通的情况下,是调节扫描的频度,来进行测量波形的波长等量。

但是在虚拟示波器中,前显示面板的波形显示框已经具备了这个功能。

在这个模块的功用,是直接控制每次进入显示波形的点数来控制扫描频率的。

 

 

注意单双通道的控制。

不同的通道是根据点数周期进行自动调配,在图上可以看到,是单通道的周期数目的3倍。

(“单/双通道”是变量,直接指向通道选择按钮)

触发控制.vi

 

 

子程序的控制面板

 

 

 

因为在信号源输出的两组波形进行了交错运算,所以在这里通过单双通道进行运算,把拟和在一个数组里面的两组波形从新分化出来。

此为第一个CASE框图程序的功能,当两个波形出来后,分别输出,同时有另外一组复制的信号进行通过对触发源的选择进入到第二个CASE结构中,进行选择(只在有两个信号源的时候才有效)。

被选择的信号通道进入CASE结构后,进入“内部判断”子VI,进行分析。

内部程序子程序如下:

子子程序“内部判断”

 

 

内部判断逻辑如图所示:

数组的元素进入该程序后,分为三路,最下面的一路来确定循环的次数,保证循环正好在数组元素结束时结束,不出现无效循环。

中间的一路,来给定该数组第一个元素的值。

最上面的一组直接进行判断。

首先判断设定的电压是否相等,且大于或者小于数组上一个数值,则触发内部CASE结构。

 

触发内部结构后,内部程序如图所示:

该数组中的某个元素(此元素和Level相等)和上一个元素相互比较大小,来确定波形是从下方还是从上方通过该设定触发值的。

该部分的逻辑由内部小CASE结构的判断来进行,不同的上触发和下触发是通过direction来选择的。

相应的内部判断是是大于或者小于。

 

当判断成功后,程序输出Index值,即该触发点在数组中的位置。

然后返回到上一个子程序。

接收到的Index值后,直接进入由触发方式选择的CASE判断结构,如图:

 

Index值直接进入InRangeandCoerce函数比较,比较公式为0≤Index<100000(限定一定值内防止系统负担过大)。

 

 

该程序块使用了AutoPowerSpectrum和Power&FrequencyEstimate两个模块联合运算出频率估计值,从而算出“点/周”值。

模拟输入模块

 

 

程序中波形处理,通道选择模块。

使用了LabVIEW最新的波形滤波模块。

可以根据不同波形的需要选择低通、高通、带通、带阻等不同的功能。

通道选择中,参照前面的通道选择程序,知:

00、01、11分别代表A通道、B通道,AB混合。

最后两数组进行混合后输出。

 

采样使用了16BIT,11025立体声采样。

可以根据不同的需要进行采样。

同时还可以进行LINEIN端口的采样处理。

具体操作步骤如技术文章所示(见NI公司技术资料库filename=“HowCanIRecordSoundinLabVIEWfromSourcesotherthantheMicrophone?

”)。

指利用计算机声音控制面板中的辅助功能,选择声道进行输入输出。

在模拟输入的情况下,该软件提供了几中输入方法:

正弦波、方波、三角波和白噪声等。

程序编制方法如下图所示:

开始暂停模块

该模块主要是控制整个程序的开始和暂停,三个按钮控制着整个程序的CASE结构的运行与否。

其软件流程图如下:

 

 

在这个程序流程中,主要使用了顺序结构,当该顺序结构全部程序完成后,程序才能继续运行,这样就实现了暂停循环的状态。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2