COM组件与组态王驱动_第1页
COM组件与组态王驱动_第2页
COM组件与组态王驱动_第3页
COM组件与组态王驱动_第4页
COM组件与组态王驱动_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

COM组件技术与组态王驱动驱动部1COM组件技术与组态王驱动COM组件技术简介组态王驱动原理组态王驱动接口函数开发包介绍实际工程演示驱动部2一、COM组件技术简介COM原理COM接口COM实现驱动部3客户程序DLLCOM类对象COM环境1。请求COM对象注册表2。查询注册表得到DLL路径3。创建实例4。返回COM对象指针COM原理驱动部4COM接口IUnknown主要功能:生存期控制和接口查询IUnknown的定义〔IDL〕: interfaceIUnkown { virtualHRESULTQueryInterface( constIID&,void**ppv)=0; virtualULONGAddRef()=0;//相当构造函数 virtualULONGRelease()=0;//相当析构函数 }驱动部5COM实现下面描述的是一个根本的COM对象的Unknown接口实现,不提供其他接口,该对象是一个无意义的对象。驱动部6COM实现接口查询一个COM对象〔构件〕可以实现多个接口使用QueryInterface查询某个构件是否支持某个特定的接口QueryInterface的使用voidfoo(Iunknown*pI){ //Defineapointerfortheinterface. IX*pIX=NULL; //AskforinterfaceIX HRESULThr=pI->QueryInterface(IID_IX,(void**)&pIX); //Checkreturnvalue. If(SUCCEEDED(hr)){ //Useinterface pIX->Fx(); }驱动部7二、组态王驱动原理实现方式原理图驱动部8实现方式“组态王”把每一台与之通讯的下位机设备看作是外部设备,为实现组态王和外部设备的通讯,组态王提供内置了大量设备的驱动程序作为组态王和外部设备的通讯接口.运行期间,组态王就可通过驱动接口程序和这些外部设备交换数据,包括采集数据和发送数据/指令。每一个驱动程序都是一个COM对象,这种方式使通讯程序驱动和组态王构成一个完整的系统.驱动部9驱动原理图设备驱动程序4设备驱动程序3设备驱动程序2模块PLC智能仪表其它工控设备设备驱动程序1外部设备组态王PC机计算机

动画显示线程数据采集线程历史记录线程其他线程COM组件驱动部10三、组态王驱动接口函数开发环境接口函数〔TouchExplorer.exe调用〕运行环境接口函数〔TouchVew.exe调用〕驱动部11开发环境接口函数StrToDevAddr(constchar*str,LPVOIDlpDevAddr)实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的信息传给组态王。constchar*str,将地址栏〔见以下图〕中操作员输入的字符传下来。LPVOIDlpDevAddr,应将此参数转换为结构---PDEVADDR。驱动部12开发环境接口函数StrToDevAddr驱动部13开发环境接口函数GetRegisters(char*szDeviceName,LPVOID*ppReg,int*pRegNum)得到由szDeviceName确定的存放器的名字和个数。*ppReg:存放器信息指针。pRegNum:存放器个数。驱动部14开发环境接口函数GetRegisters驱动部15开发环境接口函数ConvertUserConfigToVar(LPVOIDlpDbItem,LPVOIDlpVar)。将用户的配置字符串转换为组态王变量结构。

LPVOIDlpDbItem:指向结构MiniDbItem的指针.LPVOIDlpVar:指向结构PLCVAR的指针,返回变量就存放在这里。驱动部16开发环境接口函数ConvertUserConfigToVar驱动部17开发环境接口函数AddVarToPacket(LPVOIDlpVar,intnVarAccessType,LPVOIDlpPacket)

确认变量是否能够与一个包里的其他变量一起.LPVOIDlpVar:变量指针。intnVarAccessType:读写方式。LPVOIDlpPacket:包指针。驱动部18开发环境接口函数GetLastError()返回最近一次的错误信息.char*:将最近一次的错误信息返回给组态王驱动部19运行环境接口函数—接口1OpenComDevice(intnDeviceType,LPVOIDlpInitData)初始化通讯设备如:(串口或板卡等)

LPVOIDlpVar:变量指针。

intnDeviceType:仪表类型或者PLC类型

LPVOIDlpInitData:一个指向COMM_CONFIG结构的指针。驱动部20运行环境接口函数—接口1InitialDevice(char*pDeviceName,intnUnitAddr,LPVOIDlpDevAddr)初始化设备,设置该设备的初始化状态

char*pDeviceName设备的唯一名字

LPVOIDlpDevAddr应将此参数转换为结构---PDEVADDR驱动部21运行环境接口函数—接口1ProcessPacket(LPVOIDlpPacket)根据协议及包状态信息进行相应的处理

LPVOIDlpPacket:包指针。驱动部22运行环境接口函数—接口1CloseComDevice()关闭该通讯设备驱动部23运行环境接口函数—接口1TryConnect(char*pDeviceName,intnUnitAddr,LPVOIDlpDevAddr)与地址为UnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试.驱动部24运行环境接口函数—接口2ProcessPacket2(LPVOIDlpPacket)根据协议及包状态信息进行相应的处理。与接口1区别:质量戳、时间戳。目前新开发的驱动必须实现该函数,接口1中的ProcessPacket〔〕不在做特殊处理,直接返回True即可。驱动部25运行环境接口函数—接口2SetTrans(LPVOID*pHcomm)

将其他应用程序的句柄传进驱动。例如modem使用。

驱动部26运行环境接口函数—接口2GetTrans(LPVOID*p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论