虚拟示波器设计步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
已经完成的《虚拟示波器》毕业设计之一步一步教你怎么做我将就我们的毕业设计(虚拟示波器)向大家介绍一下我们是怎么做的。有许多地方作的不太
好,请大家指点一下。
第一步:采样。
用数据采集卡将外界的模拟信号采集到计算机中来。
NI公司对其全部的DAQ产品提供了专门的驱动程序库,因此,在LabVIEW下应用NI公司的DAQ产品无
须专门考虑驱动程序的问题。其他数据采集卡,需要有针对它的驱动程序。
一般我们所买的数据采集卡,都带有驱动程序(.SYS,.DLL),可以在生产商的网站下载。如果没有驱动程序也不要紧,只要知道卡的寄存器在计算机中的地址、各位的意义等。我们可以
用LabVIEW的CIN来编驱动,也可以用DLL来写。DLL一般用VC来做(_inp,_outp等)。
前面所说的是在WIN9X下的,对于WINNT/2000就一定要驱动程序.SYS,或.VXD,这是因为WINNT/2000对系统的保护所引起的,即WINNT/2000不允许一般的应用程序和DLL访问硬件I/O,它
们是运行在Rin3级的。只有运行在Ring0级的.SYS和.VXD才可以访问硬件I/O。然后有DLL 来和.SYS
通信,DLL提供函数接口。在LabVIEW中调用DLL就可以了。
关于如何创建DLL和在LabVIEW中调用DLL,可以看一看
LabVIEW中的手册,
LabVIEW6.1/manuals/lvexcode.pdf,英文的。我翻译了一
点,大家可以看一看。
创建一个动态连接库
这一节用一个简单的共享库的例子来说明创建LabVIEW所
调用的外部代码的三个基本任务。
任务1:在LabVIEW中建立一个函数原形
任务2:编译这个.C文件
任务3:在外部集成开发环境(IDE)建立一个库工程
在例1中:调用在这节中创建的共享库,你将在这里调用
所创建的动态连接库。
任务1:在LabVIEW中建立一个函数原形
为你的共享库建立一个函数原形,你必须在LabVIEW中建
立函数原形,然后填充你的代码的所有细
节。当你允许LabVIEW来产生这个C语言源代码文件时,
你要确信代码的基本语法在你的共享库中
都是合法的。
执行下面几步来建立你的函数原形源文件myshared.c。
1.在LabVIEW中创建一个求数组平均值的VI,然后在框图
程序中选择
Functions»Advanced»Call Library
Function,把这个对象放到框图程序中。
2.在Call Library Function的图标上右键单击,在弹出
菜单中选择Configure将会出现
一个Call Library Function对话框,让Library Name or Path空着。
3.输入下面的详细说明
a.在Function Name域中输入avg_num
b.在Calling Conventions控制中选择C
4.定义返回值
a.在Parameter 控制中用一个有更多描叙意义的名字来改变缺省名字和返回类型,如
error。
b.在Type控制中选择Numeric。
c.在Data Type中选择Signed 32-bit Integer。
5.定义参数
a.单击Add Parameter After按钮。
b.在Parameter控制中用一个准确的名称,a,代替缺省的名称,arg1。
c.在Type控制中选择Array。
d.在Data Type控制中选择4-byte Singl
e.
e.在Array Format控制中选择Array Data Pointer。
说明:数组和字符串选项章节描述了数组和字符串变量的设置在Call Library Function图标中。
6.定义数组的大小(size)
a.单击Add Parameter After按钮
b.在Parameter控制中用名字size代替缺省的名称,arg2。c.在Type控制中选择Numeric。
d.在Data Type控制中选择Signed 32-bit Integer. e.在Pass控制中选择Value.
7.定义平均值
a.单击Add Parameter After按钮
b.在Parameter控制中用一个准确的名称,avg,代替缺省的名称,arg3.
c.在Type控制中选择Numeric。
d.在Data Type控制中选择4-byte Singl
e.
e.在Pass控制中选择Pointer to Value.
8. 检查Function Prototype指示,显示了返回值和三个参数的正确顺序如下:
long avg_num(float *a, long size, float *avg)
说明:你在Function Prototype指示中看见的语法技术上是正确的。然而下一节中LabVIEW产生
的.C文件是非常准确的,因为第一个参数出现如float
a[]。
9.单击OK来保存你的设置,并且关闭对话框。
10.观察Call Library Function图标,它根据你的设置来更新。
11.右键单击Call Library Function图标,在快捷菜单中选择Create .c file,以myshared.c.
来保存文件。
说明:在这个例子中,你使用.C源文件,当你使用C++库时,把文件扩展名改为.CPP。
任务2:完成.c文件
Call Library Function在myshared.c中产生如下的源代码概略符号:
/* Call Library Source File */
#include "extcode.h"
long avg_num(float a[], long size, float *avg); long avg_num(float a[], long size, float *avg) {
/* Insert Code Here */
}
用下面的函数代码代替/* Insert Code Here */的地方,保证所放置的代码在一个括号内:
int i;
float sum=0;
if(a != NULL)
{
for(i=0;i < size; i++)
sum = sum + a;
}
else
return (1);
*avg = sum / size;
return (0);
在这一部分将建立一个工程和编译myshared.c和创建myshared.dll.
动态连接库的导出关键词
你必须明确你的动态连接库的每个导出函数使LabVIEW.成为可行的。例如,你必须用_declspec
(dllexport)关键词来导出平均数函数。声明动态连接库的导出关键词时,你要去掉对模块定义文
件的要求,这一点将在模块定义文件部分里描述。
1.打开文件myshared.c,将关键词_declspec(dllexport)插入avg_num代码之前。函数
也有一个声明语句,你也必须把关键词插入到声明语句之前。下面的摘录显示了用关键词
_declspec(dllexport)替换了两处的myshared.c
_declspec(dllexport) long avg_num(float *a,long size,