恭喜,你发布的帖子
发布于 2017-01-12 14:21:40
10楼
使用VC。现在不知道怎么去索引地址变量。不知道变量名。
void CSync_RWDlg::OnConn()
{
……
HRESULT r1;
r1 = CLSIDFromProgID(L"OPC.SimaticNET", &clsid);
r1 = CoCreateInstance (clsid, NULL, CLSCTX_LOCAL_SERVER ,
IID_IOPCServer, (void**)&m_pIOPCServer);
//"OPC.SimaticNet", "192.168.0.102"是OPCServer 名称及所在computer 地址
r1=m_pIOPCServer->AddGroup()//增加相应的组,定义组的特性,并输出组的句柄
m_Items[0].szAccessPath = L"";
m_Items[0].szItemID = L"S7:[@LOCALSERVER]DB1,INT0";
//地址,不同数据类型表示方法不同
m_Items[0].bActive = TRUE; //是否激活
m_Items[0].hClient = 1; //标示ID,不同的Item 不一样
m_Items[0].dwBlobSize = 0;
m_Items[0].pBlob = NULL;
m_Items[0].vtRequestedDataType = 2; //数据类型表示格式,2 表示int
……
r1 = m_pIOPCItemMgt->AddItems(3,m_Items,&m_pItemResult,
&m_pErrors);//将定义的OPCTtem 加入组内,注意数量
……
r1 = m_pIOPCItemMgt->QueryInterface(IID_IOPCSyncIO,
(void**)&m_pIOPCSyncIO);
//为OPCGroup 的组对象定义接口
……
}
同步读:
void CSync_RWDlg::OnRead()
{
……
r1 = m_pIOPCSyncIO->Read(OPC_DS_DEVICE, 3, phServer,
&pItemValue, &pErrors); //同步读
m_ReadVal1 = pItemValue[0].vDataValue.lVal; //得出值
qnr = pItemValue[0].wQuality; //
m_ReadQu1 = GetQualityText(qnr); //质量码
m_ReadTs1 = COleDateTime( pItemValue[0].ftTimeStamp ).Format();
//时间
UpdateData(FALSE); //更新数据到画面
……
}
请填写推广理由:
分享
只看
楼主