/// <summary> /// 从默认的OPC项读取值 /// </summary> /// <param name="value">待读取的值</param> /// <param name="message">返回的错误信息</param> public bool ReadItemValue(out string value, out string message) { value = string.Empty; try { if (DefaultGroupInfo == null) { message = "未找到默认组"; return(false); } if (!DefaultGroupInfo.ReadValues(out message)) { return(false); } if (DefaultGroupInfo.ItemCount > 0) { value = DefaultGroupInfo.ListItemInfo.Last().Value; } GC.Collect(); } catch (Exception ex) { message = string.Format("从服务端句柄为{0}、标签ID为{1}的标签读取值失败:{2}", ItemHandleServer, ItemId, ex.Message); return(false); } return(true); }
/// <summary> /// 向默认的OPC项写入值 /// </summary> /// <param name="value">待写入的值</param> /// <param name="message">返回的错误信息</param> public bool WriteItemValue(string value, out string message) { try { if (DefaultGroupInfo == null) { message = "未找到默认组"; return(false); } if (DefaultGroupInfo.ItemCount > 0) { DefaultGroupInfo.ListItemInfo.Last().Value = value; } if (!DefaultGroupInfo.WriteValues(out message)) { return(false); } GC.Collect(); } catch (Exception ex) { message = string.Format("向服务端句柄为{0}的标签写入值{1}失败:{2}", ItemHandleServer, value, ex.Message); return(false); } return(true); }
/// <summary> /// 设置默认的OPC项,假如已添加,则移除后再重新添加(同一时刻默认标签只有一个) /// </summary> /// <param name="itemId">标签ID</param> /// <param name="clientHandle">标签的客户端句柄</param> /// <param name="message">返回的错误信息</param> /// <returns></returns> public bool SetItem(string itemId, int clientHandle, out string message) { try { if (DefaultGroupInfo == null) { message = "未找到默认组"; return(false); } //初始化OPC项信息并在默认OPC组中添加 List <OpcItemInfo> list = new List <OpcItemInfo>() { new OpcItemInfo(itemId, clientHandle) }; DefaultGroupInfo.SetItems(list, out message); if (DefaultGroupInfo.ItemCount > 0) { OpcItemInfo item = DefaultGroupInfo.ListItemInfo.Last(); //保存默认OPC项的客户端句柄,服务端句柄,标签名称 ItemHandleClient = item.ClientHandle; ItemId = item.ItemId; ItemHandleServer = item.ServerHandle; } } catch (Exception ex) { ItemHandleClient = 0; message = "移除或添加标签时发生错误:" + ex.Message; return(false); } return(true); }