2024年3月21日发(作者:)

OPC Client 核心源码(MFC)

作者: 叶帆(/yefanqiu) ,2005-12-2 22:01:00 发表于:《OPC论坛》 共有9人回复,792次点击 加为好友 发送留言

好像技术一沾上工业,便有了很高的价值,大家三缄其口,谁都不点破这层窗户纸,好多的思路和源码都要从国外网

站获得,国内总是有条件,有限制--就是不告诉你,怕教会徒弟,饿死师父吧。

研究了N天,开发了一个基于我的组态后台的OPC客户端驱动,考虑到驱动的特殊性,所以只开发了同步接口操作。

测试一段时间后,还可以。现把核心代码公开出来,有点VC基础的人可以直接拿来用。

源码网址:/yefanqiu/archive/2005/12/02/

以下是对《OPC Client 核心源码(MFC)》的回复:

共有9人回复 分页: 1

引用 加为好友 发送留言 2005-12-2

叶帆(/yefanqiu):

23:15:00

//*************************************************************************

//函 数 名:ConnectOPC

//所属类名:COPCClien

//输 入:CString SvrName

//输 出:

//功能描述:连接OPC服务器

//全局变量:

//调用模块:

//作 者:叶帆

//日 期:2005年12月1日

//修 改 人:

//日 期:

//版 本:

//*************************************************************************

long COPCClient::ConnectOPC(CString cSvrName)

{

HRESULT hr;

CLSID clsid;

WCHAR wszProgID [512];

//----------------------------------

//初始化COM

hr =CoInitialize(NULL);

if (FAILED(hr)) return 8; //com初始化失败

//-----------------------------------

if(strSvrName!="") //判断是否已经连接OPC

{

if (strSvrName==cSvrName) return 2; //OPC服务器已经连接

else return 4; //只能连接一个OPC服务器

}

//-----------------------------------

try

{

//----------------------------------

//把字符串形式的对象标识转化为CLSID结构形式

_mbstowcsz (wszProgID, cSvrName, sizeof (wszProgID) / sizeof (WCHAR));

hr= CLSIDFromProgID(wszProgID, // [in]

&clsid); // [out]

if(FAILED(hr))

{

CoTaskMemFree(&clsid); //COM 内存释放函数

CoUninitialize(); //终止COM库功能服务

return 16; //获取clsid失败

}

//--------------------------------

//创建Server实例

hr=CoCreateInstance(clsid, //[in]

NULL, //[in]

CLSCTX_SERVER, //[in]

IID_IUnknown, //[in]

(void**)&pUNK); //[out]