C++调用OPC服务器的关键性代码 点击:1313 | 回复:0



opcfan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:62帖 | 58回
  • 年度积分:0
  • 历史总积分:667
  • 注册:2004年9月29日
发表于:2007-02-12 12:18:00
楼主
OPC服务器实际上就是一种COM组件,以下是一个OPC客户程序调用OPC服务器对象的关键性代码,创建一个OPCServer对象的实例并请求指向这个对象m_IOPCServer接口指针。
HRESULT    hr; // 首先声明一个接受CoCreateInstance()返回值的HRESULT
bool m_bComInitialized;
IOPCServer* m_IOPCServer;// 指向IID_IOPCServer接口的指针
hr= CoInitialize(NULL)//初始化COM库
m_bComInitialized = SUCCEEDED (hr);
if (!m_bComInitialized)
{
return (FALSE);//如果初始化COM库失败,程序就不必向下执行
}
//通过ProgID,查找注册表中的相关CLSID,
//NAPOPC.Svr是台湾泓格科技有限公司OPC服务器的ProgID,通过//CLSIDFromProgID获得对象的clsid
hr = CLSIDFromProgID(L"NAPOPC.Svr", &clsid); 
if (hr != S_OK)
{
AfxMessageBox("获取CLSID失败");
CoUninitialize();//调用CoUninitialize函数释放COM库的资源
return (FALSE);
}
//创建OPC服务器对象,并查询对象的IID_IOPCServer接口
hr = CoCreateInstance ( clsid,                      //coclass的CLSID
NULL,                    //不是用聚合
CLSCTX_LOCAL_SERVER,  //服务器类型
IID_IOPCServer,            //接口的IID
(void**) &m_IOPCServer);   //指向接口的指针
if ( SUCCEEDED ( hr ) )
{
//用m_IOPCServer调用其它的方法
}
else
{
//不能创建OPC服务器对象
AfxMessageBox("创建OPC服务器对象失败"); 
CoUninitialize();//调用CoUninitialize函数释放COM库的资源
}
调用CoCreateInstance()来创建新的OPC服务器对象。如果hr接收到一个表示成功的代码,即S_OK,则SUCCEEDED宏返回TRUE,否则返回FALSE。FAILED是一个与SUCCEEDED对应的宏用来检查失败代码。


热门招聘
相关主题

官方公众号

智造工程师