Vous êtes sur la page 1sur 3

using using using using using using using using

System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.IO.Ports; System.Windows.Forms;

namespace Termometro_Digitale { public partial class TermometerForm : Form { // Global variables and stuff ! SerialPort Arduino; double adc_value; double tempInCelcius; double incertezza; private void calcolaTemperaturaInCelcius() { tempInCelcius = 0; ; } private void calcolaIncertezza() { incertezza = 0; ; } // when form opens makes the reset and arduino initialization \\ public TermometerForm() { InitializeComponent(); Arduino = new System.IO.Ports.SerialPort(); Arduino.PortName = "COM3"; Arduino.BaudRate = 9600; Arduino.Parity = Parity.None; Arduino.DtrEnable = true; Arduino.Handshake = Handshake.None; Arduino.Open(); if (Arduino.IsOpen) { InfoTextBox.Text = "Serial line started at 9600\r\n"; }

// When Form Closes it closes also the communication \\ private void TermometerForm_FormClosing(object sender, FormClosedEventArgs e)

if (Arduino.IsOpen) { Arduino.Close(); }

// Close Button event exits from program \\ private void Close_Click(object sender, EventArgs e) { Application.Exit(); } private void TempInGradCelcius_Click(object sender, EventArgs e) { if (Arduino.IsOpen) { // Da informazioni alla infoTextBox \\ InfoTextBox.AppendText("\r\nRecquesting Temperature....\r\n"); // invia un flag ad arduino che deve fare una singola misura \\ Arduino.Write("1"); //procedura che maneggia la ricezzione dei dati InfoTextBox.AppendText("Received number is: "); Arduino.DataReceived += Arduino_DataReceived;

} }

// routine di ricezzione dati private void Arduino_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { String linea = Arduino.ReadLine(); this.BeginInvoke(new LineReceivedEvent(LineReceived), linea); } catch (System.IO.IOException exception) { ; } catch (InvalidOperationException etr) { ; } } // Delegazione di stampa la line nell text box \\ private delegate void LineReceivedEvent(string linea);

// Stampa della linea acquisita + possibili manipolazioni dell valore ricevuto\\ private void LineReceived(string linea) { // Torna in una nuova linea InfoTextBox.AppendText(linea); //***Manipola la line per poter fare la conversione da stringa in intero*// adc_value = Convert.ToDouble(linea);//La manipolazione consiste solo nell convertire in double la stringa; calcolaTemperaturaInCelcius();//non ritornano niente ne ricevono niente perche usano le variabili globali calcolaIncertezza(); /////////////////////////////////////////////////////////// ////////////////////////////////////////////// InfoTextBox.AppendText("\r\n"); TemperatureTextBox.Text = " " + tempInCelcius + " +- " + incertezza + "%" + " C ";///conversione in stringa finale; } private void SetZeroGradCelcius_Click(object sender, EventArgs { if (Arduino.IsOpen) { // Da informazioni alla infoTextBox \\ InfoTextBox.AppendText("\r\nCalibrating Termometer at /*** Qua va la funzione di taratura***/ InfoTextBox.AppendText("\r\nCalibrating Status: OK"); } }

e)

0C");

private void ClearReceived_Click(object sender, EventArgs e) { InfoTextBox.Clear(); }

Vous aimerez peut-être aussi