COM组件技术在现场总线控制系统组态软件中的应用
这里,COM是用ATL编写的本地服务器,COM对象的线程是套间线程。接口定义了6个函数,COM程序流程图如图2所示。
COM对象接口的函数声明以及适配器初始化的程序如下:
COM接口定义:
interfaceINCardWork:IDispatch
{
[id(1),helpstring("适配器初始化函数,返回值为是否成功")]
HRESULTNcardInit([in]BYTE
bSrcNode,[in]BYTEbIntrAdd,[in]BYTEbRate,[in]longbSegmantAdd,[out]BOOL*flag);
[id(2),helpstring("将客户端传送的数组赋值给Room[][]")]
HRESULTSendData[in]BYTESendBuf[256]);
[id(3),helpstring("启动多线程")]
HRESULTSendFinish([in]BOOLbFinish);
[id(4),helpstring("此函数返回值表示数据是否已向下位机发送完毕,同时可显示哪些模块未被配置,通常在此函数前先用FinishQuery([out]BOOL*bFinish)查询发送是否完毕")]
HRESULTReceiveResult([out]BOOL*bSendFinish);
[id(5)],helpstring("此函数返回值表示数据是否已向下位机发送完毕,“真”表示发送完毕")]
HRESULTFinishQuery([out]BOOL*bFinish);
[id(6),helpstring("网络检查,用来在发送数据前检测是否有该节点存在")]
HRESULTNetCheck[in]BYTEsour,[in]BYTEdes,[in]BYTEtype,[out]BOOL*flag);
[id(7),helpstring("读取模块的测量值")]
HRESULTGetPV([iv]BYTEbDesNode,[out]floatvalue[256]);
}
适配器初始化函数:
#include<conio.h>
#include"winioctl.h"
//包含其它头文件
……
STDMETHODIMPCNCardWork::NcardInit(BYTEbSrcNode,BYTEbIntrAdd,BYTEbRate,longbSegmentAdd,BOOL*flag)
{
NcardCtrlcardctrl;//NcardCtrl类的函数调用VxD函数
exbSrcNode=bSrcNode;//给上位机节点赋值
exbRate=bRate;//下位机与适配器的通信波特率
BOOL 《COM组件技术在现场总线控制系统组态软件中的应用(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/145332.html
COM对象接口的函数声明以及适配器初始化的程序如下:
COM接口定义:
interfaceINCardWork:IDispatch
{
[id(1),helpstring("适配器初始化函数,返回值为是否成功")]
HRESULTNcardInit([in]BYTE
bSrcNode,[in]BYTEbIntrAdd,[in]BYTEbRate,[in]longbSegmantAdd,[out]BOOL*flag);
[id(2),helpstring("将客户端传送的数组赋值给Room[][]")]
HRESULTSendData[in]BYTESendBuf[256]);
[id(3),helpstring("启动多线程")]
HRESULTSendFinish([in]BOOLbFinish);
[id(4),helpstring("此函数返回值表示数据是否已向下位机发送完毕,同时可显示哪些模块未被配置,通常在此函数前先用FinishQuery([out]BOOL*bFinish)查询发送是否完毕")]
HRESULTReceiveResult([out]BOOL*bSendFinish);
[id(5)],helpstring("此函数返回值表示数据是否已向下位机发送完毕,“真”表示发送完毕")]
HRESULTFinishQuery([out]BOOL*bFinish);
[id(6),helpstring("网络检查,用来在发送数据前检测是否有该节点存在")]
HRESULTNetCheck[in]BYTEsour,[in]BYTEdes,[in]BYTEtype,[out]BOOL*flag);
[id(7),helpstring("读取模块的测量值")]
HRESULTGetPV([iv]BYTEbDesNode,[out]floatvalue[256]);
}
适配器初始化函数:
#include<conio.h>
#include"winioctl.h"
//包含其它头文件
……
STDMETHODIMPCNCardWork::NcardInit(BYTEbSrcNode,BYTEbIntrAdd,BYTEbRate,longbSegmentAdd,BOOL*flag)
{
NcardCtrlcardctrl;//NcardCtrl类的函数调用VxD函数
exbSrcNode=bSrcNode;//给上位机节点赋值
exbRate=bRate;//下位机与适配器的通信波特率
BOOL 《COM组件技术在现场总线控制系统组态软件中的应用(第3页)》