Member 12775240 Ответов: 1

Нужна помощь по графике в режиме реального времени для порт seriell


Привет

мне нужна помощь для сюжета в реальном времени.
Что не так, я не нашел.

Что такое забыть?




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.IO;
using System.IO.Ports;
using System.Management;
using System.Windows.Forms.DataVisualization.Charting;

namespace Graphs
{
    public partial class Form1 : Form
    {
        private string data;
        public Form1()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();   //Programm schliessen
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] ports = SerialPort.GetPortNames();
            foreach (string port in ports)
            {
                comboBox1.Items.Add(port);
            }
        }

        string t;

        private void button2_Click(object sender, EventArgs e)
        {
            t = comboBox1.Text.ToString();

            sErial(t);

        }
        SerialPort sp;
        void sErial(string Port_name)
        {
            sp = new SerialPort(Port_name, 9600, Parity.None, 8, StopBits.One);

            sp.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            sp.Open();


        }

        private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {

            SerialPort sp = (SerialPort)sender;

            string w = sp.ReadLine();

            //string msg = sp.ReadExisting();
            if (w != String.Empty)
            {
                Invoke(new Action(() => richTextBox1.AppendText(w)));
            }

            
                  this.chart1.Series["Data1"].Points.AddXY(rt, data);


        }

        double rt = 0;
        Boolean i = false;
        private void timer1_Tick(object sender, EventArgs e)
        {
            rt = rt + 0.1;
        }

    }






}


спасибо

Что я уже пробовал:

У меня нет работы с графиками .
Я новичок

1 Ответов

Рейтинг:
0

Ralf Meier

Сначала :
вы добавляете свою переменную "данные" в качестве значения на диаграмму-так :
1-я ошибка : "данные" должны быть числовой переменной, возможно, целочисленной, одинарной или двойной ... но не веревочка !!!
2-я ошибка : где вы назначаете "данные" (если это числовая переменная)?

Какие данные вы получаете с помощью sp. Readline внутри метода 'DataReceivedHandler' ?
Могли бы вы увидеть значения внутри вашего RichTextbox, которые имеют смысл ?


Member 12775240

Да, я вижу значения на Richtextbox.
Это данные Лигцензора. Да это число

вместо строки двойной записи?



спасибо

Ralf Meier

Да... вы должны преобразовать строку (например) в двойную переменную и поместить эту переменную в кодовую строку :
это.диаграмма1.Серии["Данные1"].Точки.AddXY(rt, myDouble);

Ralf Meier

Теперь все в порядке ...?