Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino, C# et WinForm sonde de température

    28 décembre 2023 à 20:51:42

    Bonjour la communauté,

    Je bloque sur un bout de code trouvé sur le net.

    Je veux adapter ce morceau a un très gros projet de gestion pour un Observatoire.

    J'ai beau faire comme le code rien ne fonctionne

    Ni les label, ni le Chart ne fonctionnent.

    Je peux charger la carte Arduino mais rien malgré les infos présentent dans la console série Arduino

    Merci a tous pour votre aide  :)

    Code C~#

    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;
    
    namespace sonde2
    {
        public partial class Form1 : Form
        {
            double temperature = 0, humidity = 0;
            bool updateData = false;
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                button_open.Enabled = true;
                button_close.Enabled = false;
    
                chart1.Series["Temperature"].Points.AddXY(1, 1);
                chart1.Series["Humidity"].Points.AddXY(1, 1);
            }
    
            private void comboBoxCOM_DropDown(object sender, EventArgs e)
            {
                string[] porLists = SerialPort.GetPortNames();
                comboBox_portLists.Items.Clear();
                comboBox_portLists.Items.AddRange(porLists);
            }
    
            private void button_open_Click(object sender, EventArgs e)
            {
                try
                {
                    serialPort1.PortName = comboBox_portLists.Text;
                    serialPort1.BaudRate = Convert.ToInt32(comboBox_BaudRate.Text);
                    serialPort1.Open();
    
                    button_open.Enabled = false;
                    button_close.Enabled = true;
    
                    chart1.Series["Temperature"].Points.Clear();
                    chart1.Series["Humidity"].Points.Clear();
    
                    MessageBox.Show("Success Connected to Arduino Board");
    
    
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message);
                }
            }
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                try
                {
    
                    serialPort1.Close();
    
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message);
                }
            }
    
            private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                string dataIn = serialPort1.ReadTo("\n");
                Data_Parcing(dataIn);
                this.BeginInvoke(new EventHandler(Show_Data));
    
            }
    
            private void Show_Data(object sender, EventArgs e)
            {
                if (updateData == true)
                {
                    label_Temperature.Text = string.Format("Temperature = {0}°C", temperature.ToString());
                    label_Humidity.Text = string.Format("Humidity = {0}%RH", humidity.ToString());
                    
    
    
    
                    chart1.Series["Temperature"].Points.Add(temperature);
                    chart1.Series["Humidity"].Points.Add(humidity);
                }
            }
    
            private void Data_Parcing(string data)
            {
                sbyte indexOF_startDataCharacter = (sbyte)data.IndexOf("@");
                sbyte indexOFA = (sbyte)data.IndexOf("A");
                sbyte indexOFB = (sbyte)data.IndexOf("B");
    
                if (indexOFA!=-1 && indexOFB!=-1 && indexOF_startDataCharacter!=-1)
    
                {
                    try
                    {
                        string str_temperature = data.Substring(indexOF_startDataCharacter + 1, (indexOFA - indexOF_startDataCharacter) - 1);
                        string str_humidity = data.Substring(indexOFA + 1, (indexOFB - indexOFA) - 1);
    
                        temperature = Convert.ToDouble(str_temperature);
                        humidity = Convert.ToDouble(str_humidity);
    
                        updateData = true;
    
                    }
                    catch (Exception)
                    {
    
                    }
    
                }
                else
                {
                    updateData = false;
                }
            }
    
            private void button_close_Click(object sender, EventArgs e)
            {
                try
                {
    
                    serialPort1.Close();
    
                    button_open.Enabled = true;
                    button_close.Enabled = false;
    
                    MessageBox.Show("Disonnected to Arduino Board");
    
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message);
                }
            }
        }
    }

    Code Arduino

    #include "DHT.h"
    
    #define DHTPIN 44
    #define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() 
    {
      Serial.begin(57600);
      dht.begin();
    }
    
    
    
    void loop() {
    
      //delay(500);
      float h = dht.readHumidity();
      float t = dht.readTemperature();
    
    
      if(isnan(h) || isnan(t) ){return;}
    
    Serial.print("@"); Serial.print(t); 
    Serial.print("A"); Serial.print(h);
    Serial.print("B"); Serial.print("\n");
    delay (500);
    
    }
    




    • Partager sur Facebook
    • Partager sur Twitter

    Arduino, C# et WinForm sonde de température

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    • Editeur
    • Markdown