public object RemoteRead() { var server = Parent.Parent as OpcServer; Trace.Assert(server != null); object result = null; try { if (server.RunMode != RunMode.Release) { throw new InvalidOperationException(GlobalId + "只能在发布模式下读取远程数据"); } object quality; object timestamp; _item?.Read((short)OPCDataSource.OPCDevice, out result, out quality, out timestamp); Trace.WriteLine(GlobalId + " : " + result); LocalWrite(result); } catch (Exception e) { result = null; LocalWrite(null); this.Error("读取失败, 错误原因:" + e); } return(result); }
/// <summary> /// 监视标签重载 /// </summary> /// <param name="itemName"></param> public void MonitorOPCItem(string itemName) { try { if (!this.clientHandleDict.ContainsKey(itemName)) { //var bro = this.opcServer.CreateBrowser(); //bro.ShowBranches(); //foreach (var branch in bro) //{ // Console.WriteLine(branch.ToString()); //} var index = this.clientNameList.Count; OPCAutomation.OPCItem tempItem = opcAGroup.OPCItems.AddItem(itemName, index); TagItem item = new TagItem() { Name = itemName, ClientHandler = index, //ClientHandler = itemIndex, ServerHandler = tempItem.ServerHandle, }; this.clientNameList.Add(itemName); this.clientHandleDict.Add(itemName, item); object value, timeStamp, quality; tempItem.Read(1, out value, out quality, out timeStamp); } } catch { } }
public OPCChangeModel ReadValue(string name) { if (this.clientHandleDict.ContainsKey(name)) { OPCAutomation.OPCItem item = opcAGroup.OPCItems.GetOPCItem(this.clientHandleDict[name].ServerHandler); object value, quality, timestamp; item.Read(2, out value, out quality, out timestamp); return(new OPCChangeModel() { Name = name, Quality = (TagQuality)((short)quality), Value = item.Value, TimeStamp = (DateTime)timestamp, }); } return(null); }