/// <summary> /// Converts an array of item objects to an array of GetOPCITEMDEF objects. /// </summary> internal static OpcRcw.Da.OPCITEMDEF[] GetOPCITEMDEFs(TsCDaItem[] input) { OpcRcw.Da.OPCITEMDEF[] output = null; if (input != null) { output = new OpcRcw.Da.OPCITEMDEF[input.Length]; for (int ii = 0; ii < input.Length; ii++) { output[ii] = new OpcRcw.Da.OPCITEMDEF(); output[ii].szItemID = input[ii].ItemName; output[ii].szAccessPath = (input[ii].ItemPath == null) ? String.Empty : input[ii].ItemPath; output[ii].bActive = (input[ii].ActiveSpecified) ? ((input[ii].Active) ? 1 : 0) : 1; output[ii].vtRequestedDataType = (short)Technosoftware.DaAeHdaClient.Com.Interop.GetType(input[ii].ReqType); output[ii].hClient = 0; output[ii].dwBlobSize = 0; output[ii].pBlob = IntPtr.Zero; } } return(output); }
private string BindOPCDb() { string errText = string.Empty; DataSet ds = DbInf.GetOPCDbInfo(ref errText); if (errText.Length > 0) { return(errText); } int itemNum = 0; //创建同步组 DataRow[] drs = ds.Tables[0].Select("type = 'SYNC'"); if ((itemNum = drs.Length) > 0) { _idAim = new string[itemNum]; _syncItemHandle = new int[itemNum]; //添加组 errText = _opcDaConn.AddSyncGroup(out _syncGroupOpcInfo); if (errText.Length > 0) { return(errText); } //组装对象 OpcRcw.Da.OPCITEMDEF[] items = new OpcRcw.Da.OPCITEMDEF[itemNum]; for (int i = 0; i < itemNum; i++) { items[i].szAccessPath = ""; items[i].bActive = 1; items[i].dwBlobSize = 1; items[i].pBlob = IntPtr.Zero; items[i].hClient = i; items[i].vtRequestedDataType = (short)VarEnum.VT_BSTR; items[i].szItemID = drs[i]["db_str"].ToString(); _idAim[i] = drs[i]["id"].ToString() + _idAimSplitStr + drs[i]["db_aim"].ToString(); } //添加对象 errText = _opcDaConn.AddSyncItems(_syncGroupOpcInfo.SyncGroupObj, items, _syncItemHandle); if (errText.Length > 0) { return(errText); } } //创建异步组 drs = ds.Tables[0].Select("type = 'ASYNC'"); if ((itemNum = drs.Length) > 0) { _idAim = new string[itemNum]; //添加组 errText = _opcDaConn.AddAsyncGroup(out _asyncGroupOpcInfo); if (errText.Length > 0) { return(errText); } //组装对象 OpcRcw.Da.OPCITEMDEF[] items = new OpcRcw.Da.OPCITEMDEF[itemNum]; for (int i = 0; i < itemNum; i++) { items[i].szAccessPath = ""; items[i].bActive = 1; items[i].dwBlobSize = 1; items[i].pBlob = IntPtr.Zero; items[i].hClient = i; items[i].vtRequestedDataType = (short)VarEnum.VT_BSTR; items[i].szItemID = drs[i]["db_str"].ToString(); AsyncItemHandleToDeviceDic.Add(i, drs[i]["id"].ToString() + _idAimSplitStr + drs[i]["db_aim"].ToString()); } //添加对象 int[] itemHandle = new int[itemNum]; _opcDaConn.AddAsyncItems(_asyncGroupOpcInfo.AsyncGroupObj, items, itemHandle); if (errText.Length > 0) { return(errText); } } return(errText); }