VC++: OPCDA开发简单示例

1.  先Get服务的CLSID,没有这个就连不上接口了。
2.  通过CoCreateInstanceEx得到接口,需要用到的OPC接口有这么几个:
        IOPCServer(Server管理), 
        IOPCItemMgt(Item管理),
        IOPCBrowseServerAddressSpace(浏览服务器点),
        IOPCAsyncIO2(异步读写),
        IOPCSyncIO(同步读写),
        IOPCDataCallback(数据Callback)
3. 成功得到IOPCServer就说明连接成功了。
4. m_pIServer->AddGroup(),增加组,并得到IOPCItemMgt接口。
5. m_pItemMgt->AddItems(),增加项。
6. 可以用IOPCBrowseServerAddressSpace接口来得到项路径。
        服务器上项的存放是以树的形式。
        m_pIBrowse->ChangeBrowsePosition():到指定的位置。
        m_pIBrowse->BrowseOPCItemIDs():得到某一层的所有节点。
7. 同步异步方式的读写。
        pIAsync2->Read(), pIAsync2->Write(), pISync->Read(), pISync->Write()
8. 通过IOPCDataCallback::OnDataChange()来进行数据的自动刷新。

9. 简单示例代码(完整代码请从资源中下载):

void main(void)
{
	IOPCServer* pIOPCServer = NULL;   
	IOPCItemMgt* pIOPCItemMgt = NULL; 

	OPCHANDLE hServerGroup; 
	OPCHANDLE hServerItem;  


	CoInitialize(NULL);

	pIOPCServer = InstantiateServer(OPC_SERVER_NAME);

	AddTheGroup(pIOPCServer, pIOPCItemMgt, hServerGroup);


    AddTheItem(pIOPCItemMgt, hServerItem);

	VARIANT varValue;
	VariantInit(&varValue);
	ReadItem(pIOPCItemMgt, hServerItem, varValue);

	cout << "Read value: " << varValue.XVAL << endl;

	RemoveItem(pIOPCItemMgt, hServerItem);

    RemoveGroup(pIOPCServer, hServerGroup);

	pIOPCItemMgt->Release();
	pIOPCServer->Release();

	CoUninitialize();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值