Esempio n. 1
0
        private void Device_OnPacketArrival(object sender, CaptureEventArgs e)
        {
            var time = e.Packet.Timeval.Date;
            var len  = e.Packet.Data.Length;

            OpcPacket packet = new OpcPacket().Parse(e.Packet);

            if (packet != null)
            {
                Log.Information("OPC Packet Transfer. ID: {0} Type: {1} Direction: {2}", packet.SecuritySequenceNumber, packet.OpcMessage.ToString(), packet.Direction);

                if (ResponseToRequest(packet))
                {
                    var diff = packet.Time - lastPacket.Time;
                    if (diff > 100000)
                    {
                        return;
                    }

                    OpcConversation conv = new OpcConversation(lastPacket, packet);
                    Prom.UpdateMetrics(conv);
                }

                lastPacket = packet;
            }
        }
Esempio n. 2
0
        public void UpdateMetrics(OpcConversation conv)
        {
            string measurement    = conv.GetMessageType().ToString();
            ulong  timedifference = conv.CalculateTimeDifference();
            long   timestamp      = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

            switch (conv.GetMessageType())
            {
            case OpcMessageType.ReadResponse:
                ReadRequest.Set(timedifference);
                break;

            case OpcMessageType.BrowseResponse:
                BrowseRequest.Set(timedifference);
                break;

            case OpcMessageType.CallResponse:
                CallRequest.Set(timedifference);
                break;
            }
            ReadRequest.Set(timedifference);
        }