《现代电子技术》2007年第8期摘录:柯艳明:基于LabWindow
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
柯艳明:基于LabWindows/Cy!塑虐拟函塑垡呈篮竺墨塑边土1200E“。这是一种性能优良低价位适合PC及兼容机的数据采集卡,他能够完成信号采集(A/D),数字信号的模拟输出(D/A)及定时/计数功能。他具有8个模拟量输入通道,2个模拟量输出通道,24个数字量I,。0接H和3个16位定时/计数器。I。ab—PC一1200输出的模拟信号通过滤波器进行滤波平滑、放大后即可使用。其中滤波器的选择视输出信号频率范围而定,放大倍数根据实际需要分不同的档位。图1仪器硬件原理框图倍号输出2.2仪器面板设计设计的仪器而板如图2所示。该过程主要包括创建控件和修改控件属性两部分。图2仪器面板图(1)创建控件用户界面共有8个控件:1个Panel控件,1个Graph控件,1个Ring控件,1个Button控件和4个Numeric控件。创建过程如下:启动CVI,在工程窗口中选择菜单File—New—UserInterFace(*.uir),打开空白用户界而编辑窗口。在其中单击右键,依次选择所需控件并置于面板的合适位置。(2)设置控件属性将鼠标置于各控件图标上并双击左键.在弹出的编辑窗口中设置好各控件的属性。主要属性设置包括控件名称(C()NSTANTNAME)、回调函数(CallbackFunction)名、控件标题等。2.3软件设计在完成用户界而设计后,CVl可自动生成许多代码以及缺省消息处理函数,只要在这些函数中添加所需的代码即可完成程序的设计。具体操作如下:在以上完成的界面窗口菜单中选Code—Generate—AllCode,点击()K键即进入代码编辑窗口。整个程序部分源代码如下,其中加粗部分代码是需要程序开发者自己添加的。#include<userint.h>#include~analysis.h>#include<ansic.h>intshape=0;doubleamp10,phase=0,numpcye=100,cycnum=1;28voidDisplayChart(void);intmain(intargc.char*argv[]){if(InitCVIRTE(O,argv,O)一-_0)return(一1);if((panelHandle—I。oadPanel(O,”xhy.uir”,PANEI。))<0)return一10DisplayPanel(panelHandle);SetCtrlVal(paneiHandle,PANELWFM,shape);/*设置波形初始值*/SetCtrIVal(panelHandle,PANELAMP,amp);/*设置幅度初始值*/SetCtrlVal(panelHandle.PANEL—PHASE,phase);/*设置相位初始值*/SetCtrlVal(panelHandle,PANEL—NUMPCYC,numpeyc);/*设置点数/周期初始值*/SetCtrlVal(panelHandle,PANEL—CYCNUM,cycnum);/*设置周期初始值*/RunUserInterlace();return0;}intCVICAI。LBACKGetWFM(intpanel,intcontrol,intevent,void*callbackData,inteventDatal,inteventData2){switch(event){caseEVENTCOMMIT:GetCtrlVai(panelHandle,PANEL—WFM,&shape);/*获得用户设置的波形*/Displaychart();break;}return0;}intCVlCAI。I。BACKGetAMP(intpanel,intcontrol,intevent,void*callbackData.inteventDatal,inteventData2){switch(event){caseEVENT—COMMIT:GetCtrlVal(paneiHandle,PANEL—AMP,&);/*获得用户设置的波形幅度值*/DispIayChart();break:}return0;}intCVICAI,I。BACKGetPHASE(intpanel.intcontrol,inte—yent,void*callbackData,jnteventDatal,inteventData2){switch(event){caseEVENTCOMMIT:GetCtrIVal(paneiHandle,PANEL—PHASE,&phase);/’*获得用户设置的相位值*/DisplayChart();break:}return0;}intCVICALLBACKGetNUMPCYC(intpanel,intcontr01.inte—vent,void*callbackData,inteventDatal,inteventData2){switch(event){caseEVENT—COMMI’F:GetCtrlVal(panelPanelHandle,PANEl。一NUMPCYC,&numpcyc);/*获得用户设置的波形点数/周期值*/DisplayChart();break;}retIJrn0:}intCVICAI,I。BACKGetCYCNUM(intpanel。intcontr01.inte—
阅读此文(图):
点击此处在线翻阅