从 Myo 接收数据并显示在 ac# 图表上

索鲁什·侯赛因普尔

我正在尝试使用 c# 在图表上显示 Myo 数据。我从 Myo 接收数据并将其发送到图表,但它不会显示任何内容。网上的例子对我没有帮助!这是代码(我想我有线程但不太了解,生产者类从 myo 接收原始 emg 数据,Form1 应该显示它):

using MyoSharp.Communication;
using MyoSharp.Device;
using MyoSharp.Exceptions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;


namespace MyoThings
{
    public partial class Form1 : Form
    {
        int i = 0;

        public Form1()
        {
            InitializeComponent();
        }



        private void button1_Click(object sender, EventArgs e)
        {
            Producer producer = new Producer();
            producer.StartConnection();
        }

        public void receiveData(int data)
        {
            Console.WriteLine(data);
            chart1.Series[0].Points.Add(i++, data); // won't add anything - 
            chart1.Invalidate();

        }


    }

    class Producer
    {
        Chart chart = new Chart();

        public void StartConnection()
        {
            using (var channel = Channel.Create(ChannelDriver.Create(ChannelBridge.Create(),
                MyoErrorHandlerDriver.Create(MyoErrorHandlerBridge.Create()))))
            {
                using (var hub = Hub.Create(channel))
                {
                    hub.MyoConnected += (sender, e) =>
                    {
                        Console.WriteLine($"Myo Connected, handle: {e.Myo.Handle}");
                        e.Myo.Vibrate(VibrationType.Short);
                        e.Myo.EmgDataAcquired += Myo_EmgDataAcquired;
                        e.Myo.SetEmgStreaming(true);

                    };
                    channel.StartListening();
                    //int i = 0;
                    while (true)
                    {

                    }
                }
            }

        }

        private static void Myo_EmgDataAcquired(object sender, EmgDataEventArgs e)
        {
            //Console.WriteLine(e.EmgData.GetDataForSensor(1));
            Producer producer = new Producer();
            Form1 form = new Form1();
             //sends data of myo to chart
            form.receiveData(e.EmgData.GetDataForSensor(1));

        }
    }
}
索鲁什·侯赛因普尔

我可以自己回答。我将图表发送到生产者班并加分

    using MyoSharp.Communication;
    using MyoSharp.Device;
    using MyoSharp.Exceptions;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Threading;
    using System.Diagnostics;
    using System.Windows.Forms.DataVisualization.Charting;

    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {

            private Producer producer;
            private bool sitSensorOne = true;
            private bool sitSensorTwo = true;
            private bool sitSensorThree = true;
            private bool sitSensorFour = true;
            private bool sitSensorFive = true;
            private bool sitSensorSix = true;
            private bool sitSensorSeven = true;
            private bool sitSensorEighth = true;

            public Form1()
            {
                InitializeComponent();
                producer = new Producer(chart1);
                producer.YSeriesEvent += MyHandler;
                chart1.Series[0].Enabled = true;
                Load += (sender, e) => producer.Start();

            }

            private void MyHandler(object sender, int data)
            {
                Invoke(new Action(() =>
                {

                }));
            }

    }
    }

        class Producer
        {
            public event EventHandler<int> YSeriesEvent;
            private Thread thread;
            public int Data;
            private Chart chart;
            public Producer(Chart chart)
            {
                this.chart = chart;
                thread = new Thread(new ThreadStart(this.Work));
                thread.IsBackground = true;
                thread.Name = "My Worker";
            }

            public void Start()
            {
                thread.Start();
            }

            private void Work()
            {

                using (var channel = Channel.Create(ChannelDriver.Create(ChannelBridge.Create(),
                       MyoErrorHandlerDriver.Create(MyoErrorHandlerBridge.Create()))))
                {
                    using (var hub = Hub.Create(channel))
                    {
                        hub.MyoConnected += (sender, e) =>
                        {
                            Console.WriteLine($"Myo connected, handle: {e.Myo.Handle}");
                            e.Myo.Vibrate(VibrationType.Short);
                            e.Myo.EmgDataAcquired += Myo_EmgDataAcquired;
                            e.Myo.SetEmgStreaming(true);
                            YSeriesEvent?.Invoke(this, Data);

                        };
                        channel.StartListening();
                        while (true) { }
                    }
                }
            }
            private void Myo_EmgDataAcquired(object sender, EmgDataEventArgs e)
            {

                Data = e.EmgData.GetDataForSensor(3);
                Console.WriteLine(Data);
                chart.Invoke(new Action(() =>
                {
                    for (int i = 0; i < 8; i++)
                        chart.Series[i].Points.AddY(e.EmgData.GetDataForSensor(i));
                }
                ));

            }

            private void returnData()
            {
                chart.Series[0].Points.AddY(Data);
                Console.WriteLine(Data);
            }
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Myo Armband中使用EMG原始数据

来自分类Dev

如何在Myo Armband中使用EMG原始数据

来自分类Dev

处理程序回调在图表上准确接收数据

来自分类Dev

处理程序回调在图表上准确接收数据

来自分类Dev

在scrollTop()上显示Google图表

来自分类Dev

在 Highcharts 上显示单个图表

来自分类Dev

图表SSRS上的大数据

来自分类Dev

图表上的数据事件绑定

来自分类Dev

使用数据库数据在Google图表上显示报告

来自分类Dev

我的JavaFX工具提示未显示在图表数据节点上

来自分类Dev

高图表-在列范围数据上显示标记符号

来自分类Dev

SVG线未显示在Google图表上?

来自分类Dev

在n3图表上显示阈值

来自分类Dev

Google图表在yAxis上持续显示负值

来自分类Dev

在Google图表上取消显示空值

来自分类Dev

SVG线未显示在Google图表上?

来自分类Dev

图表在X轴上显示错误的日期

来自分类Dev

共享点上的Excel:图表不显示

来自分类Dev

难以在图表上显示大量值

来自分类Dev

在n3图表上显示阈值

来自分类Dev

Google图表在yAxis上持续显示负值

来自分类Dev

无法获得图例以在图表上正确显示

来自分类Dev

Google图表未显示在iOS设备上

来自分类Dev

psensor 在 Ubuntu 18.04 上不显示图表

来自分类Dev

在图表上显示系列堆栈标签

来自分类Dev

为什么标签不显示在图表上?

来自分类Dev

在 iOS 图表的左轴上显示文本

来自分类Dev

具有分组数据的Excel上的图表

来自分类Dev

highcharts - 复制并粘贴图表上的数据