public static List <object> OPC_Read(List <string> ItemNames) { if (ItemNames == null || ItemNames.Count == 0) { return(null); } int count = ItemNames.Count; List <object> readRtn = new List <object>();//设置返回值数组 using (var srv = new OPCXML_DataAccess()) { ReadRequestItemList ItemLists = new ReadRequestItemList(); ItemLists.Items = new ReadRequestItem[count]; for (int i = 0; i < count; i++) { ItemLists.Items[i] = new ReadRequestItem(); ItemLists.Items[i].ItemPath = ""; ItemLists.Items[i].ItemName = ItemNames[i + 1]; } RequestOptions opt = new RequestOptions(); ReplyItemList ItemValues = new ReplyItemList();; OPCError[] Errors; opt.ReturnItemTime = true; srv.Read(opt, ItemLists, out ItemValues, out Errors); foreach (var p in ItemValues.Items) { readRtn.Add(p.Value); } } return(readRtn); }
public bool OPC_WritePoint(string ItemName, object value) { try { using (OPCXML_DataAccess srv = new OPCXML_DataAccess()) { WriteRequestItemList ItemLists = new WriteRequestItemList(); ItemLists.Items = new ItemValue[1]; ItemLists.Items[0] = new ItemValue(); ItemLists.Items[0].ItemPath = ""; ItemLists.Items[0].ItemName = ItemName; ItemLists.Items[0].Value = value; ItemLists.Items[0].TimestampSpecified = false; RequestOptions opt = new RequestOptions(); ReplyItemList ItemValues = new ReplyItemList(); OPCError[] Errors; opt.ReturnItemTime = true; ReplyBase replay = srv.Write(opt, ItemLists, true, out ItemValues, out Errors); if (replay.ServerState == serverState.failed || replay.ServerState == serverState.commFault) { return(false); } else { return(true); } } } catch (Exception) { return(false); } }
public bool OPC_WriteSerial(List <string> ItemNames, List <object> values) { try { using (OPCXML_DataAccess srv = new OPCXML_DataAccess()) { int count = ItemNames.Count; WriteRequestItemList ItemLists = new WriteRequestItemList(); ItemLists.Items = new ItemValue[count]; for (int i = 0; i < count; i++) { ItemLists.Items[i] = new ItemValue(); ItemLists.Items[i].ItemPath = ""; ItemLists.Items[i].ItemName = ItemNames[i]; ItemLists.Items[i].Value = values[i]; ItemLists.Items[i].TimestampSpecified = false; } RequestOptions opt = new RequestOptions(); ReplyItemList ItemValues = new ReplyItemList(); OPCError[] Errors; opt.ReturnItemTime = true; ReplyBase replay = srv.Write(opt, ItemLists, true, out ItemValues, out Errors); if (replay.ServerState == serverState.failed || replay.ServerState == serverState.commFault) { return(false); } else { return(true); } } } catch (Exception) { return(false); } }