public void AddEEGData(EEGDataReading data) { data.Write(); eegData.Add(data); }
private void Collect() { int iterations = 0; int dataNotReceived = 0; Log.LogMessage("EEG data collection started"); int numReadings = 0; //Clearing of buffer Dictionary <EdkDll.EE_DataChannel_t, double[]> input = eegEngine.GetData((uint)userID); if (input == null) { Log.LogMessage("ERROR: NO EEG INPUT, RESTART PROGRAM!"); return; } double startTime = input[EdkDll.EE_DataChannel_t.TIMESTAMP].Max(); while (shouldCollectData) { // Handle any waiting events eegEngine.ProcessEvents(); if (userID == -1) { iterations++; Log.LogMessageSameLine("No users found! number of times tried: " + iterations); Thread.Sleep(100); continue; } input = eegEngine.GetData((uint)userID); if (input == null) { Log.LogMessageSameLine("No data receied number of times: " + ++dataNotReceived); Thread.Sleep(100); continue; } double max = input[EdkDll.EE_DataChannel_t.TIMESTAMP].Max(); int len = input[EdkDll.EE_DataChannel_t.TIMESTAMP].Length; for (int i = 0; i < len; i++) { EEGDataReading dataReading = new EEGDataReading(true); if (UseEmotivTimestamp) { dataReading.timestamp = (long)((input[EdkDll.EE_DataChannel_t.TIMESTAMP][i] - startTime) * 1000); } else { dataReading.timestamp = (long)(1000f / 128 * numReadings); numReadings++; } for (int j = (int)EdkDll.EE_DataChannel_t.AF3; j <= (int)EdkDll.EE_DataChannel_t.GYROY; j++) { dataReading.data.Add(((EdkDll.EE_DataChannel_t)j).ToString(), input[(EdkDll.EE_DataChannel_t)j][i]); } fd.AddEEGData(dataReading); } input = null; Thread.Sleep(100); } }