C++实现OPC Server远程连接

首先声明一下,常搜索到的函数 CLSIDFromProgID 只能查询本地注册表的值,如果OPC Server与客户端不在同一台服务器,这个函数就没有用。
另一种连接方式,是通过opc server的CLSID(打开注册表 ,计算机\HKEY_CLASSES_ROOT\服务名),再通过 CLSIDFromString 函数,这种方式有些取巧,不过也能实现功能。具体如下

	CLSID clsid_citect;
	COSERVERINFO si;
	ZeroMemory(&si, sizeof(si)); //内存1 存放服务器信息
	MULTI_QI mqi[1];
	ZeroMemory(&mqi, sizeof(mqi)); //内存2 存放MULTI_QI用以获取OPC服务器列表
	//获取服务器列表,用到了OPCEnum.exe
	CString strIP = L"192.168.5.93";
	si.pwszName = (LPWSTR)(strIP.GetString()); //Covert CString to LPWSTR 把服务器名转为宽字节字符串
	HRESULT  hr;
	CLSIDFromString(L"{3FB14190-DEF2-4bba-998A-719C49C74DE1}", &clsid_citect);//PCAuto.OPCServer
	mqi[0].hr = S_OK;
	mqi[0].pIID = &IID_IOPCServer;
	mqi[0].pItf = NULL;

	hr = CoCreateInstanceEx(clsid_citect, NULL, CLSCTX_ALL, &si, 1, mqi);
	if(hr != S_OK)
		printf("\CoCreateInstanceEx Ret = 0x%08X\n",hr);
	if (FAILED(hr))
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值