Ejemplo n.º 1
0
 void _notify_Sample(object sender, SampleEventArgs e)
 {
     if (SampleReceived != null)
     {
         SampleReceived.Invoke(this, e);
     }
 }
Ejemplo n.º 2
0
 public void Stop()
 {
     _timerToken?.Stop();
     _timerToken      = null;
     SamplesGenerated = 0;
     SampleReceived?.Invoke(this, null);
 }
Ejemplo n.º 3
0
        private void ProcessSampleResponse(string xml)
        {
            if (!string.IsNullOrEmpty(xml))
            {
                // Process MTConnectStreams Document
                var doc = MTConnectStreams.Document.Create(xml);
                if (doc != null)
                {
                    int itemCount = -1;
                    if (doc.DeviceStreams.Count > 0)
                    {
                        List <MTConnectStreams.DeviceStream> deviceStreams = null;
                        if (!string.IsNullOrEmpty(DeviceName))
                        {
                            var deviceStream = doc.DeviceStreams.Find(o => o.Name == DeviceName);
                            if (deviceStream != null)
                            {
                                deviceStreams = new List <MTConnectStreams.DeviceStream>();
                                deviceStreams.Add(deviceStream);
                            }
                        }
                        else
                        {
                            deviceStreams = doc.DeviceStreams;
                        }
                        //var deviceStream = doc.DeviceStreams.Find(o => o.Name == DeviceName);
                        if (deviceStreams != null && deviceStreams.Count > 0)
                        {
                            foreach (var deviceStream in doc.DeviceStreams)
                            {
                                if (deviceStream != null && deviceStream.DataItems != null)
                                {
                                    CheckAssetChanged(deviceStream.DataItems);

                                    // Get number of DataItems returned by Sample
                                    itemCount = deviceStream.DataItems.Count;

                                    SampleRange.From += itemCount;
                                    SampleRange.To    = doc.Header.NextSequence;

                                    SampleReceived?.Invoke(doc);
                                }
                            }
                        }
                    }
                }
                else
                {
                    // Process MTConnectError Document (if MTConnectDevices fails)
                    var errorDoc = MTConnectError.Document.Create(xml);
                    if (errorDoc != null)
                    {
                        Error?.Invoke(errorDoc);
                    }
                }
            }
        }
Ejemplo n.º 4
0
 private void ControllerOnSampleReceived(object sender, SourcedSampleReceivedEventArgs e)
 {
     if (e.Address.Equals(GetAddressInternal()))
     {
         SampleReceived?.Invoke(this,
                                new SampleReceivedEventArgs(e.DigitalChannels, e.DigitalSampleState, e.AnalogChannels,
                                                            e.AnalogSamples));
     }
 }
Ejemplo n.º 5
0
        private void Do()
        {
            var sample = _sampleGenerator.GenerateSample(_previousSamples);

            SamplesGenerated++;
            _previousSamples.Add(sample);
            SampleReceived?.Invoke(this, sample);
            _outputter.WriteSample(_destination, sample);
        }
Ejemplo n.º 6
0
        private void OnFrameReceived(object sender, FrameReceivedEventArgs e)
        {
            FrameContent content = e.FrameContent;

            if (content is ModemStatusFrame)
            {
                var modemStatusFrame = content as ModemStatusFrame;

                _modemResetTaskCompletionSource?.SetResult(modemStatusFrame.ModemStatus);
            }
            else if (content is CommandResponseFrameContent)
            {
                var commandResponse = content as CommandResponseFrameContent;

                byte frameId = commandResponse.FrameId;

                TaskCompletionSource <CommandResponseFrameContent> taskCompletionSource;
                if (ExecuteTaskCompletionSources.TryRemove(frameId, out taskCompletionSource))
                {
                    taskCompletionSource.SetResult(commandResponse);
                }
                else
                {
                    Action <CommandResponseFrameContent> callback;
                    if (ExecuteCallbacks.TryGetValue(frameId, out callback))
                    {
                        callback(commandResponse);
                    }
                }
            }
            else if (content is IRxIndicatorDataFrame)
            {
                var         dataFrame = content as IRxIndicatorDataFrame;
                NodeAddress address   = dataFrame.GetAddress();

                _receivedDataSource.Push(new SourcedData(address, dataFrame.Data));

                DataReceived?.Invoke(this, new SourcedDataReceivedEventArgs(address, dataFrame.Data));
            }
            else if (content is IRxIndicatorSampleFrame)
            {
                var         sampleFrame = content as IRxIndicatorSampleFrame;
                NodeAddress address     = sampleFrame.GetAddress();
                Sample      sample      = sampleFrame.GetSample();

                _sampleSource.Push(new SourcedSample(address, sample));

                SampleReceived?.Invoke(this,
                                       new SourcedSampleReceivedEventArgs(address, sample.DigitalSampleState, sample.AnalogSamples));
            }
        }
Ejemplo n.º 7
0
        private void ProcessSampleResponse(string xml)
        {
            if (!string.IsNullOrEmpty(xml) && !stop.WaitOne(0, true))
            {
                // Process MTConnectStreams Document
                var doc = MTConnectStreams.Document.Create(xml);
                if (doc != null)
                {
                    int itemCount = -1;
                    if (doc.DeviceStreams.Count > 0)
                    {
                        MTConnectStreams.DeviceStream deviceStream = null;

                        // Get the DeviceStream for the DeviceName or default to the first
                        if (!string.IsNullOrEmpty(DeviceName))
                        {
                            deviceStream = doc.DeviceStreams.Find(o => o.Name == DeviceName);
                        }
                        else
                        {
                            deviceStream = doc.DeviceStreams[0];
                        }

                        if (deviceStream != null & deviceStream.DataItems != null)
                        {
                            CheckAssetChanged(deviceStream.DataItems);

                            // Get number of DataItems returned by Sample
                            itemCount = deviceStream.DataItems.Count;

                            SampleRange.From += itemCount;
                            SampleRange.To    = doc.Header.NextSequence;

                            SampleReceived?.Invoke(doc);
                        }
                    }
                }
                else
                {
                    // Process MTConnectError Document (if MTConnectDevices fails)
                    var errorDoc = MTConnectError.Document.Create(xml);
                    if (errorDoc != null)
                    {
                        Error?.Invoke(errorDoc);
                    }
                }
            }
        }
Ejemplo n.º 8
0
            private void Stream_GroupReceived(string json)
            {
                var obj = Json.Convert.FromJson <Data.ReturnedSample>(json);

                if (obj != null)
                {
                    var sample = new Data.Sample();
                    sample.AgentInstanceId = obj.AgentInstanceId;
                    sample.CDATA           = obj.CDATA;
                    sample.Condition       = obj.Condition;
                    sample.DeviceId        = obj.DeviceId;
                    sample.Id        = obj.Id;
                    sample.Sequence  = obj.Sequence;
                    sample.Timestamp = obj.Timestamp;
                    SampleReceived?.Invoke(sample);
                }
            }
Ejemplo n.º 9
0
 protected void OnSampleReceived()
 {
     SampleReceived?.Invoke(this, EventArgs.Empty);
 }
Ejemplo n.º 10
0
        private void OnFrameReceived(object sender, FrameReceivedEventArgs e)
        {
            var content = e.FrameContent;

            if (content is ModemStatusFrame)
            {
                var modemStatusFrame = content as ModemStatusFrame;

                _modemResetTaskCompletionSource?.SetResult(modemStatusFrame.ModemStatus);
            }
            else if (content is CommandResponseFrameContent)
            {
                var commandResponse = content as CommandResponseFrameContent;

                var frameId = commandResponse.FrameId;

                TaskCompletionSource <CommandResponseFrameContent> taskCompletionSource;
                if (ExecuteTaskCompletionSources.TryRemove(frameId, out taskCompletionSource))
                {
                    taskCompletionSource.SetResult(commandResponse);
                }
                else
                {
                    Action <CommandResponseFrameContent> callback;
                    if (ExecuteCallbacks.TryGetValue(frameId, out callback))
                    {
                        callback(commandResponse);
                    }
                }
            }
            else if (content is IRxIndicatorDataFrame)
            {
                var dataFrame = content as IRxIndicatorDataFrame;
                var address   = dataFrame.GetAddress();

                _receivedDataSource.Push(new SourcedData(address, dataFrame.Data));

                DataReceived?.Invoke(this, new SourcedDataReceivedEventArgs(address, dataFrame.Data));
            }
            else if (content is IRxIndicatorSampleFrame)
            {
                var sampleFrame = content as IRxIndicatorSampleFrame;
                var address     = sampleFrame.GetAddress();
                var sample      = sampleFrame.GetSample();

                _sampleSource.Push(new SourcedSample(address, sample));

                SampleReceived?.Invoke(this,
                                       new SourcedSampleReceivedEventArgs(address, sample.DigitalChannels, sample.DigitalSampleState,
                                                                          sample.AnalogChannels, sample.AnalogSamples));
            }
            else if (content is SensorReadIndicatorFrame)
            {
                var sensorFrame  = content as SensorReadIndicatorFrame;
                var sensorSample = new SensorSample(sensorFrame.OneWireSensor,
                                                    sensorFrame.SensorValueA,
                                                    sensorFrame.SensorValueB,
                                                    sensorFrame.SensorValueC,
                                                    sensorFrame.SensorValueD,
                                                    sensorFrame.TemperatureCelsius);

                var address = sensorFrame.GetAddress();

                SensorSampleReceived?.Invoke(this,
                                             new SourcedSensorSampleReceivedEventArgs(address, sensorSample.OneWireSensor,
                                                                                      sensorSample.SensorValueA, sensorSample.SensorValueB, sensorSample.SensorValueC,
                                                                                      sensorSample.SensorValueD, sensorSample.TemperatureCelsius));
            }
            else if (content is RxSmsFrame)
            {
                var smsFrame = content as RxSmsFrame;

                SmsReceived?.Invoke(this, new SmsReceivedEventArgs(smsFrame.PhoneNumber, smsFrame.Message));
            }
            else if (content is RxIPv4Frame)
            {
                var ipv4Frame = content as RxIPv4Frame;
                var address   = new IPAddress(ipv4Frame.SourceAddress);

                InternetDataReceived?.Invoke(this,
                                             new InternetDataReceivedEventArgs(address, ipv4Frame.DestinationPort, ipv4Frame.SourcePort,
                                                                               ipv4Frame.Protocol, ipv4Frame.Data));
            }
        }