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); } }