示例#1
0
 public void AddEEGData(EEGDataReading data)
 {
     data.Write();
     eegData.Add(data);
 }
示例#2
0
        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);
            }
        }