COM组件与组态王驱动.doc

上传人:scccc 文档编号:12460407 上传时间:2021-12-04 格式:DOC 页数:40 大小:1.30MB
返回 下载 相关 举报
COM组件与组态王驱动.doc_第1页
第1页 / 共40页
COM组件与组态王驱动.doc_第2页
第2页 / 共40页
COM组件与组态王驱动.doc_第3页
第3页 / 共40页
COM组件与组态王驱动.doc_第4页
第4页 / 共40页
COM组件与组态王驱动.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《COM组件与组态王驱动.doc》由会员分享,可在线阅读,更多相关《COM组件与组态王驱动.doc(40页珍藏版)》请在三一文库上搜索。

1、COM组件技术与组态王驱动驱动部COMM件与组态王驱动COM组件技术与组态王驱动 COM组件技术简介组态王驱动原理 组态王驱动接口函数开发包介绍实际工程演示一、COM组件技术简介 COM原理 COM 接 口COM实现驱动部COMM件与组态王驱动COM原理COM原理客户程序客户程序4。返回COM 对象指也4。返回COM对象指飪3o创建实似3o创建实似1o请求COM 对象1o请求COM对象COM坏境2。查询注册表得到DLL路4注册表驱动部COM组件与组态王駆动5COM 接口I IUnknown主要功能:生存期控制和接口查询IUnknown的定义(IDL):in terface IUn kow nv

2、irtual HRESULT Querylnterface(con st IID&, void *ppv) = 0; virtual ULONG AddRef() = 0;/相当构造函数 virtual ULONG Release() = 0;相当析构函数 COM实现下面描述的是一个基本的COM对象的Unknown接口实现,不提供其他接口,该对象是一个无意义的对象。驱动部COMM件与组态王驱动7COM实现接口查询 一个COM对象(构件)可以实现多个接口 使用Queryinterface查询某个构件是否支持某个特定的接口 Queryinterface 的使用 void foo(Iunkn

3、own * pl) /Defi ne a pointer for the in terface IX * pIX = NULL; /Ask for interface IX HRESULThr = pI->QueryInterface(IID_IXz (void *)&pIX); /Checketum value If (SUCCEEDED(hr) / Use interface pIX->Fx(); 二、组态王驱动原理实现方式 原理图驱动部COMM件与组态王驱动实现方式 “组态王”把每一台与之通讯的下位机设刍: 看作是外部设备,为实现组态王和外部设备的通讯,组态王提供内置

4、了大量设备的驱动 程序作为组态王和外部设备的通讯接口.运行期间,组态王就可通过驱动接口程序和这些外部设备交换数据,包括采集数据和发 送数据/指令。每一个驱动程序都是一个 COM对象,这种方式使通讯程序驱动和组 态王构成一个完整的系统.驱动部COM组件与组态王驱动#驱动原理图组态王COM组件动画显示线程设备驱动程序1模块数据采集线程设备驱动程序2PLC历史记录线程设备驱动程序3智能仪表其他线程设备驱动程序4其它工控设备PC机计算机外部设备驱动部COM组件与组态王驱动11三、组态王驱动接口函数 开发环境接口函数(TouchExplorer.exe调用)运行环境接口函数(TouchVew.exe调用

5、)驱动部COMM件与组态王驱动开发环境接口函数 StrToDevAddr (const char* strzLPVOID IpDevAddr)实现对地址输入的整理,判断用户输入的地 址是否合法,并将地址的信息传给组态王。 const char* str,将地址栏(见下图)操作员输入的字符传下来。 LPVOID IpDevAddr,应将此参数转换 为结构-PDEVADDRO驱动部COMM件与组态王驱动#开发环境接口函数驱动部COMM件与组态王驱动开发环境接口函数设备配置向导一设备H1址谡置J&南在这一步谙为要安装的设备指定地址使用扶认值或按地址帮助按钮职得设备地址帮助信息口地址帮助1聽鶴

6、翩址必上1步I下1步)| 职消驱动部COMM件与组态王驱动开发环境接口函数 GetRegisters( char *szDeviceNamez LPVOID *ppRegz int *pRegNum )得到由szDeviceName确定的寄存器的 名字和个数。 *ppReg :寄存器信息指针。pRegNum :寄存器个数。驱动部COM组件与组态王駆动开发环境接口函数驱动部COM组件与组态王駆动开发环境接口函数2d直述1°厂保连搔设备|1新卬设备StrVal读写属性:厂允许DDE访问定义斐呈基本属性报警定义|记录和安全区寄存器数据类型:变量名 妾量类型k State' I Ol

7、dPass h NewPass j SetPass 沐 CommErr初始值盘大值盘大原始值变化灵敏度|0 虽小值|o 虽小原贻值|o71|P&ssl5731结构成员:我员类型:成员描述:2d|999999999999999999采集频率00状态厂保存琴数亳秒方式a线性r开方 高级|确定职消GetRegisters驱动部COM组件与组态王駆动开发环境接口函数 ConvertUserConfigToVar( LPVOIDlpDbltem, LPVOID lpVar)。将用户的配置字符串转换为组态王变量结构。 LPVOID lpDbltem:指向结构MiniDbltem的 指针. LPVO

8、ID lpVar:指向结构PLCVAR的指针, 返回变量就存放在这里。驱动部COM组件与组态王駆动开发环境接口函数2d基本屋性丨报暑定交|记录和安全区变量名:IPasT变屋类型:| I/O字符串结构成员d成员类型;E BI成员描述;描述Con vertllserC on figToVar变化灵敏度|0初始值|oJ最小值最大值(999999999最小原贻值:B犬原始值|999999999厂保存数值连接设备新血设备状态厂保存参数采集频率 1000HJ寄存器阿迈三数据类型:lanHHHHHBLd 读写属性:r读写(?只读 c只写tri ng转换方式金线性r开方毫秒n允许DDE访问取消I驱动部COM组

9、件与组态王駆动开发环境接口函数 AddVarToPacket( LPVOID IpVar, int nVarAccessType, LPVOID IpPacket) 确认变量是否能够与一个包里的其他变量一 起. LPVOID lpVar:变量指针。 intnVarAccessType:读写方式。 LPVOID IpPacket:包指针。 GetLastError()返回最近一次的错误信息. char*:将最近一次的错误信息返回给组态驱动部COMM件与组态王驱动25 OpenComDevice( int nDeviceType,LPVOID IpInitData)初始化通讯设备如:(串口或板卡等

10、) LPVOID lpVar:变量指针。 int nDeviceType:仪表类型或者PLC类型 LPVOID IpInitData: 一个指向 COMM_CON FIG结构的指针。 InitialDevice(char* pDeviceName, intnUnitAddr, LPVOID IpDevAddr)初始化设备,设置该设备的初始化状态 char* pDeviceName设备的唯一名字 LPVOID IpDevAddr应将此参数转换为结 构PDEVADDR ProcessPacket( LPV OID IpPacket)根据协议及包状态信息进行相应的处理 LPVOID IpPacket

11、:包指针。 CloseComDevice()关闭该通讯设备 TryConnect( char* pDeviceName, int nUnitAddr, LPVOID IpDevAddr) 与地址为UnitAddr的设备尝试进行通讯,用 于故障侦探及恢复尝试. ProcessPacket2 (LPV OID IpPacket)根据协议及包状态信息进行相应的处理。与接口 1区别:质量戳、时间戳。目前新开发的驱动必须实现该函数,接口 1 中的ProcessPacket ()不在做特殊处理, 直接返回True即可。 SetTrans( LPVOID* pHcomm)将其他应用程序的句柄传进驱动。 例如modem使用。 GetTrans( LPVOID* pHcomm)将驱动句柄传给其他应用程序。驱动部COM组件与组态王驱动35四、开发包介绍 VC6开发包(老开发包)老开发包主要是维护老驱动涉及到。接口函数讲解NET开发包(新开发包)目前的开发都是用新开发包。最新的开发包模版(DriverToolKit2.0.3.2)四、实际工程演示驱动部COM组件与组态王駆动29欢迎加入开发一部!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1