位置:51电子网 » 技术资料 » 传感与控制

DDE与COM技术在组态软件开发中的应用

发布时间:2007/4/23 0:00:00 访问次数:820

DDE与COM技术在组态软件开发中的应用 [日期:2005-3-18] 来源:电子技术应用 作者:北京航空航天大学电子信息工程学院 常 青 张卡华 北工学院电子工程系 张志杰 [字体:模块设计,方便其它应用程序调用,MathWorks公司推荐使用COM builder在Matlab环境下开发COM。COM是Component Object Module的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准就可以调用它。

这样,可以使用Matlab开发COM组件,在VC下开发DDE服务程序,使其与InTouch进行数据通信,而这个DDE服务程序调用Matlab开发的COM进行数值处理和算法实现。在实际工业自动化的组态软件开发中,可以使用VC进行数据的采集、命令的发送和复杂的流程控制;使用Matlab下开发的COM完成复杂的算法实现和数字信号处理编程;在InTouch下实现人机对话界面并接收使用者的命令。具体的系统构架如图1所示。

2 应用实现

Windows DDE功能应用的核心是DDE事务管理库(DDEML),它负责管理Windows操作系统下应用程序间的DDE会话和通信,还向用户提供了一系列的应用程序接口API函数。

DDE实现程序间的通信是通过三个标识约定的:

应用程序名(Application):进行DDE对话双方的名称;

主题(Topic):被讨论的数据域;

项目(Item):被讨论的特定数据对象。

在DDE服务程序中首先使用DdeInitialize进行初始化,然后调用DdeCreateStringHandle建立应用程序名、主题和项目等标识的句柄,再通过DdeNameService在操作系统中注册DDE服务程序的名字。根据这些句柄,客户程序就可以使用它提供的DDE服务了。在VC++中的程序实现如下:

#include<ddeml.h>……

DWORD idInstc=0,iData;//iDate是项目对应的数据

HSZ hszSvr,hszTopic,hszIrem;

DdeInitialize(&idInst,(PFNCALLBACK)DdeCallback,CBF_

FAIL_EXECUTES┃CBF_SKIP_ALLNOTIFICATIONS,0L);

//建立应用程序名、主题和项目等标识的句柄

hszSvr=DdeCreateStringHandle(idInst,“DDEApp”,0);

hszTopic=DdeCreateStringHandle(idInst,“DDEAppTopic”,0);

hszItem=DdeCreateStringHandle(idInst,“DDEApphem”,0);

//在操作系统中注册该DDE服务

DdeNameService(idInst,hszSvr,0L,DNS_REGISTER);

……

DDE服务程序的核心部分是一个回调函数,它处理所有DDE消息及相应数据请求。DDE服务程序回调函数的代码如下:

HDDEDATA CALLBACK DdeCallback (WORD usType,WORD usFmt,HCONV hConv,HSZ hsz1,HSZ hsz2, HDDE—DATA hData,DWORD 1Datal,DWORD 1Data2){CHAR sz[5]

if(usType==XTYP_CONNECT){ //得到连接请求return((HDDEDATA)TRUE);

}

//校验主题、项目的句柄及数据格式

if(hszl==hszTopic && hsz2==hszItem && usFmt==CF_TEXT){

if(usType==XTYP_REQUEST‖usType==XTYP_ ADVREQ){//得到数据请求

_itoa(iData,sz,10);//将数据转换为文本格式

return DdeCreateDataHandle(idInst,(LPBYTE)sz,

strlen(s2)十1,0L,hszItem,CP_TEXT,0);

}

if(usType==XTYP_POKE){//得到客户端发送来的数据

DdeGetData(hData,(LPBYTE)sz,strlen(sz)十1,0L);

iData=atoi(sz); //保存数据

DdePostAdvise(idInst,hszTopic,hszItem);

return((HDDEDATA)DDE_FACK);

}

}

return 0;

<
DDE与COM技术在组态软件开发中的应用 [日期:2005-3-18] 来源:电子技术应用 作者:北京航空航天大学电子信息工程学院 常 青 张卡华 北工学院电子工程系 张志杰 [字体:模块设计,方便其它应用程序调用,MathWorks公司推荐使用COM builder在Matlab环境下开发COM。COM是Component Object Module的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准就可以调用它。

这样,可以使用Matlab开发COM组件,在VC下开发DDE服务程序,使其与InTouch进行数据通信,而这个DDE服务程序调用Matlab开发的COM进行数值处理和算法实现。在实际工业自动化的组态软件开发中,可以使用VC进行数据的采集、命令的发送和复杂的流程控制;使用Matlab下开发的COM完成复杂的算法实现和数字信号处理编程;在InTouch下实现人机对话界面并接收使用者的命令。具体的系统构架如图1所示。

2 应用实现

Windows DDE功能应用的核心是DDE事务管理库(DDEML),它负责管理Windows操作系统下应用程序间的DDE会话和通信,还向用户提供了一系列的应用程序接口API函数。

DDE实现程序间的通信是通过三个标识约定的:

应用程序名(Application):进行DDE对话双方的名称;

主题(Topic):被讨论的数据域;

项目(Item):被讨论的特定数据对象。

在DDE服务程序中首先使用DdeInitialize进行初始化,然后调用DdeCreateStringHandle建立应用程序名、主题和项目等标识的句柄,再通过DdeNameService在操作系统中注册DDE服务程序的名字。根据这些句柄,客户程序就可以使用它提供的DDE服务了。在VC++中的程序实现如下:

#include<ddeml.h>……

DWORD idInstc=0,iData;//iDate是项目对应的数据

HSZ hszSvr,hszTopic,hszIrem;

DdeInitialize(&idInst,(PFNCALLBACK)DdeCallback,CBF_

FAIL_EXECUTES┃CBF_SKIP_ALLNOTIFICATIONS,0L);

//建立应用程序名、主题和项目等标识的句柄

hszSvr=DdeCreateStringHandle(idInst,“DDEApp”,0);

hszTopic=DdeCreateStringHandle(idInst,“DDEAppTopic”,0);

hszItem=DdeCreateStringHandle(idInst,“DDEApphem”,0);

//在操作系统中注册该DDE服务

DdeNameService(idInst,hszSvr,0L,DNS_REGISTER);

……

DDE服务程序的核心部分是一个回调函数,它处理所有DDE消息及相应数据请求。DDE服务程序回调函数的代码如下:

HDDEDATA CALLBACK DdeCallback (WORD usType,WORD usFmt,HCONV hConv,HSZ hsz1,HSZ hsz2, HDDE—DATA hData,DWORD 1Datal,DWORD 1Data2){CHAR sz[5]

if(usType==XTYP_CONNECT){ //得到连接请求return((HDDEDATA)TRUE);

}

//校验主题、项目的句柄及数据格式

if(hszl==hszTopic && hsz2==hszItem && usFmt==CF_TEXT){

if(usType==XTYP_REQUEST‖usType==XTYP_ ADVREQ){//得到数据请求

_itoa(iData,sz,10);//将数据转换为文本格式

return DdeCreateDataHandle(idInst,(LPBYTE)sz,

strlen(s2)十1,0L,hszItem,CP_TEXT,0);

}

if(usType==XTYP_POKE){//得到客户端发送来的数据

DdeGetData(hData,(LPBYTE)sz,strlen(sz)十1,0L);

iData=atoi(sz); //保存数据

DdePostAdvise(idInst,hszTopic,hszItem);

return((HDDEDATA)DDE_FACK);

}

}

return 0;

<
相关IC型号

热门点击

 

推荐技术资料

滑雪绕桩机器人
   本例是一款非常有趣,同时又有一定调试难度的玩法。EDE2116AB... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!