Пример #1
0
        /// <summary>
        /// 开始连续采集
        /// </summary>
        public void StartSerialSampple()
        {
            var thread = new Thread(() =>
            {
                int sampleCount      = 10 * 96 * 1000;
                int packetDataLength = 96 * 1000 / 20;

                double[] channelData1 = new double[sampleCount];
                double[] channelData2 = new double[sampleCount];

                double[] currentChannel1 = new double[packetDataLength];
                double[] currentChannel2 = new double[packetDataLength];

                int totalPacket   = sampleCount / packetDataLength;
                int currentPacket = 0;

                double value1 = 0.5;
                double value2 = 0.5;

                while (true)
                {
                    for (int i = 0; i < currentChannel1.Length; i++)
                    {
                        value1 += (randomNumber.NextDouble() / 1000) - 0.0005;
                        if (value1 > 1)
                        {
                            value1 = 1;
                        }
                        else if (value1 < 0)
                        {
                            value1 = 0;
                        }

                        currentChannel1[i] = value1;
                    }

                    for (int i = 0; i < currentChannel2.Length; i++)
                    {
                        value2 += (randomNumber.NextDouble() / 1000) - 0.0005;
                        if (value2 > 1)
                        {
                            value2 = 1;
                        }
                        else if (value2 < 0)
                        {
                            value2 = 0;
                        }

                        currentChannel2[i] = value2;
                    }

                    ScopeReadDataCompleted?.Invoke(this, new ScopeReadDataCompletedEventArgs(channelData1, channelData2, currentChannel1, currentChannel2, totalPacket, currentPacket % totalPacket + 1));
                    Thread.Sleep(1000 / 20);
                    currentPacket++;
                }
            });

            thread.IsBackground = true;
            thread.Start();
        }
Пример #2
0
 protected void OnScopeReadDataCompleted(double[] globalChannel1, double[] globalChannel2, double[] currentChannel1, double[] currentChannel2, int totalPacket, int currentPacket)
 {
     ScopeReadDataCompleted?.Invoke(this, new ScopeReadDataCompletedEventArgs(globalChannel1, globalChannel2, currentChannel1, currentChannel2, totalPacket, currentPacket));
 }