Exemple #1
0
        private void myoHub_MyoConnected(object sender, MyoEventArgs e)
        {
            m_CTId0.Set();
            m_CTId1.Set();
            Ojw.CMessage.Write("Myo [{0}, {1}, {2}] has connected!", e.Myo.Handle, e.Myo.XDirectionOnArm, e.Myo.Arm);

            e.Myo.Vibrate(VibrationType.Short); // 접속에 성공했으니 짧게 진동 출력


            e.Myo.Locked   += Myo_Locked;
            e.Myo.Unlocked += Myo_Unlocked;
            //e.Myo.Locked += new EventHandler<MyoEventArgs>(Myo_Locked);
            //e.Myo.Unlocked += new EventHandler<MyoEventArgs>(Myo_Unlocked);
            #region Pose(Edge - 자세가 변하는 순간에만 기록)
            e.Myo.PoseChanged += Myo_PoseChanged;
            #endregion Pose(Edge - 자세가 변하는 순간에만 기록)

            #region Pose(자세가 계속적으로 기록...)
            // setup for the pose we want to watch for
            m_myoPos = HeldPose.Create(e.Myo, Pose.Fist, Pose.FingersSpread, Pose.WaveIn, Pose.WaveOut, Pose.Rest);
            // set the interval for the event to be fired as long as
            // the pose is held by the user
            m_myoPos.Interval = TimeSpan.FromSeconds(0.5);

            m_myoPos.Start();
            m_myoPos.Triggered += Pose_Triggered;
            #endregion Pose(자세가 계속적으로 기록...)

            e.Myo.Unlock(UnlockType.Hold); // 이걸 마지막에 선언하면 Myo 가 내버려 두어도 Lock 이 되지 않는다.

            #region Orientation
            e.Myo.OrientationDataAcquired += Myo_OrientationDataAcquired;
            #endregion Orientation
        }
Exemple #2
0
        public void Myo_OrientationDataAcquired(object sender, OrientationDataEventArgs e)
        {
            var         pose = HeldPose.Create(e.Myo, Pose.Fist, Pose.DoubleTap);
            const float PI   = (float)System.Math.PI;
            var         Roll = (e.Roll + PI) / (PI * 2.0f) * 100;
            string      data = "Roll: " + Roll.ToString() + Environment.NewLine;

            InvokeData(data);
        }
Exemple #3
0
        public void Create_NoPose_ThrowsArgumentException()
        {
            // Setup
            var myo = new Mock <IMyoEventGenerator>(MockBehavior.Strict);

            // Execute
            Assert.ThrowsDelegate method = () => HeldPose.Create(myo.Object);

            // Assert
            var exception = Assert.Throws <ArgumentException>(method);

            Assert.Equal("targetPoses", exception.ParamName);
        }
Exemple #4
0
 public void AddHeldPose(IMyo myo, TimeSpan interval, params Pose[] poses)
 {
     if (!heldPoses.ContainsKey(myo))
     {
         var pose = HeldPose.Create(myo, interval, poses);
         pose.Triggered += Pose_Triggered;
         heldPoses.Add(myo, pose);
         pose.Start();
         return;
     }
     heldPoses[myo].Stop();
     heldPoses[myo].AddPoses(poses);
     heldPoses[myo].Start();
 }
Exemple #5
0
        public void Create_MultiplePoseEnumerable_NewInstance()
        {
            // Setup
            var myo   = new Mock <IMyoEventGenerator>(MockBehavior.Strict);
            var poses = new Pose[] { Pose.Fist, Pose.FingersSpread, Pose.Rest };

            // Execute
            var result = HeldPose.Create(
                myo.Object,
                poses);

            // Assert
            Assert.NotNull(result);
        }
Exemple #6
0
        public void Create_SinglePoseParams_NewInstance()
        {
            // Setup
            var myo  = new Mock <IMyoEventGenerator>(MockBehavior.Strict);
            var pose = Pose.Fist;

            // Execute
            var result = HeldPose.Create(
                myo.Object,
                pose);

            // Assert
            Assert.NotNull(result);
        }
Exemple #7
0
        private void Myo2_OrientationDataAcquired(object sender, OrientationDataEventArgs f)
        {
            // list of poses available to be given actions to
            var pose = HeldPose.Create(f.Myo, Pose.Fist, Pose.DoubleTap);
            // gives a variable the value of pi(3.14...)
            const float PI = (float)System.Math.PI;
            // calculation for getting the value of the MYO's roll
            var Roll = (f.Roll + PI) / (PI * 2.0f) * 100;
            // gives the string the value of what the roll is and converts it to a string
            string data2 = "Roll: " + Roll.ToString() + Environment.NewLine;

            // calls the method while passing the data2 value to it
            InvokeData2(data2);
        }
Exemple #8
0
        public void Create_NullMyo_ThrowsArgumentNullException()
        {
            // Setup
            var pose = Pose.Fist;

            // Execute
            Assert.ThrowsDelegate method = () => HeldPose.Create(
                null,
                pose);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(method);

            Assert.Equal("myo", exception.ParamName);
        }
Exemple #9
0
        void myoHub2_MyoConnected(object sender, MyoEventArgs f)
        {
            MessageBox.Show("Myo 2 is connected");  // lets the user know that the second MYO is connected

            f.Myo.Vibrate(VibrationType.Long);
            f.Myo.Unlock(UnlockType.Hold);  // keeps the MYO unlocked

            f.Myo.OrientationDataAcquired += Myo2_OrientationDataAcquired;

            var pose = HeldPose.Create(f.Myo, Pose.Fist, Pose.WaveIn, Pose.WaveOut);

            pose.Interval = TimeSpan.FromSeconds(0.5);
            pose.Start();
            // pose.Triggered += pose_Triggered;
        }
Exemple #10
0
        void myoHub_MyoConnected(object sender, MyoEventArgs e)
        {
            MessageBox.Show("Myo is connected"); // pop up to let user know the MYO is connected

            e.Myo.Vibrate(VibrationType.Long);   // vibrates the MYO
            e.Myo.Unlock(UnlockType.Hold);       // keeps the MYO unlocked

            e.Myo.OrientationDataAcquired += Myo_OrientationDataAcquired;

            var pose = HeldPose.Create(e.Myo, Pose.Fist, Pose.WaveIn, Pose.WaveOut);

            pose.Interval = TimeSpan.FromSeconds(0.5); // checks which pose is being done every half second
            pose.Start();
            // pose.Triggered += pose_Triggered;
        }
Exemple #11
0
        void myoHub_MyoConnected(object sender, MyoEventArgs e)
        {
            //throw new NotImplementedException();
            MessageBox.Show("Myo connected");
            e.Myo.Vibrate(VibrationType.Long);

            //1. Poses
            e.Myo.Unlock(UnlockType.Hold);
            var pose = HeldPose.Create(e.Myo, Pose.FingersSpread, Pose.DoubleTap, Pose.Fist, Pose.WaveIn, Pose.WaveOut);

            pose.Interval = TimeSpan.FromSeconds(0.5);
            pose.Start();
            pose.Triggered += pose_Triggered;

            //2. Angles and Quaternions
            e.Myo.OrientationDataAcquired += Myo_OrientationDataAcquired;
        }
Exemple #12
0
        public void Create_InvalidInterval_ThrowsArgumentOutOfRangeException()
        {
            // Setup
            var myo  = new Mock <IMyoEventGenerator>(MockBehavior.Strict);
            var pose = Pose.Fist;

            // Execute
            Assert.ThrowsDelegate method = () => HeldPose.Create(
                myo.Object,
                TimeSpan.FromSeconds(-1),
                pose);

            // Assert
            var exception = Assert.Throws <ArgumentOutOfRangeException>(method);

            Assert.Equal("interval", exception.ParamName);
        }
Exemple #13
0
        private void Myo2_OrientationDataAcquired(object sender, OrientationDataEventArgs f)
        {
            var         pose  = HeldPose.Create(f.Myo, Pose.Fist, Pose.DoubleTap);
            const float PI    = (float)System.Math.PI;
            var         Roll  = (f.Roll + PI) / (PI * 2.0f) * 100;
            string      data2 = "Roll: " + Roll.ToString() + Environment.NewLine;

            InvokeData2(data2);
            var InitRoll = 50;

            if (f.Myo.Pose == Pose.DoubleTap)
            {
                this.Close();
            }
            if (f.Myo.Pose == Pose.Fist)
            {
                PlayerTwoMovement = 0;
            }
            else if (Roll <= InitRoll)
            {
                if (Player2.Location.X + Player2.Width > this.Width)
                {
                    PlayerTwoMovement = 0;
                }
                else
                {
                    SpeedOfPlayer     = 7;
                    PlayerTwoMovement = SpeedOfPlayer;
                }
                //PlayerOneMovement = SpeedOfPlayer;
            }
            else if (Roll >= InitRoll)
            {
                if (Player2.Location.X < 0)
                {
                    PlayerTwoMovement = 0;
                }
                else if (Player2.Location.X > 0)
                {
                    SpeedOfPlayer     = 7;
                    PlayerTwoMovement = -SpeedOfPlayer;
                }
            }
        }
Exemple #14
0
        public MainWindow()
        {
            InitializeComponent();

            // create a hub that will manage Myo devices for us
            using (var hub = Hub.Create())
            {
                // listen for when the Myo connects
                hub.MyoConnected += (sender, e) =>
                {
                    this.Dispatcher.Invoke((Action)(() =>
                    {
                        statusTbx.Text = "Myo has connected!";
                        e.Myo.Vibrate(VibrationType.Short);
                        // setup for the pose we want to watch for
                        var pose = HeldPose.Create(e.Myo, Pose.Fist, Pose.FingersSpread);
                        // set the interval for the event to be fired as long as
                        // the pose is held by the user
                        pose.Interval = TimeSpan.FromSeconds(4);
                        pose.Start();
                        pose.Triggered += Pose_Triggered;
                    }));
                };


                // listen for when the Myo disconnects
                hub.MyoDisconnected += (sender, e) =>
                {
                    this.Dispatcher.Invoke((Action)(() =>
                    {
                        statusTbx.Text = "Myo has disconnected!";
                        e.Myo.PoseChanged -= Pose_Triggered;
                    }));
                };


                // wait on user input
                //ConsoleHelper.UserInputLoop(hub);
            }
        }
Exemple #15
0
        //Modified code from the Myo Sharp tutorial on GitHub
        //Available at: https://github.com/tayfuzun/MyoSharp
        public static void Myo_Start()
        {
            //Create a hub that will manage Myo devices for us
            var channel = Channel.Create(
                ChannelDriver.Create(ChannelBridge.Create(),
                                     MyoErrorHandlerDriver.Create(MyoErrorHandlerBridge.Create())));

            IHub hub = Hub.Create(channel);

            //Listen for when the Myo connects
            hub.MyoConnected += (sender, e) =>
            {
                Console.WriteLine("Myo {0} has connected!", e.Myo.Handle);
                e.Myo.Vibrate(VibrationType.Short);
                e.Myo.PoseChanged             += Myo_PoseChanged;
                e.Myo.OrientationDataAcquired += Myo_OrientationDataAcquired;

                var pose = HeldPose.Create(e.Myo, Pose.Fist);
                pose.Interval = TimeSpan.FromSeconds(0.5);

                //For every Myo that connects, listen for special sequences
                var sequence = PoseSequence.Create(e.Myo, Pose.WaveOut, Pose.WaveIn);
                sequence.PoseSequenceCompleted += Sequence_PoseSequenceCompleted;
            };

            //Listen for when the Myo disconnects
            hub.MyoDisconnected += (sender, e) =>
            {
                Console.WriteLine("Oh no! It looks like {0} arm Myo has disconnected!", e.Myo.Arm);
                e.Myo.PoseChanged             -= Myo_PoseChanged;
                e.Myo.OrientationDataAcquired -= Myo_OrientationDataAcquired;
            };

            //Start listening for Myo data
            channel.StartListening();
            Console.WriteLine("Listening to channel...");

            //Wait on user input
            ConsoleHelper.UserInputLoop(hub);
        }
Exemple #16
0
        private static void Main(string[] args)
        {
            // create a hub to manage Myos
            using (var hub = Hub.Create())
            {
                // listen for when a Myo connects
                hub.MyoConnected += (sender, e) =>
                {
                    Console.WriteLine("Myo {0} has connected!", e.Myo.Handle);

                    // setup for the pose we want to watch for
                    var pose = HeldPose.Create(e.Myo, Pose.Fist, Pose.FingersSpread);

                    // set the interval for the event to be fired as long as
                    // the pose is held by the user
                    pose.Interval = TimeSpan.FromSeconds(0.5);

                    pose.Start();
                    pose.Triggered += Pose_Triggered;
                };

                ConsoleHelper.UserInputLoop(hub);
            }
        }