opc client的问题? 点击:2079 | 回复:9



北欧洲

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2009年3月18日
发表于:2009-07-20 15:20:20
楼主
写vc西门子客户端CoCreateInstance()的时候 说interface IOPCComn is not Registered! 不知道都需要注册哪些文件啊? 谁能具体说说啊?



[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-07-20 15:29:01
1楼
用VC难,在VC下用DCOM更难。到网上搜个例子,在这里是缘木求鱼呀

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-07-20 15:30:58
2楼
我会C++BUILDER6的OPC客户端,跟VC有点不一样。

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-07-20 15:31:47
3楼

/*---------------------------------------------------*
* OPC客户端BCB6调用子程序 OPCClient.h V1.5 *
* 2009.5.9 *
*---------------------------------------------------*/
#ifndef OPC_CLIENT_CLASS
#define OPC_CLIENT_CLASS

#include <ComObj.hpp> // OleCheck
#include <atlbase.h> // CComPtr
#include <opcda_i.c>
#include <OPCDA.h>
#include <ComCtrls.hpp>

bool Check_OPCID(WideString id)
{
bool valid=true;
try
{
GUID opc_guid=ProgIDToClassID(id);
}
catch(...)
{
valid=false;
}
return(valid);
}
bool ConnectOPCServer(WideString id, // OPC Server ID
WideString ip, // IP,空为本地
IUnknown * & opcServer)
{ // 支持远程联接OPCServer
try
{
CLSID clsid;
OleCheck(CLSIDFromProgID(id,&clsid));
if (ip.Length()!=0)
{ // 远程OPC
COSERVERINFO ServerInfo={0,ip.c_bstr(),0,0};
MULTI_QI MQI={&IID_IOPCServer,NULL,0};
OleCheck(CoCreateInstanceEx(clsid,
NULL,
CLSCTX_REMOTE_SERVER,
&ServerInfo,
1,
&MQI));
opcServer=MQI.pItf;
}
else
{ // 本地OPC
OleCheck(CoCreateInstance(clsid,
NULL,
CLSCTX_LOCAL_SERVER,
IID_IOPCServer,
(void **)&opcServer));
}
return(true);
}
catch(...)
{
opcServer=NULL;
return(false);
}
}

// 部分片断

opc521

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 12回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2007年9月05日
发表于:2009-07-20 17:43:58
4楼

需要注册opccomn_ps.dll

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-07-21 09:17:06
5楼

opccomn_ps.dll

 在客户端安装支持库时,自动安装的;

 

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-07-21 09:24:53
6楼

OPC客户端也不是无条件能执行的,需要支持库的,许多软件会替你安装上的,但

有的机上就不一定有,你得自已安装支持库,几个文件如下:

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-07-21 09:26:00
7楼

执行 setup.exe后,就自动注册    opccommn_ps.dll等

七斗秀才

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 59回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2009-07-24 09:31:49
8楼
研究ing~研究ing~研究ing~研究ing~.......

myopc

  • 精华:1帖
  • 求助:0帖
  • 帖子:25帖 | 43回
  • 年度积分:0
  • 历史总积分:159
  • 注册:2002年9月05日
发表于:2009-07-26 09:56:01
9楼
IOPCComm接口在上面图中的opccomn_ps.dll中,
最简单的办法,只要安装任何一款opc server即可(一般都自带了这些接口的定义文件),当然最好是大公司的。
keepware,matrik都可以,demo版即可

热门招聘
相关主题

官方公众号

智造工程师