在楼宇自动化系统的系统集成中应用OPC(OLE for process control)技术可以很方便的实现分布式计算平台的过程,有利于软件互连,从而形成一个开放性系统。 Microsoft提出的ATL是一个基于C++平台的框架,主要用于M icrosoft的组件对象模型(COM)的软件开发。典型的OPC客户机/服务器关系如图所示。
使用ATL创建COM服务器,编写相应对象完成如下任务:服务器接受客户机的请求,从服务器的相应数据库提取数据,传送给客户机。以客户机提出请求需要查询建筑物的温度状况为例,说明程序设计过程:
第1步:新建项目。在Projects选择中ATL COM AppW izard,然后建立文件名(chengxu)。“Location”编辑框中指定工程的存放位置,然后单击ok按钮。
第2步:创建一个进程内服务器(Server DLL)。选择的类型是动态链接库“Dynamic Link Library——DLL”选项,单击“Finish”按钮。向导将自动产生相应的文件。然后出现“New Project Information”窗口告诉你向导将要创建一些什么文件。确认后单击OK按钮。
第3步:创建新的ATL对象。确定在VC的IDE环境中见到“Workspace View”。选中后单击右键并从弹出菜单中选择“New A TL Ob ject”。选择(Simp le Object),在“Short Name”文本编辑框中输入“First_ATL”。单击“A ttributes”标签。其中有几组单选按钮选项和几个复选框。第一组单选按钮是线程模型“Threading M odel”,取缺省值“Apartm ent M odel”。第二组单选按钮是接口“Interface”,单击“Dual”,也就是双接口。最后,第三组单选按钮是聚合“Aggregation”,因为不想涉及接口的聚合,所以在此选择“No”。
第4步:将添加方法。选中“IFirst_ATL”后单击右键并选择“Add M ethod”。看到“Add M ethod to Interface”对话框。在下一个方法名编辑框“Method Name”中输入方法名,后一个“Parameters”编辑框输入使用的参数。方法名;shuju1参数则输入[in] int Num1,long*Returnval采用一个输入参数判断用户需要的查询服务,其中Num1将对应服务器相应数据,Returnval为一个指针,进行查询后的数据传递工作。添加相应的实现代码。
第5步:数据库衔接。在C lassview中加入MFC类,类名shu ju lian jie。在 Bass class:中选择 CdaoRecordset并且衔接数据库。见图1。
第6步:加入处理数据对象方法。添加相应的实现代码。
第7步:进行服务器测试。
用VC++测试这个COM服务器。
创建一个新的W in32控制台应用程序。选择“Win32 Console App lication”并取名为“Test_ ATL”。单击OK按钮并接受对话框中的缺省设置。单击“Finish”按钮,然后再按OK按钮。这样就创建好了一个新的工程。
向工程中添加一个文件。从弹出的窗口中选择“C++Source File”并为它取名为“Test_ATL.cpp”。按下OK按钮。这样工程中就有了一个.cpp文件。
在这个文件中添加测试COM服务器的代码:
服务器端运行后进行测试。测试程序将Num1=1。服务器得到请求,返回数据,并得到输出“temperature is 23C”。