private void WriteTag_ValueChanged(object sender, OpcDataChangeEventArgs e) { var monitoredNode = (OpcMonitoredItem)sender; var nodeValue = (bool)Client.ReadNode(monitoredNode.NodeId).Value; int stationNum = int.Parse(monitoredNode.NodeId.ToString() .Remove(0, 42).Substring( monitoredNode.NodeId.ToString() .Remove(0, 42).IndexOf("_", 0, StringComparison.Ordinal) + 1, 1)); if (!nodeValue) // False { return; } #region Write to OPC UA var tagNodeId = new OpcNodeId("2:RFID_Communications.RFID Readers.Station_" + stationNum + "_Tag"); var reader = Program.RfidReaders.FirstOrDefault(i => i.ReaderName == "Station" + stationNum); if (reader == null) { return; } var guid = Program.RfidReaders.First(i => i.ReaderName == "Station" + stationNum).WriteEpc(); Client.WriteNode(monitoredNode.NodeId, false); Client.WriteNode(tagNodeId, guid); #endregion Write to OPC UA }
/// <summary> /// Read Tag Value when OPC triggered to true /// </summary> /// <param name="sender">Of type <see cref="OpcMonitoredItem"/></param> /// <param name="e"> Not Implimented</param> private static void ReadTag_ValueChanged(object sender, OpcDataChangeEventArgs e) { var monitoredNode = (OpcMonitoredItem)sender; var nodeValue = (bool)Client.ReadNode(monitoredNode.NodeId).Value; int stationNum = int.Parse(monitoredNode.NodeId.ToString() .Remove(0, 42).Substring( monitoredNode.NodeId.ToString() .Remove(0, 42).IndexOf("_", 0, StringComparison.Ordinal) + 1, 1)); Console.WriteLine("Node {0} Value Changed: {1}", monitoredNode.NodeId, nodeValue); if (!nodeValue || Program.RfidReaders.Count == 0) { return; } var reader = Program.RfidReaders.FirstOrDefault(i => i.ReaderName == ("Station" + stationNum)); if (reader == null) { return; } var epcId = reader.ReadEpc(); if (epcId == null) { Client.WriteNode("2:RFID_Communications.RFID Readers.Station_" + stationNum + "_Tag", ""); } else { Client.WriteNode("2:RFID_Communications.RFID Readers.Station_" + stationNum + "_Tag", epcId); } Client.WriteNode(monitoredNode.NodeId, false); }