void engine_EmoStateUpdated(object sender, EmoStateUpdatedEventArgs e) { es = e.emoState; elapsed = es.GetTimeFromStart(); UpdateSensorContactQuality(es); SignalStatus = es.GetWirelessSignalStatus().ToString(); MainUptime.Content = ConvertToTime(es.GetTimeFromStart()); Uptime.Content = ConvertToTime(es.GetTimeFromStart()); es.GetBatteryChargeLevel(out BatteryLevel, out MaxBatteryLevel); SamplingRate.Content = samplingRate.ToString(); BufferSize.Content = bufferSize.ToString(); EdkDll.EE_DataGetBufferSizeInSec(out bufferSize); EdkDll.EE_DataGetSamplingRate(userID, out samplingRate); EdkDll.EE_ExpressivAlgo_t lowerFaceAction, upperFaceAction; bool expressivIsBlink, expressivIsEyesOpen, expressivIsLeftWink, expressivIsLookingDown, expressivIsLookingLeft, expressivIsLookingRight, expressivIsLookingUp, expressivIsRightWink; float lowerFaceActionPower, upperFaceActionPower; float leftEye, rightEye; #region Expressiv #region Lower Face Action lowerFaceAction = es.ExpressivGetLowerFaceAction(); lowerFaceActionPower = es.ExpressivGetLowerFaceActionPower(); switch (lowerFaceAction) { case EdkDll.EE_ExpressivAlgo_t.EXP_CLENCH: ClearExpressivLowerFaceCircles(); break; case EdkDll.EE_ExpressivAlgo_t.EXP_LAUGH: ClearExpressivLowerFaceCircles(); LaughRect.Fill = Brushes.Green; LaughRect1.Fill = Brushes.Green; break; case EdkDll.EE_ExpressivAlgo_t.EXP_NEUTRAL: ClearExpressivLowerFaceCircles(); break; case EdkDll.EE_ExpressivAlgo_t.EXP_SMILE: ClearExpressivLowerFaceCircles(); SmileRect.Fill = Brushes.Green; SmileRect1.Fill = Brushes.Green; break; case EdkDll.EE_ExpressivAlgo_t.EXP_SMIRK_LEFT: ClearExpressivLowerFaceCircles(); SmirkLeftRect.Fill = Brushes.Green; SmirkLeftRect1.Fill = Brushes.Green; break; case EdkDll.EE_ExpressivAlgo_t.EXP_SMIRK_RIGHT: ClearExpressivLowerFaceCircles(); SmirkRightRect.Fill = Brushes.Green; SmirkRightRect1.Fill = Brushes.Green; break; default: break; } #region Clench Extent float clenchExtent = es.ExpressivGetClenchExtent(); Clench.Content = toPercentString(clenchExtent); Clench1.Content = toPercentString(clenchExtent); if (clenchExtent < 0.20) { ClenchRect.Fill = Brushes.Black; } else if (clenchExtent < 0.40) { ClenchRect.Fill = Brushes.Red; } else if (clenchExtent < 0.60) { ClenchRect.Fill = Brushes.Orange; } else if (clenchExtent < 0.80) { ClenchRect.Fill = Brushes.Yellow; } else { ClenchRect.Fill = Brushes.Green; } #endregion Clench Extent #region Smile Extent float smileExtent = es.ExpressivGetSmileExtent(); Smile.Content = toPercentString(smileExtent); Smile1.Content = toPercentString(smileExtent); if (smileExtent < 0.20) { SmileRect.Fill = Brushes.Black; } else if (smileExtent < 0.40) { SmileRect.Fill = Brushes.Red; } else if (smileExtent < 0.60) { SmileRect.Fill = Brushes.Orange; } else if (smileExtent < 0.80) { SmileRect.Fill = Brushes.Yellow; } else { SmileRect.Fill = Brushes.Green; } #endregion Smile Extent //LowerFaceAction.Content = lowerFaceAction.ToString(); #endregion Lower Face Action #region Middle Face Action es.ExpressivGetEyelidState(out leftEye, out rightEye); expressivIsBlink = es.ExpressivIsBlink(); if (expressivIsBlink) { ClearExpressivUpperFaceCircles(); BlinkRect.Fill = Brushes.Green; BlinkRect1.Fill = Brushes.Green; } expressivIsEyesOpen = es.ExpressivIsEyesOpen(); if (expressivIsEyesOpen) { //MiddleFaceAction.Content = "Eyes Open"; BlinkRect.Fill = Brushes.Black; BlinkRect1.Fill = Brushes.Black; } else { BlinkRect.Fill = Brushes.Green; BlinkRect1.Fill = Brushes.Green; //MiddleFaceAction.Content = "Eyes Closed"; } expressivIsLeftWink = es.ExpressivIsLeftWink(); if (expressivIsLeftWink) { ClearExpressivUpperFaceCircles(); WinkLeftRect.Fill = Brushes.Green; WinkLeftRect1.Fill = Brushes.Green; } expressivIsRightWink = es.ExpressivIsRightWink(); if (expressivIsRightWink) { ClearExpressivUpperFaceCircles(); WinkRightRect.Fill = Brushes.Green; WinkRightRect1.Fill = Brushes.Green; } expressivIsLookingDown = es.ExpressivIsLookingDown(); if (expressivIsLookingDown) { //MessageBox.Show("I am looking down"); } expressivIsLookingLeft = es.ExpressivIsLookingLeft(); if (expressivIsLookingLeft) { //MessageBox.Show("I am looking left"); // Emotiv SDK is wrong } expressivIsLookingRight = es.ExpressivIsLookingRight(); if (expressivIsLookingRight) { //MessageBox.Show("I am looking right"); // Emotiv SDK is wrong } expressivIsLookingUp = es.ExpressivIsLookingUp(); if (expressivIsLookingUp) { //MessageBox.Show("I am looking up"); } float eyeXCoordinate, eyeYCoordinate; es.ExpressivGetEyeLocation(out eyeXCoordinate, out eyeYCoordinate); if (eyeXCoordinate > 0) { //MessageBox.Show("Looking Right"); } else if (eyeXCoordinate<0) { //MessageBox.Show("Looking Left"); // sometimes it works } if (eyeYCoordinate > 0) { MessageBox.Show("Looking Up"); // not working } else if (eyeYCoordinate < 0) { MessageBox.Show("Looking Down"); // not working } #endregion Middle Face Action #region Upper Face Action upperFaceAction = es.ExpressivGetUpperFaceAction(); upperFaceActionPower = es.ExpressivGetUpperFaceActionPower(); switch (upperFaceAction) { case EdkDll.EE_ExpressivAlgo_t.EXP_EYEBROW: ClearExpressivUpperFaceCircles(); break; case EdkDll.EE_ExpressivAlgo_t.EXP_FURROW: ClearExpressivUpperFaceCircles(); FurrowRect.Fill = Brushes.Green; FurrowRect1.Fill = Brushes.Green; break; case EdkDll.EE_ExpressivAlgo_t.EXP_NEUTRAL: ClearExpressivUpperFaceCircles(); break; default: break; } #region Eyebrow Extent float eyebrowExtent = es.ExpressivGetEyebrowExtent(); Eyebrow.Content = toPercentString(eyebrowExtent); Eyebrow1.Content = toPercentString(eyebrowExtent); if (eyebrowExtent < 0.20) { EyebrowRect.Fill = Brushes.Black; EyebrowRect1.Fill = Brushes.Black; } else if (eyebrowExtent < 0.40) { EyebrowRect.Fill = Brushes.Red; EyebrowRect1.Fill = Brushes.Red; } else if (eyebrowExtent < 0.60) { EyebrowRect.Fill = Brushes.Orange; EyebrowRect1.Fill = Brushes.Orange; } else if (eyebrowExtent < 0.80) { EyebrowRect.Fill = Brushes.Yellow; EyebrowRect1.Fill = Brushes.Yellow; } else { EyebrowRect.Fill = Brushes.Green; EyebrowRect1.Fill = Brushes.Green; } #endregion Eyebrow Extent //UpperFaceAction.Content = upperFaceAction.ToString(); #endregion Upper Face Action // Must be removed #region Robots #region OWI535 Robotic Arm //if (lowerFaceAction == EdkDll.EE_ExpressivAlgo_t.EXP_CLENCH) //{ // OWI535RoboticArm.GrippersClose(1000); //} //else if (lowerFaceAction == EdkDll.EE_ExpressivAlgo_t.EXP_SMIRK_LEFT) //{ // OWI535RoboticArm.ArmRotateLeft(1000); //} //else if (lowerFaceAction == EdkDll.EE_ExpressivAlgo_t.EXP_SMIRK_RIGHT) //{ // OWI535RoboticArm.ArmRotateRight(1000); //} //else if (es.ExpressivGetEyebrowExtent() > 0.10) //{ // OWI535RoboticArm.ArmStop(); //} //else if (es.ExpressivIsRightWink()) //{ // OWI535RoboticArm.GrippersOpen(1000); //} #endregion OWI535 Robotic Arm #region R2D2 if (lowerFaceAction == EdkDll.EE_ExpressivAlgo_t.EXP_CLENCH) { //R2D2.MoveForward(); int iRobotVelocity = getiRobotVelocity(); iRobotMoveForward(iRobotVelocity); } else if (lowerFaceAction == EdkDll.EE_ExpressivAlgo_t.EXP_SMIRK_LEFT) { //R2D2.MoveLeft(); int iRobotVelocity = getiRobotVelocity(); iRobotTurnLeft(iRobotVelocity); } else if (lowerFaceAction == EdkDll.EE_ExpressivAlgo_t.EXP_SMIRK_RIGHT) { //R2D2.MoveRight(); int iRobotVelocity = getiRobotVelocity(); iRobotTurnRight(iRobotVelocity); } else if (es.ExpressivGetEyebrowExtent() > 0.10) { //R2D2.Stop(); iRobotStop(); } #endregion R2D2 #endregion Robots #endregion Expressiv #region Affectiv AffectiveEngagementBoredom = es.AffectivGetEngagementBoredomScore(); // Get Engagement/Boredom Score. AffectivExcitementLong = es.AffectivGetExcitementLongTermScore(); // Get Excitement Long Term Score. AffectivExcitementShort = es.AffectivGetExcitementShortTermScore(); // Get Excitement Short Term Score. AffectivFrustration = es.AffectivGetFrustrationScore(); // Get Frustration Score. AffectivMeditation = es.AffectivGetMeditationScore(); // Get Meditation Score. #endregion Affectiv #region Cognitiv EdkDll.EE_CognitivAction_t EEGAction; EEGAction = es.CognitivGetCurrentAction(); double cognitivpower = es.CognitivGetCurrentActionPower(); double cognitivpowerPercent = cognitivpower * 100; UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(CognitivPowerProgressBar.SetValue); Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, cognitivpowerPercent }); cognitivPower.Content = (Convert.ToInt32(cognitivpowerPercent)).ToString() + " %"; bool cognitivIsNoisy; cognitivIsNoisy = es.CognitivIsActive(); if (cognitivIsNoisy) { cognitivIsActive.Content = "Noisy"; } else { cognitivIsActive.Content = "Ok"; } // Get Cognitiv Action switch (EEGAction) { case EdkDll.EE_CognitivAction_t.COG_DISAPPEAR: cognitivIsState.Content = "Dissapear"; break; case EdkDll.EE_CognitivAction_t.COG_DROP: MessageBox.Show("Drop"); cognitivIsState.Content = "Drop"; break; case EdkDll.EE_CognitivAction_t.COG_LEFT: cognitivIsState.Content = "Left"; break; case EdkDll.EE_CognitivAction_t.COG_LIFT: cognitivIsState.Content = "Lift"; break; case EdkDll.EE_CognitivAction_t.COG_NEUTRAL: cognitivIsState.Content = "Neutral"; break; case EdkDll.EE_CognitivAction_t.COG_PULL: cognitivIsState.Content = "Pull"; break; case EdkDll.EE_CognitivAction_t.COG_PUSH: cognitivIsState.Content = "Push"; if (cognitivpower > 0.2) { //R2D2.MoveBack(); int iRobotVelocity = getiRobotVelocity(); iRobotMoveForward(iRobotVelocity); //OWI535RoboticArm.Handshake(); } break; case EdkDll.EE_CognitivAction_t.COG_RIGHT: cognitivIsState.Content = "Right"; break; case EdkDll.EE_CognitivAction_t.COG_ROTATE_CLOCKWISE: cognitivIsState.Content = "Rotate Clockwise"; break; case EdkDll.EE_CognitivAction_t.COG_ROTATE_COUNTER_CLOCKWISE: cognitivIsState.Content = "Rotate Counter Clockwise"; break; case EdkDll.EE_CognitivAction_t.COG_ROTATE_FORWARDS: cognitivIsState.Content = "Rotate Forwards"; break; case EdkDll.EE_CognitivAction_t.COG_ROTATE_LEFT: cognitivIsState.Content = "Rotate Left"; break; case EdkDll.EE_CognitivAction_t.COG_ROTATE_REVERSE: cognitivIsState.Content = "Rotate Reverse"; break; case EdkDll.EE_CognitivAction_t.COG_ROTATE_RIGHT: cognitivIsState.Content = "Rotate Right"; break; default: break; } #endregion Cognitiv }