《现代电子技术》2007年第6期摘录:鹿剑等:动态称重控制墨Q里g塑
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
鹿剑等:动态称重控制墨Q里g塑垫猩垦丛±过回调机制与客户端进行异步数据传输。用户界面模块则负责管理驱动通道和设备节点,设置系统运行参数,并显示服务器运行状态。图1基于MFC的进程外CoM服务器结构图3.1用户界面模块系统用户界面采用CJl.brary界面库实现。由CJli—brax·y界面库创建一个()utlook风格的应用程序界面框架,该框架自动生成了应用程序类、框架类、文档类、视图类以及相关的资源文件。用左边的FolderI。istview以树状结构负责管理服务器加载的驱动通道和设备节点,右边T()PI.istView用列表视图显示数据项的各个属性,Mid—dleI。衙View用列表视图显示服务器的运行状态。如图2所示。图2用尸界面模块为便于操作.可以使用WindowsAPI函数writeF’ri—vateProfileStruct和(}etPrivateProfileStlruet读写配置文件,在()PC服务器程序关闭时把数据项的属性以及硬件设置参数保存起来,以便程序再次运行时可自动调入配置文件完成初始设置。3.2()PC驱动标准接口模块()PC驱动程序,即()PCDA服务器,与客户程序进行交互的部分是对象。()PC:DA服务器由3种层次的对象组成,即服务器(Set”ver’)、组((}roup)和项(Item)。一个()PC服务器包括一个服务器对象,他是组对象的容器,对组对象进行管理,提供了客户创建和操作()PC组的功能,32客户所创建的每一个组都在服务器对象中获得运行空间,服务器对象随时跟踪并获取每个组的运行状态。组对象管理项对象,使得客户可以将所需要的数据组织起来,以同步或异步方式传送客户请求的数据。下面说明()PC对象与接口的实现和异步传输功能。3.2.1oPC对象与接口实现实现0PC对象与接口,首先应定义C)PC‘数据服务器的名称(ProgI[))和类标识(CI。SID)。类标识可用VC工具包的uuID(3EN或GUI【)GEN程序自动产生,这样能够确保生成的类标识是惟一的。然后,从()PC规范中定义的I()PCServer,I()PCAsyncI(),I()PCAsyncI()2,IOPC—Group等接口派生出新的接口类,实现其接口成员函数。接着由ILInknown类派生出CTPSe,。ver’,CTPGroup和CTPItern三个类来分别代表服务器对象、组对象和项对象,并声明相应的派生出的新接口类为友元类,然后重载IUnknown类中的接口查询函数和引用计数函数。如以下代码所示:classITP()PCAsyncl()2:publicI()PC;AsyncK)2(……};//由IOP(;AsyncI()2派生出接口类ITP()PCAsyncI()2classCTP(}roup:public1Llnknown,…//重载ILJnknown类中的接口查询函数和引用计数函数STDMETH()DIMPQueryInterface(REFIIDiid,I,PVOID”ppInterface);ST【)METHOI)IMP’(UI。0NG)AddRef(void);STDMETHOI)IMP’(UI。()NL;)Release(void);,//声明相应的接口类为该类的友元类frlendclassITP()PC;Servet’;friendclassITP()PC;AsyncI()2;…,;()PC项对象表示与数据源的连接,并没有自己的接口,不需要实现任何接口功能,具体实现时只需在cT—PItem类增加相应的功能函数。此外,为了提供实例化COM对象的标准方法,C()M服务器应该为他所支持的每一个COM类提供一个类工厂口]。()PC服务器为服务器对象实现类厂时,先从I(;lassF‘actory接口派生出TP(;lassFactor’y类,然后重载Createlnst:ance()成员函数,通过该函数创建CTPSeI’ver’服务器对象。最后还应在应用程序类的初始化函数中完成C()M库初始化、服务器的注册、类厂注册等功能。3.2.2多线程异步数据传输()PC【)A2.O规范所定义的I()PCAsyncI()2和出接口I()P(;DataCallback提供C)PC服务器向()PC客户主动通信,以实现异步数据传输,从而极大提高程序的效率。oPC的异步数据传输2种方法:异步读写方式和订阅方式。异步读写方式是指:客户端提出一次请求并立即返回,服务器开始进行一次数据采集,数据采集完成后通知客户端获取数据,之后该次操作结束。订阅方式是指:客
阅读此文(图):
点击此处在线翻阅