예제 #1
0
        private void HandleVibrationMessage(VibrationMessage message)
        {
            double frequencyInterval = message.SampleFre / message.SamplePoint;
            int    length            = (int)(message.SamplePoint / 2.56) + 1;

            double[] frequency = new double[length];
            //if (message.Frequency==null || message.Frequency.Length!=length)
            //{
            //    message.Frequency = new double[length];
            //    message.Amplitude = new double[length];
            //    message.Phase = new double[length];
            //}
            for (int i = 0; i < length; i++)
            {
                frequency[i] = frequencyInterval * i;
            }

            var output    = Algorithm.Instance.FFT2AndPhaseAction(message.VData, message.SamplePoint);
            var updateMsg = message.UpdateFFT(frequency, output[0].Take(length).ToArray(), output[1].Take(length).ToArray());

            foreach (var sub in _subscriptions)
            {
                sub.Tell(updateMsg);
            }
            foreach (var linker in _linkList)
            {
                linker.Tell(updateMsg);
            }
        }