Exemple #1
0
        public void computePowerStorer()
        {
            #region declared temp variable
            int maxFreqO1 = 0, maxFreqF3, maxFreqF4, maxFreqF7, maxFreqF8, maxFreqAF3, maxFreqAF4;
            int maxFreqFC5 = 0, maxFreqFC6, maxFreqP7, maxFreqP8, maxFreqT7, maxFreqT8;

            //    double maxMag = 0;
            double alphaPowerO1 = 0, betaPowerO1 = 0;
            double alphaPowerF3 = 0, betaPowerF3 = 0;
            double alphaPowerF4 = 0, betaPowerF4 = 0;
            double alphaPowerF7 = 0, betaPowerF7 = 0;
            double alphaPowerF8 = 0, betaPowerF8 = 0;
            double alphaPowerAF3 = 0, betaPowerAF3 = 0;
            double alphaPowerAF4 = 0, betaPowerAF4 = 0;


            double alphaPowerFC5 = 0, betaPowerFC5 = 0;
            double alphaPowerFC6 = 0, betaPowerFC6 = 0;
            double alphaPowerP7 = 0, betaPowerP7 = 0;
            double alphaPowerP8 = 0, betaPowerP8 = 0;
            double alphaPowerT7 = 0, betaPowerT7 = 0;
            double alphaPowerT8 = 0, betaPowerT8 = 0;
            #endregion

            int sampleSize = 128;
            int index_eye  = 0;
            //iterate EEG list - compute EEG data until the EEG data is left with less than 128
            while (O1List.Count >= 128)
            {
                ft.computePower(O1List, sampleSize, out maxFreqO1, out alphaPowerO1, out betaPowerO1);
                ft.computePower(F3List, sampleSize, out maxFreqF3, out alphaPowerF3, out betaPowerF3);
                ft.computePower(F4List, sampleSize, out maxFreqF4, out alphaPowerF4, out betaPowerF4);
                ft.computePower(F7List, sampleSize, out maxFreqF7, out alphaPowerF7, out betaPowerF7);
                ft.computePower(F8List, sampleSize, out maxFreqF8, out alphaPowerF8, out betaPowerF8);
                ft.computePower(AF3List, sampleSize, out maxFreqAF3, out alphaPowerAF3, out betaPowerAF3);
                ft.computePower(AF4List, sampleSize, out maxFreqAF4, out alphaPowerAF4, out betaPowerAF4);


                ft.computePower(FC5List, sampleSize, out maxFreqFC5, out alphaPowerFC5, out betaPowerFC5);
                ft.computePower(FC6List, sampleSize, out maxFreqFC6, out alphaPowerFC6, out betaPowerFC6);
                ft.computePower(P7List, sampleSize, out maxFreqP7, out alphaPowerP7, out betaPowerP7);
                ft.computePower(P8List, sampleSize, out maxFreqP8, out alphaPowerP8, out betaPowerP8);
                ft.computePower(T7List, sampleSize, out maxFreqT7, out alphaPowerT7, out betaPowerT7);
                ft.computePower(T8List, sampleSize, out maxFreqT8, out alphaPowerT8, out betaPowerT8);
                BandPower bp = new BandPower()
                {
                    alpha_O1        = alphaPowerO1,
                    beta_O1         = betaPowerO1,
                    dominantFreq_O1 = maxFreqO1,
                    alpha_F3        = alphaPowerF3,
                    beta_F3         = betaPowerF3,
                    alpha_F4        = alphaPowerF4,
                    beta_F4         = betaPowerF4,
                    alpha_F7        = alphaPowerF7,
                    beta_F7         = betaPowerF7,
                    alpha_F8        = alphaPowerF8,
                    beta_F8         = betaPowerF8,
                    alpha_AF3       = alphaPowerAF3,
                    beta_AF3        = betaPowerAF3,
                    alpha_AF4       = alphaPowerAF4,
                    beta_AF4        = betaPowerAF4,
                    alpha_FC5       = alphaPowerFC5,
                    beta_FC5        = betaPowerFC5,
                    alpha_FC6       = alphaPowerFC6,
                    beta_FC6        = betaPowerFC6,
                    alpha_P7        = alphaPowerP7,
                    beta_P7         = betaPowerP7,
                    alpha_P8        = alphaPowerP8,
                    beta_P8         = betaPowerP8,
                    alpha_T7        = alphaPowerT7,
                    beta_T7         = betaPowerT7,
                    alpha_T8        = alphaPowerT8,
                    beta_T8         = betaPowerT8,
                    eyeOpen         = openEye[index_eye]
                };
                PowerStorer.Add(bp);
                index_eye += 1;
            }
            clearAllList();
        }
Exemple #2
0
        private void DataTimer_Tick(object sender, EventArgs e)
        {
            //just in case needing to clear data buffer - discard data by not doing anything to it
            if (!OPStart)
            {
                List <EmotivRawEEG> receivedData = dataReader.DataCollect();
            }

            if (OPStart)
            {
                List <EmotivRawEEG> receivedData = dataReader.DataCollect();

                #region add received Data
                if (receivedData != null)
                {
                    /*add retreive EEG data to the general list*/
                    foreach (EmotivRawEEG data in receivedData)
                    {
                        EEGStorer.Add(data);
                    }

                    for (int i = 0; i < receivedData.Count; i++)
                    {
                        O1List.Add(receivedData[i].O1);
                        F3List.Add(receivedData[i].F3);
                        F4List.Add(receivedData[i].F4);
                        F7List.Add(receivedData[i].F7);
                        F8List.Add(receivedData[i].F8);
                        AF3List.Add(receivedData[i].AF3);
                        AF4List.Add(receivedData[i].AF4);
                    }
                }
                #endregion

                #region declared temp variable
                int maxFreqO1 = 0, maxFreqF3, maxFreqF4, maxFreqF7, maxFreqF8, maxFreqAF3, maxFreqAF4;
                //    double maxMag = 0;
                double alphaPowerO1 = 0, betaPowerO1 = 0;
                double alphaPowerF3 = 0, betaPowerF3 = 0;
                double alphaPowerF4 = 0, betaPowerF4 = 0;
                double alphaPowerF7 = 0, betaPowerF7 = 0;
                double alphaPowerF8 = 0, betaPowerF8 = 0;
                double alphaPowerAF3 = 0, betaPowerAF3 = 0;
                double alphaPowerAF4 = 0, betaPowerAF4 = 0;
                #endregion

                int sampleSize = 128;

                /*If one of the channel has sample size larger than the given value -
                 * all channel did. */

                if (O1List.Count >= sampleSize)
                {
                    #region compute  Alpha beta power
                    ft.computePower(O1List, sampleSize, out maxFreqO1, out alphaPowerO1, out betaPowerO1);
                    ft.computePower(F3List, sampleSize, out maxFreqF3, out alphaPowerF3, out betaPowerF3);
                    ft.computePower(F4List, sampleSize, out maxFreqF4, out alphaPowerF4, out betaPowerF4);
                    ft.computePower(F7List, sampleSize, out maxFreqF7, out alphaPowerF7, out betaPowerF7);
                    ft.computePower(F8List, sampleSize, out maxFreqF8, out alphaPowerF8, out betaPowerF8);
                    ft.computePower(AF3List, sampleSize, out maxFreqAF3, out alphaPowerAF3, out betaPowerAF3);
                    ft.computePower(AF4List, sampleSize, out maxFreqAF4, out alphaPowerAF4, out betaPowerAF4);
                    #endregion


                    BandPower bp = new BandPower()
                    {
                        alpha_O1  = alphaPowerO1, beta_O1 = betaPowerO1, dominantFreq_O1 = maxFreqO1,
                        alpha_F3  = alphaPowerF3, beta_F3 = betaPowerF3, alpha_F4 = alphaPowerF4, beta_F4 = betaPowerF4,
                        alpha_F7  = alphaPowerF7, beta_F7 = betaPowerF7, alpha_F8 = alphaPowerF8, beta_F8 = betaPowerF8,
                        alpha_AF3 = alphaPowerAF3, beta_AF3 = betaPowerAF3, alpha_AF4 = alphaPowerAF4, beta_AF4 = betaPowerAF4
                    };
                    PowerStorer.Add(bp);

                    #region comments out

                    /*
                     *
                     * // Compute Eye Open Avg Alpha & Beta
                     *
                     * //Compute Percent difference betweeen the the avgAlphaOpen  & current alpha power
                     * //if haven't detected Close eye
                     *
                     * if(closeEye ==false)
                     * {
                     *  if(PowerStorer.Count == 1) {avgAlphaOpen=alphaPower; avgBetaOpen = betaPower;}
                     *  else if (PowerStorer.Count >1)
                     *  {
                     *      if((avgAlphaOpen - alphaPower)/avgAlphaOpen <= 4) // anythreshold
                     *      {
                     *          for(int j=0; j< PowerStorer.Count;j++)
                     *          {
                     *          avgAlphaOpen += PowerStorer[j].alpha;
                     *          }
                     *          avgAlphaOpen = avgAlphaOpen / PowerStorer.Count;
                     *       }
                     *      else
                     *      {
                     *          closeEye = true;
                     *
                     *      }
                     *  }
                     * }
                     */

                    #endregion

                    if (PowerStorer.Count >= 2)
                    {
                        double avgAlphaPDifference = 0;
                        avgAlphaPDifference    = (alphaPowerO1 - PowerStorer[PowerStorer.Count - 2].alpha_O1) / PowerStorer[PowerStorer.Count - 2].alpha_O1;
                        textBox_AlphaDiff.Text = avgAlphaPDifference.ToString();

                        double avgBetaPDifference = (betaPowerO1 - PowerStorer[PowerStorer.Count - 2].beta_O1) / PowerStorer[PowerStorer.Count - 2].beta_O1;
                        textBox_BetaDiff.Text = avgBetaPDifference.ToString();
                    }



                    //Condition for Close / Open eyes trigger
                    //if close eye for 2 seconds frame already - reset CloseEye second

                    /*
                     * if (alphaPowerO1 >= 60 && alphaPowerO1 <= 100 && betaPowerO1 <= 30)
                     * {
                     *  CloseEyeTrigger = true;
                     * }
                     * else
                     * {
                     *  CloseEyeTrigger = false;
                     * }
                     *
                     */
                    #region command classification


                    bool trigger = nb.classify(alphaPowerO1, betaPowerO1);
                    if (trigger)
                    {
                        label11.Text = "Trigger on";
                        listBox1.Items.Add("Trigger On");

                        triggerOnCount++;
                    }
                    else if (!trigger)
                    {
                        label11.Text = "Trigger off";
                        listBox1.Items.Add("Trigger off");

                        triggerOnCount = 0;
                    }

                    if (trigger && command == 1 && (triggerOnCount > 8 || triggerOnCount == 1))
                    {
                        command = 2;
                        listBox1.Items.Add("command: " + command.ToString());
                    }
                    else if (trigger && command == 2 && (triggerOnCount > 8 || triggerOnCount == 1))
                    {
                        command = 1;
                        listBox1.Items.Add("command: " + command.ToString());
                    }

                    #endregion

                    #region update TextBox
                    textBox_freq.Text    = maxFreqO1.ToString();
                    textBox_alphaO1.Text = alphaPowerO1.ToString();
                    textBox_BetaO1.Text  = betaPowerO1.ToString();

                    textBox_alphaF3.Text = alphaPowerF3.ToString();
                    textBox_BetaF3.Text  = betaPowerF3.ToString();

                    textBox_alphaF4.Text = alphaPowerF4.ToString();
                    textBox_BetaF4.Text  = betaPowerF4.ToString();

                    textBox_alphaF7.Text = alphaPowerF7.ToString();
                    textBox_BetaF7.Text  = betaPowerF7.ToString();

                    textBox_alphaF8.Text = alphaPowerF8.ToString();
                    textBox_BetaF8.Text  = betaPowerF8.ToString();

                    textBox_alphaAF3.Text = alphaPowerAF3.ToString();
                    textBox_BetaAF3.Text  = betaPowerAF3.ToString();

                    textBox_alphaAF4.Text = alphaPowerAF4.ToString();
                    textBox_BetaAF4.Text  = betaPowerAF4.ToString();
                    #endregion

                    #region update Listbox
                    //list box
                    listBox1.Items.Add("O1 Alpha: " + alphaPowerO1.ToString());
                    listBox1.Items.Add("O1 Beta:" + betaPowerO1.ToString());
                    listBox1.SelectedIndex = listBox1.Items.Count - 1;
                    //listBox1.Items.Add();
                    listBox1.SelectedIndex = -1;
                    #endregion
                    // O1List.RemoveRange(0, 64);
                }
            }
        }