public void OnReceivedData(object sender, GARANT_EEG_DATA eegData) { if (m_GarantEEG == null || !m_GarantEEG.IsStarted()) { return; } if (eegData.DataRecordsCount > 0) { m_Mutex.WaitOne(); m_BufferData.Add(eegData); m_Mutex.ReleaseMutex(); } }
public void OnUpdateDataTimer(object sender, EventArgs e) { m_Mutex.WaitOne(); //Debug.WriteLine("OnUpdateDataTimer {0}", m_BufferData.Count); if (m_BufferData.Count > 0) { for (int di = 0; di < m_BufferData.Count; di++) { GARANT_EEG_DATA eegData = m_BufferData[di]; bool useFilters = (ConfigManager.Config.UseFilters && m_GarantEEG.GetFiltersCount() != 0); int seriesIndex = 0; for (int i = 0; i < 8; i++) { if (!ConfigManager.Config.CurveIsChecked[i] || chart1.Series.Count <= seriesIndex) { continue; } List <double> points = new List <double>(); for (int ci = 0; ci < chart1.Series[seriesIndex].Points.Count; ci++) { points.AddRange(chart1.Series[seriesIndex].Points[ci].YValues.ToList <double>()); //.Add(chart1.Series[i].Points[ci].YValues.ToList<double>()); } chart1.Series[seriesIndex].Points.Clear(); for (int j = 0; j < eegData.DataRecordsCount; j++) { double value = (useFilters ? eegData.FilteredChannelsData[j].Value[i] : eegData.RawChannelsData[j].Value[i]) * 1000.0; //double value = eegData.RawChannelsData[j].Value[i] + ((i - 4.0) * 1.0); //double value = eegData.RawChannelsData[j].Value[i] + ((i - 4) * 0.001); points.Add(value); //chart1.Series[i].Points.Add(value); } while (points.Count > 2000) { points.RemoveAt(0); } for (int ci = 0; ci < points.Count; ci++) { chart1.Series[seriesIndex].Points.Add(points[ci]); } seriesIndex++; } for (int i = 0; i < 8; i++) { m_RX[i] = eegData.ResistanceData.Value[i]; } m_RX[8] = eegData.ResistanceData.Ref; m_RX[9] = eegData.ResistanceData.Ground; } //FIXME /*for (int i = 0; i < 8; i++) * { * std::vector<float> y; * * for (int j = 0; j < eegData.DataRecordsCount; j++) * { * double value = (useFilters ? eegData.FilteredChannelsData[j].Value[i] : eegData.RawChannelsData[j].Value[i]) * 1000.0; * //double value = eegData.RawChannelsData[j].Value[i] + ((i - 4.0) * 1.0); * //double value = eegData.RawChannelsData[j].Value[i] + ((i - 4) * 0.001); * * y.push_back(value); * } * * ui->qwt_Chart->appendPoints(QString("EEG%1").arg(i + 1), y); * } * * ui->qwt_Chart->updateView(); * * ui->pb_Battery->setValue(m_Eeg->GetBatteryStatus());*/ m_BufferData.Clear(); } if (m_GarantEEG != null) { pb_Progress.Value = m_GarantEEG.GetBatteryStatus(); label1.Text = string.Format("{0}% battery", m_GarantEEG.GetBatteryStatus()); } m_Mutex.ReleaseMutex(); }