Exemple #1
0
        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
        }
Exemple #2
0
        /// <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);
        }