虚拟示波器设计步骤

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,