2007-09-14
图1 程序原理图
2、编程
以下将以逐步推进(step by step)的方式,说明如何在微软的Visual c++6.0下,运用DAQBench的ActiveX控件来完成数据采集的应用。
2.1 程序框架的建立
使用Visual C++的MFC AppWizard来建立一个基于对话框的程序框架。
通过File>>New菜单命令建立一个新的项目,其会打开New的对话框。在Projects页面中,选择[MFC AppWizard(exe)]项目类型,在Project name中输入项目名称:MZR 点0K。
在Step 1对话框选择[Dialog based]选项, 点Finish>>点0K。
这样,应用程序向导会构建一个新的项目和程序的框架,并自动在对话框编辑器中打开程序对话框。
2.2 加载DAQBench控件
把需要的ActiveX控件添加到控件工具栏(Control Toolbar)的步骤如下:
(1) 选择Project>> Add To Project >>Components And Controls?项目,然后,在接着出现的对话框中,使用鼠标双击Registered ActiveX Controls目录条目。这样就会打开一系列计算机上已经安装和注册的ActiveX控件清单。选择并插入需要的ActiveX控件到您的项目和控件工具栏中。
(2) 选择绘图ActiveX控件(文件名)DAQBench DChart Control—(ADLINK),单击Insert按钮,在随后的对话框中使用鼠标点选OK,接受缺省的类名和文件名。
(3) 选择数据采集ActiveX控件(文件名)NuDAQ PCI—9112 Control—(ADLINK),单击Insert按钮,单击确定按钮,单击OK按钮,接受缺省的类名和文件名。
(4) 添加完毕,返回Components And Controls Gallery对话框,单击Close按钮。
这样,就在对话框编辑器的控件工具栏中,加进了绘图控件DAQBench DChart Control和数据采集控件NuDAQ PCI—9112 Control,可以方便地将控件加入到对话框中。
2.3 程序设计
将控件添加到控件工具栏之后,就可以在设计应用程序的用户界面时使用控件了。开发者可以使用对话框编辑器将控件放置在对话框上。具体操作步骤如下:
删除窗体上带TODO消息的静态文本控件,并删除确定按钮。
单击Controls工具条底部的DChart按钮,并通过鼠标点击把它放在对话框中,ActiveX控件可以象标准Windows控件一样插入对话框,并可调整位置与大小。
选择Controls工具条底部的PCI—9112按钮,把它放在对话框中适当的位置,右键点击对话框中的PCI—9112控件,在打开的菜单中选择属性(Properties),就会出现一个带有各种不同属性字段的属性页对话框。通过属性页对话框,你可以对这个特定的控件进行设置,具体数值见表1。
表1 控件NuDAQ PCI-9112 Control属性设置
在用户使用控件编写程序之前,要先为该控件设定一个变量名称。下面为作图控件和采样控件设定相应变量:通过快捷键Ctrl+W,打开MFC Class Wizard对话框,在Member Variables标签中将Class name设置为CMZRDlg,通过Add Variables?按钮给其中的控件标识号添加变量,变量的定义见表2。
表2 对话框中相应控件变量的
定义PCI—9112控件的事件处理函数,通过快捷键Ctrl+W,在MFC Class Wizard窗口中,按下Message Maps 标签并在Object Ids字段中选IDC_PCI9112CTRLI控件,在Messages字段中选AiHalfReady,单击Add Function按钮,添加数据采集控件的AiHalfReady消息响应函数,接受缺省的函数名,单击Edit Code按钮以定位到该函数,在其中加入下列代码:
void
CMZRDlg::OnAiHalfReadyPci9112ctrl1(VARIANT FAR*ScaledData,VARIANT FAR*BinaryCodes)
{
//TODO:Add your control notification handler code here
m_Chart.PlotChart(ScaledData);// 将ScaledData中的采样数据传递给作图控件。
}
在初始化函数中启动数据采集函数:
定位到对话框初始化函数void CMzRDlg::OnInitDialog(),在其结尾return TRUE;语句之前加入下列语句
BOOL CMZRDlg::OnInitDialog()
{
CDialog::OnInitDialog();
/TODO :Add extra initialization here VARIANT Filename;
m_Pci9112.StartContAI(Filename);//激活连续
return TRUE; //return TRUE unless you set the focus to a control
}
2.4 程序测试
通过按Ctrl_F5键直接在Developer Studio中运行程序,运行结果如图2所示。
图2 运行结果
开发环境:本文假设您已经安装了Visual C++6.0和DAQBench和PCIS—OCX。
DAQBench和PCIS—OCX这两个软件可从凌华公司的网站(http://www.adlinktech.com/download area/software.htm)下载。
3、结束语
DAQBench提供了6O余种ActiveX控件,可以帮助您快速地完成量测及自动化控制的应用系统。说的更简单一点,您可以把DAQBench想像成一套积木,里面的每一块积木都有特定的形状。您只要选择适当的积木, 便可以拼出各式各样您想要的东西。用DAQBench来开发程序也是这样,您只要选择适当的控制元件,将它们拼凑在一起,便可以完成您的应用系统开发。由于ActiveX控件技术具有代码的可移植性和复用性,具有开发成本低,执行效率佳,程序弹性大,开放性架构易于扩充等优点,DAQBench拥有越来越多的用户群。
如果使用传统的API或DLL编程来完成上述功能,至少需要几百行代码。对于所有用户,DAOBench都能使人机界面的开发变得更轻松也更有效率。通过直观的图形界面,使用户很容易用他们自己的HMI来完成更多的工作。非编程人员或只拥有很少编程背景的人员,都能用很少的工作来创建相当有效的系统。使用户可以专注于解决测量和控制问题,而无需受困于编程过程。
为用户的操作构建一种有效的人机界面(HMI)纯粹是一种个人行为,因为每一种安装都不一样,都具有不同的要求、目标及需求。因此为您的操作创建一种合适的人机界面,意味着需先彻底了解您的过程及其周边系统……然后再从能对它们进行监控及调整的角度来创建对这些过程的反应。选择何种方式来创建或加强您的HMI,在很大程度上取决于您个人的偏好及能力,永远都不会有“唯一”的方式。HMI最终将向零编程方向发展。
评论0