Пример #1
0
 private void DecoderOnMessageDecoded(object sender, MessageDecodedEventArgs eventArgs)
 {
     if (eventArgs.Message != null)
     {
         try
         {
             if (eventArgs.Message is DataFrame dataFrame && dataFrame.Items != null)
             {
                 DataPointValue[] files = dataFrame.Items.Where(i => i is OPCUAFile)
                                          .ToArray();
                 foreach (OPCUAFile file in files)
                 {
                     dataFrame.Items.Remove(file);
                     FileReceived?.Invoke(this, new FileReceivedEventArgs(file, eventArgs.Topic, dataFrame.NetworkMessageHeader.PublisherID.Value));
                 }
                 if (dataFrame.Items.Count > 0)
                 {
                     MessageReceived?.Invoke(this, eventArgs);
                 }
             }
             else if (eventArgs.Message is MetaFrame metaFrame)
             {
                 MetaMessageReceived?.Invoke(this, eventArgs);
             }
             else
             {
                 UnknownMessageReceived?.Invoke(this, eventArgs);
             }
         }
Пример #2
0
        public void SendDataToApp(ProcessDataSet dataSet, string topic, string publisherId = null)
        {
            if (!string.IsNullOrEmpty(publisherId))
            {
                ClientId            = publisherId;
                dataSet.PublisherId = publisherId;
            }
            if (string.IsNullOrEmpty(topic))
            {
                topic = Settings.Client.DefaultPublisherTopicName;
                topic = Client.CreateTopicName(topic, ClientId, dataSet.GetWriterId(), "Meas", dataSet.GetDataSetType());
            }
            MessageDecodedEventArgs args = new MessageDecodedEventArgs(dataSet.GenerateDateFrame(), topic);

            MessageReceived?.Invoke(this, args);
        }
Пример #3
0
        public void OnMessageDecoded(object sender, MessageDecodedEventArgs eventArgs)
        {
            NetworkMessage parsedMessage = eventArgs.Message;

            if (parsedMessage == null ||
                (parsedMessage.NetworkMessageHeader.ExtendedFlags2.MessageType != MessageType.DataSetMessage &&
                 parsedMessage.NetworkMessageHeader.ExtendedFlags2.MessageType != MessageType.DiscoveryResponse))
            {
                return;
            }
            if (parsedMessage.NetworkMessageHeader == null)
            {
                return;
            }
            string    publisherID = parsedMessage.NetworkMessageHeader.PublisherID.Value;
            Publisher publisher   = new Publisher
            {
                PublisherID = publisherID
            };

            if (parsedMessage is ChunkedMessage chunkMessage)
            {
                publisher.DataSetWriterID = chunkMessage.PayloadHeader.DataSetWriterID;
                publisher.NumberOfChunkedMessage++;
            }
            if (parsedMessage is DataFrame dataMessage)
            {
                publisher.DataSetWriterID = dataMessage.PayloadHeader.DataSetWriterID[0];
                if (dataMessage.Flags2?.DataSetMessageType == DataSetMessageTypeEnum.KeepAlive)
                {
                    publisher.NumberOfKeepAliveMessages++;
                }
                else
                {
                    publisher.Major = dataMessage.ConfigurationVersion.Major;
                    publisher.Minor = dataMessage.ConfigurationVersion.Minor;
                }
            }
            if (parsedMessage is MetaFrame metaMessage)
            {
                InitDetailsFromMeta(metaMessage);
                publisher.Major           = metaMessage.ConfigurationVersion.Major;
                publisher.Minor           = metaMessage.ConfigurationVersion.Minor;
                publisher.DataSetWriterID = metaMessage.DataSetWriterID;
                publisher.NumberOfMetaMessages++;
            }
            if (parsedMessage is KeyFrame keyMessage)
            {
                DataPointCollection dp = new DataPointCollection
                {
                    PublisherID     = publisherID,
                    Values          = keyMessage.Items,
                    DataSetWriterID = keyMessage.PayloadHeader.DataSetWriterID[0],
                    Timestamp       = keyMessage.Timestamp.ToFileTime()
                };
                m_ValueQueue.Add(dp);
                publisher.DataSetWriterID = keyMessage.PayloadHeader.DataSetWriterID[0];
                publisher.NumberOfKeyMessages++;
                publisher.Timestamp = keyMessage.Timestamp;
            }
            if (parsedMessage is DeltaFrame deltaMessage)
            {
                DataPointCollection dp = new DataPointCollection
                {
                    PublisherID     = publisherID,
                    Values          = deltaMessage.Items,
                    DataSetWriterID = deltaMessage.PayloadHeader.DataSetWriterID[0],
                    Timestamp       = deltaMessage.Timestamp.ToFileTime()
                };
                m_ValueQueue.Add(dp);
                publisher.DataSetWriterID = deltaMessage.PayloadHeader.DataSetWriterID[0];
                publisher.NumberOfDeltaMessages++;
                publisher.Timestamp = deltaMessage.Timestamp;
            }
            m_PublisherQueue.Add(publisher);
        }