Vous utilisez un navigateur obsolète, veuillez le mettre à jour.
Veuillez utiliser un navigateur internet moderne avec JavaScript activé pour naviguer sur OpenClassrooms.com
Une question ? Pas de panique, on va vous aider !
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); }
Vous pouvez rédiger votre message en Markdown ou en HTML uniquement.