/// <summary> /// Остановит таймер, сделает ViewItem для ViewItem, запишет значение, Запустит таймет. /// </summary> public void WriteBitToOpc(BitParameters bitParameter, bool paramValue) { TimerStop(); ViewItem(OpcConsts.Bits); List <OpcParameter> parameters = ProcessParameters(Parameters); OpcParameter parameter = parameters.FirstOrDefault(p => p.ParameterName == OpcConsts.Bits); if (parameter == null) { throw new Exception(string.Format("Can not process bit parameter {0}", bitParameter)); } BitParameters bitParameters = (BitParameters)Convert.ToInt32(parameter.ParameterValue); if (paramValue) { bitParameters = bitParameters | bitParameter; } else { bitParameters = bitParameters & ~bitParameter; } int bitParametersAsInt = (int)bitParameters; _opcServerManager.WriteToOpc(bitParametersAsInt.ToString()); TimerStart(); }
public List <OpcParameter> ProcessOpcNodeParams(ArrayList lst) { if (lst == null) { throw new ArgumentNullException("lst"); } List <OpcParameter> result = new List <OpcParameter>(); _theSrv.Browse(OPCBROWSETYPE.OPC_LEAF, out lst); if (lst.Count < 1) { return(result); } string[] istrs = new string[5]; OPCProperty[] props; OPCPropertyData[] propdata; int[] propertyIDs = new int[1]; for (int i = 0; i < lst.Count; i++) { lst[i] = string.Format("PLC.PLC.{0}", lst[i]); } // enum+add all item names to ListView //string[] itemstrings = new string[2]; //перебор списка имён переменных foreach (string item in lst) { OpcParameter parameterData = new OpcParameter(); string i = item; parameterData.ParameterName = i; //itemstrings[0] = item; //получение списка свойств переменной _theSrv.QueryAvailableProperties(i, out props); if (props == null) { continue; } // перебираем все свойства foreach (OPCProperty p in props) { // PropertyID == 2 - это свойство в котором хранится значение переменной if (p.PropertyID == 2) { propertyIDs[0] = p.PropertyID; //получение свойства _theSrv.GetItemProperties(i, propertyIDs, out propdata); parameterData.ParameterType = propdata[0].Data.GetType(); parameterData.ParameterValue = propdata[0].Data; } } result.Add(parameterData); } return(result); }