Beispiel #1
0
        //private void startMessure(FreqNavBar fnb)
        //{
        //    if (Sensor.IsUseSensor)
        //    {
        //        _proc = CallBack;
        //        AgilentDll.Sensor.SendWbqexCmd(Convert.ToDouble(fnb.FreqStart) * 1000000.0, Convert.ToDouble(fnb.FreqStop) * 1000000.0, Convert.ToDouble(fnb.BandWidth) * 1000.0, _proc);
        //        return;
        //    }
        //}

        private int CallBack(ref AgilentDll.Sensor.SegmentData segData, IntPtr data)
        {
            if (segData.errorNum != AgilentDll.Sensor.SalError.SAL_ERR_NONE)
            {
                return(-1);
            }

            FreqDataTemplate FreqData = new FreqDataTemplate();

            FreqData.FreqCount   = Convert.ToInt32(segData.numPoints);
            FreqData.MeasureTime = DateTime.Now;
            FreqData.StartFreq   = segData.startFrequency;
            FreqData.StepValue   = segData.frequencyStep;
            FreqData.segData     = segData;
            FreqData.volList     = new float[segData.numPoints];
            System.Runtime.InteropServices.Marshal.Copy(data, FreqData.volList, 0, Convert.ToInt32(segData.numPoints));

            //CurrentFreqFrameItem.FreqDataItemList.Add(FreqData);


            FreqLineDataItem FreqShowData = new FreqLineDataItem();

            FreqShowData.byteArray = new float[segData.numPoints];
            System.Runtime.InteropServices.Marshal.Copy(data, FreqShowData.byteArray, 0, Convert.ToInt32(segData.numPoints));
            FreqShowData.frequencyStep  = segData.frequencyStep;
            FreqShowData.startFrequency = segData.startFrequency;

            //_LineChartViewModel.InsertShowData(FreqShowData);

            return(0);
        }
Beispiel #2
0
        //private Random random = new Random();

        private bool UpdateChartData_bak(FreqLineDataItem item)
        {
            int    FreqMeasureId       = item.FreqMeasureId;
            int    FreqMeasurePakageId = item.FreqMeasurePakageId;
            double startFrequency      = item.startFrequency;
            double frequencyStep       = item.frequencyStep;

            float[] byteArray = item.byteArray;

            DispatcherHelper.CheckBeginInvokeOnUI(() =>
            {
                if (FreqMeasureId == 1)
                {
                    pakagLength.Add(byteArray.Length);
                    for (int i = 0; i < byteArray.Length; i++)
                    {
                        x.Add(startFrequency + frequencyStep * i);
                        y.Add(byteArray[i] + 107);
                    }
                }
                else
                {
                    for (int i = 0; i < byteArray.Length; i++)
                    {
                        int baseIndex    = GetPacageIndex(FreqMeasurePakageId);
                        x[i + baseIndex] = (startFrequency + frequencyStep * i);
                        y[i + baseIndex] = (byteArray[i] + 107);
                    }
                }
                ys.RaiseDataChanged();
                xs.RaiseDataChanged();
            });

            return(true);
        }
 public void UpdateRtFreqDataModel(FreqLineDataItem segData)
 {
     RtFreqDataModel.FreqMeasureNO      = string.Format("{0}-{1}-{2}", FreqMeasureId, FreqMeasurePakageId, FreqDataIndex);
     RtFreqDataModel.FreqDataUpdateTime = DateTime.Now.ToLongTimeString();
     RtFreqDataModel.frequencyStep      = segData.frequencyStep;
     RtFreqDataModel.startFrequency     = segData.startFrequency / 1000000.0;
     RtFreqDataModel.FreqDataCount      = (uint)segData.byteArray.Length;
 }
Beispiel #4
0
        public bool UpdateChartData(FreqLineDataItem item)
        {
            int    FreqMeasureId       = item.FreqMeasureId;
            int    FreqMeasurePakageId = item.FreqMeasurePakageId;
            double startFrequency      = item.startFrequency;
            double frequencyStep       = item.frequencyStep;

            float[] byteArray = item.byteArray;

            DispatcherHelper.CheckBeginInvokeOnUI(() =>
            {
                if (FreqMeasureId == 1)
                {
                    pakagLength.Add(byteArray.Length);
                    pointTotleCount += byteArray.Length;
                }
                else if (FreqMeasureId == 2)
                {
                    if (FreqMeasurePakageId == 1)
                    {
                        //初始化谱图
                        BestFreqDataItem bestItem = new BestFreqDataItem();
                        bestItem.FreqStep         = item.frequencyStep;
                        bestItem.FreqTotolCount   = pointTotleCount;
                        bestItem.TestFreqStart    = item.TestFreqStart * 1000 * 1000.0;
                        bestItem.TestFreqEnd      = item.TestFreqEnd * 1000 * 1000.0;

                        Messenger.Default.Send <GenericMessage <BestFreqDataItem> >(new GenericMessage <BestFreqDataItem>(this, bestItem));
                    }
                }

                else
                {
                    int baseIndex             = GetPacageIndex(FreqMeasurePakageId);
                    BestFreqDataItem bestItem = new BestFreqDataItem();
                    bestItem.FreqStep         = item.frequencyStep;
                    bestItem.FreqTotolCount   = pointTotleCount;
                    bestItem.TestFreqStart    = item.TestFreqStart * 1000 * 1000.0;
                    bestItem.TestFreqEnd      = item.TestFreqEnd * 1000 * 1000.0;
                    bestItem.SecFreqStart     = item.startFrequency;
                    bestItem.SecDataIndex     = baseIndex;

                    bestItem.pointNums = item.byteArray.Length;
                    bestItem.data      = new short[byteArray.Length];

                    for (int i = 0; i < byteArray.Length; i++)
                    {
                        float a          = byteArray[i] + 107;
                        bestItem.data[i] = (short)((a));
                    }

                    Messenger.Default.Send <GenericMessage <BestFreqDataItem> >(new GenericMessage <BestFreqDataItem>(this, bestItem));
                }
            });

            return(true);
        }
Beispiel #5
0
        private void MySendOrPostCallback(object obj)
        {
            FreqLineDataItem item = obj as FreqLineDataItem;

            UpdateChartData(item);
            if (_FreqDataCollectViewModel != null)
            {
                _FreqDataCollectViewModel.UpdateRtFreqDataModel(item);
            }
        }
Beispiel #6
0
        /// <summary>
        /// 保存采集数据索引
        /// </summary>
        /// <param name="fldi"></param>
        public void saveSqliteIndex(FreqLineDataItem fldi)
        {
            DateTime startTime = DateTime.Now;
            DateTime endTime   = startTime.AddMinutes(15);

            fileAddr = "freqData" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".dat";
            string        sqls     = string.Format("INSERT INTO FreqCollectionIndex(StartTime, EndTime,MeasureID,StartFreq,EndFreq,Step,FileAddr,CurrentActivityGuid,CurrentActivityName,CurrentActivityPlaceGuid,CurrentActivityPlaceName) VALUES ('{0}','{1}','{2}',{3},{4},{5},'{6}','{7}','{8}','{9}','{10}')", startTime.ToString("s"), endTime.ToString("s"), MeasureID, fldi.TestFreqStart, fldi.TestFreqEnd, fldi.frequencyStep, fileAddr, LoginService.CurrentActivity.Guid, LoginService.CurrentActivity.Name, LoginService.CurrentActivityPlace.Guid, LoginService.CurrentActivityPlace.Name);
            SQLiteCommand commands = new SQLiteCommand(sqls, con);

            commands.ExecuteNonQuery();
            //con.Close();
        }
Beispiel #7
0
        public void InsertShowData(FreqLineDataItem data)
        {
            //lock (lockObj)
            //{
            //    FreqLineDataItemBuffer.Enqueue(data);
            //}

            lock (FreqLineDataItemBuffer)
            {
                FreqLineDataItemBuffer.Enqueue(data);
                Monitor.Pulse(FreqLineDataItemBuffer);
            }
        }
Beispiel #8
0
        /// <summary>
        /// 保存采集数据
        /// </summary>
        /// <param name="freqData"></param>
        /// <param name="fldi"></param>
        public void saveFreqData(float[] freqData, FreqLineDataItem fldi)
        {
            if (flag == 0)
            {
                saveSqliteIndex(fldi);
                flag++;
            }
            MemoryStream _stream = new MemoryStream();

            for (int i = 0; i < freqData.Length; i++)
            {
                _stream.Write(BitConverter.GetBytes(freqData[i]), 0, sizeof(float));
            }
            byte[] myByte = _stream.ToArray();
            //string msg = freqData.ToArray().ToString();
            string path = Application.StartupPath + "/SqliteData/" + fileAddr;

            using (FileStream fsWrite = new FileStream(path, FileMode.Append))
            {
                fsWrite.Write(myByte, 0, myByte.Length);
            };
        }
Beispiel #9
0
        public void InitChart()
        {
            xs = new EnumerableDataSource <double>(y);
            xs.SetYMapping(_y => _y);
            ys            = new EnumerableDataSource <double>(x);
            this.dateAxis = new HorizontalDateTimeAxis();
            ys.SetXMapping(t_y => t_y);
            CompositeDataSource ds = new CompositeDataSource(xs, ys);
            LineGraphViewModel  lineGraphViewModel = new LineGraphViewModel();

            lineGraphViewModel.PointDataSource = ds;
            this.editedDs                    = ds;
            lineGraphViewModel.Name          = "频谱曲线";
            lineGraphViewModel.Color         = Color.FromRgb(255, 0, 0);
            lineGraphViewModel.EntityId      = Guid.NewGuid();
            lineGraphViewModel.LineAndMarker = false;
            lineGraphViewModel.Thickness     = 1;

            this.LineGraphs.Add(lineGraphViewModel);

            _uiContext.Send(o =>
            {
                ThreadShowOperator = new Thread(new ThreadStart(() =>
                {
                    while (true)
                    {
                        lock (FreqLineDataItemBuffer)
                        {
                            if (FreqLineDataItemBuffer.Count > 0)
                            {
                                FreqLineDataItem item = FreqLineDataItemBuffer.Dequeue();
                                _uiContext.Post(MySendOrPostCallback, item);
                                Monitor.Pulse(FreqLineDataItemBuffer);
                            }
                            else
                            {
                                Monitor.Wait(FreqLineDataItemBuffer);
                            }
                        }
                    }
                }))
                {
                    IsBackground = true
                };
                ThreadShowOperator.Start();
            }, null);
            //BackgroundWorker backgroundWorker = new BackgroundWorker();
            //backgroundWorker.DoWork +=(o,ea)=>
            //{
            //    try{
            //        while (true)
            //        {
            //            lock (FreqLineDataItemBuffer)
            //            {
            //                if (FreqLineDataItemBuffer.Count > 0)
            //                {
            //                    FreqLineDataItem item = FreqLineDataItemBuffer.Dequeue();
            //                    //UpdateChartData(item);
            //                    _uiContext.Send(MySendOrPostCallback, item);
            //                    Monitor.Pulse(FreqLineDataItemBuffer);
            //                }
            //                else
            //                {
            //                    Monitor.Wait(FreqLineDataItemBuffer);
            //                }
            //            }
            //        }
            //    }
            //    catch(Exception e)
            //    {

            //    }
            //};

            //backgroundWorker.RunWorkerCompleted += (o, ea) =>
            //{

            //};

            //backgroundWorker.RunWorkerAsync();
            //ThreadPool.QueueUserWorkItem(
            //  o =>
            //  {
            //      while (true)
            //      {
            //          lock (FreqLineDataItemBuffer)
            //          {
            //              if (FreqLineDataItemBuffer.Count > 0)
            //              {
            //                  FreqLineDataItem item = FreqLineDataItemBuffer.Dequeue();
            //                  UpdateChartData(item);
            //                  Monitor.Pulse(FreqLineDataItemBuffer);
            //              }
            //              else
            //              {
            //                  Monitor.Wait(FreqLineDataItemBuffer);
            //              }
            //          }
            //      }
            //  });
        }
Beispiel #10
0
        private bool UpdateChartData_bak2(FreqLineDataItem item)
        {
            int    FreqMeasureId       = item.FreqMeasureId;
            int    FreqMeasurePakageId = item.FreqMeasurePakageId;
            double startFrequency      = item.startFrequency;
            double frequencyStep       = item.frequencyStep;

            float[] byteArray = item.byteArray;

            DispatcherHelper.CheckBeginInvokeOnUI(() =>
            {
                if (FreqMeasureId == 1)
                {
                    if (FreqMeasurePakageId == 1)
                    {
                        double pointCount = (item.TestFreqEnd * 1000 * 1000.0 - item.TestFreqStart * 1000 * 1000.0) / item.frequencyStep;
                        myCount           = Convert.ToInt32(Math.Ceiling(pointCount));
                        if (myCount > 450)
                        {
                            myCount = 450;
                        }
                        myStep      = (item.TestFreqEnd * 1000 * 1000.0 - item.TestFreqStart * 1000 * 1000.0) / myCount;
                        myStepCount = Convert.ToInt32(myStep / item.frequencyStep);

                        //for (int i = 0; i < myCount; i++)
                        //{
                        //    x.Add(0);
                        //    y.Add(0);
                        //}
                    }
                    pakagLength.Add(byteArray.Length);
                }
                else
                {
                    for (int i = 0; i < byteArray.Length; i++)
                    {
                        int baseIndex = GetPacageIndex(FreqMeasurePakageId);

                        int tempIndex = (baseIndex + i) / myStepCount;
                        if ((baseIndex + i) % myStepCount == 0)
                        {
                            if (tempIndex < myCount)
                            {
                                if (x.Count <= tempIndex)
                                {
                                    x.Add(startFrequency + frequencyStep * i);
                                    y.Add(byteArray[i] + 107);
                                }
                                else
                                {
                                    x[tempIndex] = (startFrequency + frequencyStep * i);
                                    y[tempIndex] = (byteArray[i] + 107);
                                }
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
                ys.RaiseDataChanged();
                xs.RaiseDataChanged();
            });

            return(true);
        }
Beispiel #11
0
        private void ShowChartAndData()
        {
            if (_currentPlan == null || String.IsNullOrEmpty(_monitorPlanID))
            {
                return;
            }
            List <Data.Collection.AnalysisResult> legalSignals      = null;
            List <Data.Collection.AnalysisResult> illegalitySignals = null;
            FreqLineDataItem spectrumData = null;

            var backbroudWorker = new BackgroundWorker();

            backbroudWorker.DoWork += ((s, p) =>
            {
                //合法信号
                legalSignals = PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA_Collection, List <Data.Collection.AnalysisResult> >(channel =>
                {
                    return(channel.GetRealTimeMonitorAnalysis(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlanID, '0'));
                });

                //冲突信号
                illegalitySignals = PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA_Collection, List <Data.Collection.AnalysisResult> >(channel =>
                {
                    return(channel.GetRealTimeMonitorAnalysis(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlanID, '1'));
                });

                //谱图数据
                spectrumData = PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA_Collection, FreqLineDataItem>(channel =>
                {
                    return(channel.GetSpectrumData(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlanID));
                });
            });
            backbroudWorker.RunWorkerCompleted += ((s, p) =>
            {
                gridControl_freqInfo1.ItemsSource = legalSignals;
                gridControl_freqInfo.ItemsSource = illegalitySignals;

                if (spectrumData != null)
                {
                    double startFreq = spectrumData.TestFreqStart * 1000000;
                    double endFreq = spectrumData.TestFreqEnd * 1000000;
                    uint count = (uint)(1 + (endFreq - startFreq) / spectrumData.frequencyStep);
                    var values = FloatArrayToShortArray(spectrumData.byteArray);

                    {
                        x_widebandFreq.Clear();
                        x_widebandFreq.InitSpectrumProperty(null, null, startFreq, endFreq);
                        count = count > (uint)values.Count() ? (uint)values.Count() : count;
                        x_widebandFreq.Initializers(startFreq, spectrumData.frequencyStep, Convert.ToInt32(count));
                    }

                    x_widebandFreq.DrawLine(spectrumData.TestFreqStart * 1000000, spectrumData.frequencyStep, spectrumData.TestFreqStart * 1000000, spectrumData.frequencyStep, values, 0, Colors.Green, Best.VWPlatform.Controls.Freq.SpectrumLineType.Wave);
                }
                else
                {
                    x_widebandFreq.Clear();
                    x_widebandFreq.MeasureUnit = "dBμV";
                    x_widebandFreq.InitSpectrumProperty(null, null, 30000000, 30000000000);
                }
                x_widebandFreq.Update();
            });
            backbroudWorker.RunWorkerAsync();
        }
Beispiel #12
0
        private void Timer_Tick(object sender, EventArgs e)
        {
            bool isFirst = false;

            if (_timer.Interval.TotalMilliseconds != 5000)
            {
                isFirst         = true;
                _timer.Interval = TimeSpan.FromMilliseconds(5000);
            }


            listBoxEdit.IsEnabled = false;

            if (_currentPlan == null || String.IsNullOrEmpty(_monitorPlanID))
            {
                return;
            }
            List <Data.Collection.AnalysisResult> legalSignals      = null;
            List <Data.Collection.AnalysisResult> illegalitySignals = null;
            FreqLineDataItem spectrumData = null;

            var backbroudWorker = new BackgroundWorker();

            backbroudWorker.DoWork += ((s, p) =>
            {
                //合法信号
                legalSignals = PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA_Collection, List <Data.Collection.AnalysisResult> >(channel =>
                {
                    //return channel.GetRealTimeMonitorAnalysis(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlan.GUID, '0');
                    return(channel.GetRealTimeMonitorAnalysis(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlanID, '0'));
                });

                //冲突信号
                illegalitySignals = PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA_Collection, List <Data.Collection.AnalysisResult> >(channel =>
                {
                    //return channel.GetRealTimeMonitorAnalysis(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlan.GUID, '1');
                    return(channel.GetRealTimeMonitorAnalysis(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlanID, '1'));
                });

                //谱图数据
                spectrumData = PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA_Collection, FreqLineDataItem>(channel =>
                {
                    //return channel.GetSpectrumData(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlan.GUID);
                    return(channel.GetSpectrumData(_currentPlan.ClassCode, _currentPlan.ActivityId, _monitorPlanID));
                });
            });
            backbroudWorker.RunWorkerCompleted += ((s, p) =>
            {
                gridControl_freqInfo1.ItemsSource = legalSignals;
                gridControl_freqInfo.ItemsSource = illegalitySignals;

                if (spectrumData != null)
                {
                    double startFreq = spectrumData.TestFreqStart * 1000000;
                    double endFreq = spectrumData.TestFreqEnd * 1000000;
                    uint count = (uint)(1 + (endFreq - startFreq) / spectrumData.frequencyStep);
                    var values = FloatArrayToShortArray(spectrumData.byteArray);

                    if (isFirst)
                    {
                        x_widebandFreq.Clear();
                        x_widebandFreq.InitSpectrumProperty(null, null, startFreq, endFreq);
                        count = count > (uint)values.Count() ? (uint)values.Count() : count;
                        x_widebandFreq.Initializers(startFreq, spectrumData.frequencyStep, Convert.ToInt32(count));
                    }

                    x_widebandFreq.DrawLine(spectrumData.TestFreqStart * 1000000, spectrumData.frequencyStep, spectrumData.TestFreqStart * 1000000, spectrumData.frequencyStep, values, 0, Colors.Green, Best.VWPlatform.Controls.Freq.SpectrumLineType.Wave);
                }
                x_widebandFreq.Update();
                listBoxEdit.IsEnabled = true;
            });
            backbroudWorker.RunWorkerAsync();
        }
        /// <summary>
        /// 实时监测回调
        /// </summary>
        /// <param name="segData"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private int RealTimeMonitorCallBack(ref AgilentDll.Sensor.SegmentData segData, IntPtr data)
        {
            if (segData.errorNum != AgilentDll.Sensor.SalError.SAL_ERR_NONE)
            {
                return(-1);
            }
            if (segData.startFrequency <= RoadTestInfor.StartFreq * 1000000.0)
            {
                FreqMeasureId++;
                FreqMeasurePakageId = 0;
            }
            FreqMeasurePakageId++;
            FreqDataIndex++;

            if (FreqMeasurePakageId == 1)
            {
                if (CurrentFreqFrameItem != null)
                {
                    lock (FreqFrameItemQueue)
                    {
                        FreqFrameItemQueue.Enqueue(CurrentFreqFrameItem);
                        Monitor.Pulse(FreqFrameItemQueue);
                    }
                }
                TimeSpan ts = System.DateTime.Now.Subtract(beforDT);
                CurrentFreqFrameItem = new FreqFrameItem(FreqMeasureId, ts);
            }

            FreqDataTemplate FreqData = new FreqDataTemplate();

            //FreqData.MapNewTableName(RoadTestInfor.FreqDataTable);
            FreqData.FreqCount           = Convert.ToInt32(segData.numPoints);
            FreqData.AltitudeValue       = CarRunInfor.AltitudeValue;
            FreqData.LatitudeValue       = CarRunInfor.LatitudeValue;
            FreqData.LongitudeValue      = CarRunInfor.LongitudeValue;
            FreqData.SatelliteCount      = CarRunInfor.SatelliteCount;
            FreqData.CarSpeed            = CarRunInfor.CarSpeed;
            FreqData.DataIndex           = FreqDataIndex;
            FreqData.FreqMeasurePakageId = FreqMeasurePakageId;
            FreqData.MeasureId           = FreqMeasureId;
            FreqData.MeasureTime         = DateTime.Now;
            FreqData.StartFreq           = segData.startFrequency;
            FreqData.StepValue           = segData.frequencyStep;
            FreqData.segData             = segData;
            FreqData.volList             = new float[segData.numPoints];
            System.Runtime.InteropServices.Marshal.Copy(data, FreqData.volList, 0, Convert.ToInt32(segData.numPoints));

            CurrentFreqFrameItem.FreqDataItemList.Add(FreqData);


            FreqLineDataItem FreqShowData = new FreqLineDataItem();

            FreqShowData.byteArray = new float[segData.numPoints];
            System.Runtime.InteropServices.Marshal.Copy(data, FreqShowData.byteArray, 0, Convert.ToInt32(segData.numPoints));
            FreqShowData.FreqMeasureId       = FreqMeasureId;
            FreqShowData.FreqMeasurePakageId = FreqMeasurePakageId;
            FreqShowData.frequencyStep       = segData.frequencyStep;
            FreqShowData.startFrequency      = segData.startFrequency;
            FreqShowData.TestFreqStart       = RoadTestInfor.StartFreq;
            FreqShowData.TestFreqEnd         = RoadTestInfor.EndFreq;
            FreqShowData.DataIndex           = FreqDataIndex;

            _LineChartViewModel.InsertShowData(FreqShowData);

            if (!segDataDic.ContainsKey(FreqMeasurePakageId))
            {
                segDataDic.Add(FreqMeasurePakageId, FreqShowData.byteArray);
            }
            if (FreqShowDataGrid == null || FreqShowDataGrid.byteArray.Length <= FreqShowData.byteArray.Length)
            {
                FreqShowDataGrid = FreqShowData;
            }


            //ObservableCollection<AnalysisResult> tempList = new ObservableCollection<AnalysisResult>();
            //double startFreq = FreqShowData.startFrequency;
            //for (int i = 0; i < FreqShowData.byteArray.Length; i++)
            //{
            //    if (FreqShowData.byteArray[i] + 107 >= Convert.ToDouble(RoadTestInfor.SignalLimit))
            //    {
            //        AnalysisResult analysisResult = new AnalysisResult();

            //        analysisResult.Frequency = startFreq;
            //        analysisResult.BandWidth = RoadTestInfor.Bandwidth;
            //        analysisResult.AmplitudeMaxValue = Convert.ToInt32(FreqShowData.byteArray[i])+107;
            //        tempList.Add(analysisResult);
            //    }
            //    else {
            //        startFreq += Convert.ToDouble(RoadTestInfor.Bandwidth);
            //    }
            //}
            //RoadTestInfor.AnalysisList = tempList;
            //DateTime now = DateTime.Now;
            //if (collectTime.AddMilliseconds(1000 * 60 * 15).Hour == now.Hour && collectTime.AddMilliseconds(1000 * 60 * 15).Minute == now.Minute && collectTime.AddMilliseconds(1000 * 60 * 15).Second == now.Second)
            //{
            //    _CollectionDataSave.saveSqliteIndex(FreqShowData);
            //    collectTime = now;
            //}
            //if (IsRecordFreqCount)
            //{
            //    if (FreqCount != 0 && RoadTestInfor.StartFreq * 1000000 == FreqShowData.startFrequency)
            //    {
            //        _CollectionDataSave.saveFreqCount(FreqCount);
            //        IsRecordFreqCount = false;
            //    }
            //    else
            //    {
            //        FreqCount += FreqShowData.byteArray.Length;
            //    }
            //}
            //_CollectionDataSave.saveFreqData(FreqShowData.byteArray, FreqShowData);

            //UpdateRtFreqDataModel(segData);


            return(0);
        }
        private int CallBack(ref AgilentDll.Sensor.SegmentData segData, IntPtr data)
        {
            if (segData.errorNum != AgilentDll.Sensor.SalError.SAL_ERR_NONE)
            {
                return(-1);
            }
            if (segData.startFrequency <= RoadTestInfor.StartFreq * 1000000.0)
            {
                FreqMeasureId++;
                FreqMeasurePakageId = 0;
            }
            FreqMeasurePakageId++;
            FreqDataIndex++;

            if (FreqMeasurePakageId == 1)
            {
                if (CurrentFreqFrameItem != null)
                {
                    lock (FreqFrameItemQueue)
                    {
                        FreqFrameItemQueue.Enqueue(CurrentFreqFrameItem);
                        Monitor.Pulse(FreqFrameItemQueue);
                    }
                }
                TimeSpan ts = System.DateTime.Now.Subtract(beforDT);
                CurrentFreqFrameItem = new FreqFrameItem(FreqMeasureId, ts);
            }

            FreqDataTemplate FreqData = new FreqDataTemplate();

            //FreqData.MapNewTableName(RoadTestInfor.FreqDataTable);
            FreqData.FreqCount           = Convert.ToInt32(segData.numPoints);
            FreqData.AltitudeValue       = CarRunInfor.AltitudeValue;
            FreqData.LatitudeValue       = CarRunInfor.LatitudeValue;
            FreqData.LongitudeValue      = CarRunInfor.LongitudeValue;
            FreqData.SatelliteCount      = CarRunInfor.SatelliteCount;
            FreqData.CarSpeed            = CarRunInfor.CarSpeed;
            FreqData.DataIndex           = FreqDataIndex;
            FreqData.FreqMeasurePakageId = FreqMeasurePakageId;
            FreqData.MeasureId           = FreqMeasureId;
            FreqData.MeasureTime         = DateTime.Now;
            FreqData.StartFreq           = segData.startFrequency;
            FreqData.StepValue           = segData.frequencyStep;
            FreqData.segData             = segData;
            FreqData.volList             = new float[segData.numPoints];
            System.Runtime.InteropServices.Marshal.Copy(data, FreqData.volList, 0, Convert.ToInt32(segData.numPoints));

            CurrentFreqFrameItem.FreqDataItemList.Add(FreqData);


            FreqLineDataItem FreqShowData = new FreqLineDataItem();

            FreqShowData.byteArray = new float[segData.numPoints];
            System.Runtime.InteropServices.Marshal.Copy(data, FreqShowData.byteArray, 0, Convert.ToInt32(segData.numPoints));
            FreqShowData.FreqMeasureId       = FreqMeasureId;
            FreqShowData.FreqMeasurePakageId = FreqMeasurePakageId;
            FreqShowData.frequencyStep       = segData.frequencyStep;
            FreqShowData.startFrequency      = segData.startFrequency;
            FreqShowData.TestFreqStart       = RoadTestInfor.StartFreq;
            FreqShowData.TestFreqEnd         = RoadTestInfor.EndFreq;
            FreqShowData.DataIndex           = FreqDataIndex;


            _LineChartViewModel.InsertShowData(FreqShowData);

            DateTime now = DateTime.Now;

            if (collectTime.AddMilliseconds(1000 * 60 * 15).Hour == now.Hour && collectTime.AddMilliseconds(1000 * 60 * 15).Minute == now.Minute && collectTime.AddMilliseconds(1000 * 60 * 15).Second == now.Second)
            {
                _CollectionDataSave.saveSqliteIndex(FreqShowData);
                collectTime = now;
            }
            if (IsRecordFreqCount)
            {
                if (FreqCount != 0 && RoadTestInfor.StartFreq * 1000000 == FreqShowData.startFrequency)
                {
                    _CollectionDataSave.saveFreqCount(FreqCount);
                    IsRecordFreqCount = false;
                }
                else
                {
                    FreqCount += FreqShowData.byteArray.Length;
                }
            }
            _CollectionDataSave.saveFreqData(FreqShowData.byteArray, FreqShowData);

            //UpdateRtFreqDataModel(segData);


            return(0);
        }