private async void _myoHub_MyoConnected(object sender, MyoEventArgs e) { e.Myo.Vibrate(VibrationType.Long); await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { tblUpdates.Text = "Myo Connected: " + e.Myo.Handle; }); // add the pose changed event here e.Myo.PoseChanged += Myo_PoseChanged; // unlock the Myo so that it doesn't keep locking between our poses e.Myo.Unlock(UnlockType.Hold); try { var sequence = PoseSequence.Create(e.Myo, Pose.FingersSpread, Pose.WaveIn); sequence.PoseSequenceCompleted += Sequence_PoseSequenceCompleted; } catch (Exception myoErr) { string strMsg = myoErr.Message; } }
private void _hub_MyoConnected(object sender, MyoEventArgs e) { //When myo connects, unlock myo so the user can interact with it at all times. string status = "Myo is Connected"; e.Myo.Unlock(UnlockType.Hold); //Create sequence for the rage ability (Fist -> Fingerspread). var sequence = PoseSequence.Create( e.Myo, Pose.Fist, Pose.FingersSpread); sequence.PoseSequenceCompleted += sequence_PoseSequenceCompleted; //Whenever pose is changed, go to poseChanged event. e.Myo.PoseChanged += Myo_PoseChanged; //Whenever orientation is changed, go to this event. e.Myo.OrientationDataAcquired += Myo_OrientationDataAcquired; if (isConnectedLbl.InvokeRequired) { isConnectedLbl.Invoke(new MethodInvoker(delegate { isConnectedLbl.Text = status; })); } }
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); // for every Myo that connects, listen for special sequences var sequence = PoseSequence.Create( e.Myo, Pose.WaveOut, Pose.WaveIn); sequence.PoseSequenceCompleted += Sequence_PoseSequenceCompleted; }; // start listening for Myo data channel.StartListening(); ConsoleHelper.UserInputLoop(hub); } }
public void RemovePoseSequence(IMyo myo, params Pose[] poses) { var sequence = PoseSequence.Create(myo, poses); if (!poseSequences.Contains(sequence)) { return; } sequence.PoseSequenceCompleted -= Sequence_PoseSequenceCompleted; poseSequences.Remove(sequence); }
public void AddPoseSequence(IMyo myo, params Pose[] poses) { var sequence = PoseSequence.Create(myo, poses); if (poseSequences.Contains(sequence)) { return; } poseSequences.Add(sequence); sequence.PoseSequenceCompleted += Sequence_PoseSequenceCompleted; }
//testing values public MyoSoundControl(MainWindow Gui) { this.Window = Gui; this.Channel = MyoSharp.Communication.Channel.Create( ChannelDriver.Create(ChannelBridge.Create(), MyoErrorHandlerDriver.Create(MyoErrorHandlerBridge.Create()))); this.Hub = MyoSharp.Device.Hub.Create(Channel); Hub.MyoConnected += (sender, e) => { this.myo = e.Myo; e.Myo.Vibrate(VibrationType.Long); e.Myo.PoseChanged += Myo_PoseChanged; e.Myo.Locked += Myo_Locked; e.Myo.Unlocked += Myo_Unlocked; this.myo.Unlock(UnlockType.Hold); //Posing Tests //this.PoseToSound[Pose.Fist] = new SoundPlayer("./Sound/Mario.wav"); //this.PoseToSound[Pose.WaveIn] = new SoundPlayer("./Sound/Glass.wav"); //this.PoseToSound[Pose.WaveOut] = new SoundPlayer("./Sound/Slap.wav"); //Sequence Test IPoseSequence sequence0 = PoseSequence.Create(e.Myo, Pose.Fist, Pose.FingersSpread); sequence0.PoseSequenceCompleted += PoseSequenceCompleted; this.PoseSequenceToSound[sequence0] = new SoundPlayer("./Sound/Mario.wav"); IPoseSequence sequence1 = PoseSequence.Create(e.Myo, Pose.WaveIn, Pose.WaveOut); sequence1.PoseSequenceCompleted += PoseSequenceCompleted; this.PoseSequenceToSound[sequence1] = new SoundPlayer("./Sound/Slap.wav"); IPoseSequence sequence2 = PoseSequence.Create(e.Myo, Pose.WaveOut, Pose.WaveIn); sequence2.PoseSequenceCompleted += PoseSequenceCompleted; this.PoseSequenceToSound[sequence2] = new SoundPlayer("./Sound/Glass.wav"); }; Hub.MyoDisconnected += (sender, e) => { e.Myo.PoseChanged -= Myo_PoseChanged; e.Myo.Locked -= Myo_Locked; e.Myo.Unlocked -= Myo_Unlocked; }; }
void GeneratePoses(float startTime, float stopTime) { List <Pose> poses = new List <Pose>(); float timeStep = 1f / (float)samplingRate; for (float sampleTime = startTime; sampleTime < stopTime; sampleTime += timeStep) { poses.Add(GeneratePose(sampleTime)); } PoseSequence ps = (PoseSequence)ScriptableObject.CreateInstance(typeof(PoseSequence)); ps.poseSequence = poses.ToArray(); ps.samplingFPS = samplingRate; Debug.Log(ps.poseSequence[5].leftArm.rotation.eulerAngles); string name = "Assets/PoseSequences/" + animationClip.name + ".asset"; AssetDatabase.CreateAsset(ps, name); }
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); // for every Myo that connects, listen for special sequences var sequence = PoseSequence.Create( e.Myo, Pose.WaveOut, Pose.WaveIn); sequence.PoseSequenceCompleted += Sequence_PoseSequenceCompleted; }; ConsoleHelper.UserInputLoop(hub); } }
//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); }