private static void Main() { // create a hub to manage Myos using (var channel = Channel.Create( ChannelDriver.Create(ChannelBridge.Create(), MyoErrorHandlerDriver.Create(MyoErrorHandlerBridge.Create())))) using (var hub = Hub.Create(channel)) { // listen for when a Myo connects hub.MyoConnected += (sender, e) => { Console.WriteLine("Myo {0} has connected!", e.Myo.Handle); // unlock the Myo so that it doesn't keep locking between our poses e.Myo.Unlock(UnlockType.Hold); // 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; }; // start listening for Myo data channel.StartListening(); ConsoleHelper.UserInputLoop(hub); } }
private void myoHub_MyoConnected(object sender, MyoEventArgs e) { m_CTId0.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 }
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); }
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); }
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(); }
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); }
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); }
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); }
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; }
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); }
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; }
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; }
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); }
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; } } }
//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); }
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); } }
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); } }