wincc服务器与vc客户端通过opc通信问题

已锁定

kunlunws

  • 帖子

    4
  • 精华

    0
  • 被关注

    2

论坛等级:游民

注册时间:2010-12-08

普通 普通 如何晋级?

wincc服务器与vc客户端通过opc通信问题

2659

4

2010-12-17 15:05:12

我现在要利用wincc作为服务器,vc作为客户端,通过opc实现两者的通讯,要求vc端能够读写wincc变量的数据,在vc客户端程序中用OPCITEMDEF结构数组给变量条目做初始化,我的问题是该结构数组中szItemID该如何设置?我的wincc工程名字是MyProject,wincc中定义的用于通信的两个变量名是id,name.
下面是源程序,现在就是读不回wincc中的数据,wincc项目已经激活了,不知问题出在哪?请各位大师指教!

if(CoInitialize(NULL) != S_OK)
{
AfxMessageBox("COM初始化失败");
}
else
{
AfxMessageBox("COM已经初始化",MB_OK MB_ICONINFORMATION,0);
}

typedef HRESULT (STDAPICALLTYPE *INTERFACE_FINDER)(void *pThis, DWORD dwData, REFIID riid, void **ppv);
INTERFACE_FINDER a=INTERFACE_FINDER(-1);
HRESULT hRet=ConnectToServer(L"OPCServer.Wincc",FALSE,&ppUnknown);

if(hRet!=S_OK)
{
MessageBox("您可能没启动Wincc!您必须首先启动Wincc!");

}

//初始化组的参数
fTemp = 0.0f;
lTimeBias = 0;
dwActualRate = 0;
ppUnknown->QueryInterface(IID_IOPCServer,(void **)&pServer);
hRet=pServer->AddGroup(L"",TRUE,500,1235,&lTimeBias,&fTemp,0,&hOPCServerGroup,
&dwActualRate,IID_IOPCItemMgt,(LPUNKNOWN*)&pOPCItemMgt);

ItemNumber=2;//数据项的个数
USES_CONVERSION;//使用T2OLE()


for(int i=0;i {
ItemArray[i].dwBlobSize = 0;
ItemArray[i].pBlob = NULL;
ItemArray[i].bActive = TRUE;
ItemArray[i].hClient =i; // pointer to item is its "handle"
ItemArray[i].szAccessPath =T2OLE("MyProject");
ItemArray[i].vtRequestedDataType=VT_I2;
}

ItemArray[0].szItemID =T2OLE("id");
ItemArray[1].szItemID =T2OLE("name");

if(hRet==S_OK)
hRet=pOPCItemMgt->AddItems(ItemNumber,ItemArray,
(OPCITEMRESULT**)&pItemResult,(HRESULT **)&pErrors);
if(hRet==S_OK) MessageBox("AddItemsSuccess");

for(i=0;i<2;i++)
hServer[i]=pItemResult[i].hServer;
hRet=ppUnknown->QueryInterface(IID_IOPCSyncIO,(void **)&pOPCSync);

void COPCClientDlg::OnRead()
{
// TODO: Add your control notification handler code here
int ItemNumber=2;
int id,name;

HRESULT hRet=pOPCSync->Read(OPC_DS_CACHE,ItemNumber,/*hServerAI*/hServer,&pItemValue,&pErrors);

id=V_I2(&pItemValue[0].vDataValue);//V_BSTR(&pItemValue[0].vDataValue);//VT_R4;V_BSTR
name=V_I2(&pItemValue[1].vDataValue);//V_BSTR(&pItemValue[1].vDataValue);
m_id.Format("%d",id);
m_name.Format("%d",name);
UpdateData(false);
}
wincc服务器与vc客户端通过opc通信问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32564条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。