//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 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; }
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); }
private void MySendOrPostCallback(object obj) { FreqLineDataItem item = obj as FreqLineDataItem; UpdateChartData(item); if (_FreqDataCollectViewModel != null) { _FreqDataCollectViewModel.UpdateRtFreqDataModel(item); } }
/// <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(); }
public void InsertShowData(FreqLineDataItem data) { //lock (lockObj) //{ // FreqLineDataItemBuffer.Enqueue(data); //} lock (FreqLineDataItemBuffer) { FreqLineDataItemBuffer.Enqueue(data); Monitor.Pulse(FreqLineDataItemBuffer); } }
/// <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); }; }
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); // } // } // } // }); }
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); }
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(); }
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); }