Пример #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);
        }
 private void UpdateRtFreqDataModel(AgilentDll.Sensor.SegmentData 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      = segData.numPoints;
 }
        /// <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);
        }
        //private Queue<FreqDataTemplate> dBFreqLineDataItemBuffer = new Queue<FreqDataTemplate>();

        //public void InsertShowData(FreqDataTemplate data)
        //{
        //    lock (dBFreqLineDataItemBuffer)
        //    {
        //        dBFreqLineDataItemBuffer.Enqueue(data);
        //        Monitor.Pulse(dBFreqLineDataItemBuffer);
        //    }
        //}


        private bool ShowFreqData(AgilentDll.Sensor.SegmentData segData, IntPtr data)
        {
            return(false);
        }
 private bool SavaFreqDataToDataBase(AgilentDll.Sensor.SegmentData segData, IntPtr data)
 {
     return(true);
 }