刷新图表控件

时间:2014-10-14 16:00:20

标签: c# visual-studio-2013

这个让我有点疯狂。任何帮助感激不尽。这是一个简单的程序,用于从基于Arduino的温度传感器接收温度数据,并将其显示在表格上的图形控件中。该程序工作正常,并解析临时数据框。但是.....图形对象不刷新,整点是随时间显示数据。我认为我放入的chart1.DataBind命令强制刷新。我正在使用Visual Studio 2013 Express。任何关于我做错事的想法都非常感激。

// Start of program.
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;

namespace serial_port_with_events_attempt_4
{
public partial class Form1 : Form
{
    string RxString;
    int RxRead;
    int i;
    int RxDec1;
    int RxDec2;
    int RxDec3;
    float RxFloat;
    float RxFloat2;
    string locnString;


    public Form1()
    {
        InitializeComponent();
    }

    private void buttonStart_Click(object sender, EventArgs e)
    {
        serialPort1.PortName = "COM8";
        serialPort1.BaudRate = 9600;

        serialPort1.Open();
        if (serialPort1.IsOpen)
        {
            buttonStart.Enabled = false;
            buttonStop.Enabled = true;
            textBox1.ReadOnly = false;
        }
    }

    private void buttonStop_Click(object sender, EventArgs e)
    {
        if (serialPort1.IsOpen)
        {
            serialPort1.Close();
            buttonStart.Enabled = true;
            buttonStop.Enabled = false;
            textBox1.ReadOnly = true;
        }
    }

    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        RxRead = serialPort1.ReadByte();
        this.Invoke(new EventHandler(DisplayText));


    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {

    }

    private void DisplayText(object sender, EventArgs e)
    {
          if (RxRead == 126)
        {
            textBox1.AppendText(Environment.NewLine);
            i = 0;
        }

        if (i< 23)
        {
            if (i == 7)
            {
                if (RxRead == 51) // 51 in this position means that the temp sensor is the one in the wooden box
                { 
                   textBox1.AppendText("Temperature in Nick's office = ");
                   locnString = ("Nick's office");
                }
            }

            if (i == 17)
            {
                RxDec1 = RxRead - 48; // Read the tens unit
            }

            if (i == 18)
            {
                RxDec2 = RxRead - 48; // Read the units
            }

            if (i == 20)
            {
                RxDec3 = RxRead - 49; // read the decimal
            }

            if (i == 22)
            {
                RxFloat = ((RxDec1 * 10) + RxDec2);
                RxFloat2 = RxDec3;
                RxFloat2 = RxFloat2 / 10;
                RxFloat = RxFloat + RxFloat2;
                RxString = RxFloat.ToString();
                if (RxFloat < 30 && RxFloat >20)
                {
                    // Put the value in the main text box if it is not corrupt, (checking if the range is reasonable
                textBox1.AppendText(RxString);  // Frig about to get the reads in the right format and added together
                    // Add a new line into the temperature database
                temperature1DataSetTableAdapters.Temp1TableAdapter temp1tableadapter = new temperature1DataSetTableAdapters.Temp1TableAdapter();
                temp1tableadapter.Insert(DateTime.Now, RxFloat, locnString);
                }
                // Delete any old data.
                temperature1DataSetTableAdapters.TempTableAdapter temp2tableadapter = new temperature1DataSetTableAdapters.TempTableAdapter();
                temp2tableadapter.DeleteTempQuery();
                 // The above two lines work, but I need to amend to select on date TODO

                chart1.DataBind();


            }
         }
            i=i+1;
     }

    private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'temperature1DataSet.Temp' table. You can move, or remove it, as needed.
        this.tempTableAdapter.Fill(this.temperature1DataSet.Temp);

    }
    }
}

干杯,

Nick James

0 个答案:

没有答案