C# 传输接收到的串行端口数据

C# 传输接收到的串行端口数据,c#,wpf,xaml,serial-port,C#,Wpf,Xaml,Serial Port,我正在使用LiveCharts和串行端口数据绘制一个折线图。我得到了来自另一个类的数据,同时图形函数在它自己的独立类中。我正试图从串行端口获取与X轴相等的数据。这是我的密码: 图形代码: public ChartValues<ChartDataPoints> Values { get; set; } public GraphControl() { InitializeComponent(); //Mapper

我正在使用LiveCharts和串行端口数据绘制一个折线图。我得到了来自另一个类的数据,同时图形函数在它自己的独立类中。我正试图从串行端口获取与X轴相等的数据。这是我的密码:

图形代码:

    public ChartValues<ChartDataPoints> Values { get; set; }

    public GraphControl()
    {
        InitializeComponent();


        //Mapper
        var mapper = Mappers.Xy<ChartDataPoints>()
            .X(model => model.Session)
            .Y(model => model.Value);

        Charting.For<ChartDataPoints>(mapper);
        Values = new ChartValues<ChartDataPoints>();
        var _session = new Stopwatch();
        _session.Start();

        //Task
        Task.Run(() =>
        {
            while (true)
            {
                Thread.Sleep(30);

                //we add the lecture based on our StopWatch instance
                Values.Add(new ChartDataPoints
                {
                    Session = _session.ElapsedMilliseconds,
                    Value = 1 //This needs to be replaced with data from the Serial port!!
                });
            }
        });

        DataContext = this;
    }

    #region INotifyPropertyChanged implementation

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName = null)
    {
        if (PropertyChanged != null)
            PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
    #endregion

}
这是我的SerialPort类:(它位于一个名为Hardware的独立项目中)


那么,为了能够从串行端口获得与变量值相等的数据,我缺少了什么呢?因此,图形将绘制来自串行端口的数据?

如果您有两个独立的项目,那么您需要在它们之间建立某种形式的连接,也可以在图形代码中的某个位置引用SerialPort类,或者您希望如何访问indata

否则,如果不需要活动打印,请将ForceCellData中的数据保存在txt文件中,然后从中读取数据,稍后使用图形代码进行打印

public class ChartDataPoints
{
    public double Session { get; set; }
    public double Value { get; set; }
}
    public ForceCellData()
    {
        try
        {
            string _port3 = "COM3";
            SerialPort defaultSerial = new SerialPort(_port3);
            defaultSerial.BaudRate = 9600;
            defaultSerial.Parity = Parity.None;
            defaultSerial.StopBits = StopBits.One;
            defaultSerial.DataBits = 8;
            defaultSerial.Handshake = Handshake.None;
            defaultSerial.RtsEnable = true;
            defaultSerial.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            defaultSerial.Open();
        }
        catch
        {
            Console.WriteLine("Could not connect to COM3!");
        }
    }

    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        Thread.Sleep(200);
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();

        indata = indata.Trim().Replace("\r", string.Empty);
        indata = indata.Trim().Replace("\n", string.Empty);
        indata = indata.Trim().Replace("-", string.Empty);
        var split = indata.Split('.');


        foreach (var stringData in split)
        {

            if (!string.IsNullOrWhiteSpace(stringData) && double.TryParse(stringData, out double convertdata))
            {
                double Xdata;
                Xdata = convertdata; //Don't know what to do here...
            }
        }
    }
}