[C#] Invio dati via porta seriale ad intervalli

domenica 23 agosto 2009 - 18.53

WilOhmsford Profilo | Newbie

ciao a tutti,

ho scritto un programmino WinForm semplicissimo, di prova, che serve ad inviare dati sulla porta seriale. Scrivo una stringa in una TextBox e, cliccando un pulsante, la spedisco tramite porta seriale, secondo questo codice:

namespace ProvaSeriale { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // apre la porta seriale all'apertura del programma private void Form1_Load(object sender, EventArgs e) { serialPort1.Open(); } // invia i dati via seriale private void button1_Click(object sender, EventArgs e) { serialPort1.WriteLine(textBox1.Text); } } }

Il mio dubbio, ora è: avendo un array di stringhe, è possibile inviarne gli elementi via porta seriale secondo un intervallo temporale predefinito?
Cioè, è possibile implementare un ciclo in cui invio l'elemento di indice "n", poi quello successivo (e così via) ad esempio ogni secondo? Esistono esempi?
Spero di essermi spiegato, e ringrazio in anticipo chi mi potrà fornire spunti e idee.

luxsor Profilo | Guru

Ciao Carlo,

Sinceramente non ho capito bene, quello che intendi fare!!! Speriamo di si

Ti consiglio di crearti una funzione "con una stringa in ingresso" che (APRE, INVIA e CHIUDE) il flusso sulla porta seriale.

Tale funzione la inserisci o in un timer o in un thread temporizzato su tot secondi.

Fammi sapere



------------------------
Luxsor

WilOhmsford Profilo | Newbie

Risolto con un Timer:

public partial class Form1 : Form { public Form1() { InitializeComponent(); } int i = 0; private void Form1_Load(object sender, EventArgs e) { serialPort1.Open(); timer1.Enabled = false; timer1.Interval = 1000; } int[] numeri = {1, 2, 3, 4, 5}; private void timer1_Tick(object sender, EventArgs e) { i++; serialPort1.Write(" " + numeri[i - 1].ToString()); } private void btInvio_Click(object sender, EventArgs e) { timer1.Start(); } }

Ho impostato l'intervallo del timer ad un secondo (1000 millisecondi), ed all'evento Tick (lo "scatto") ho associato l'istruzione di scrittura dell'elemento n-esimo dell'array. Ovviamente, siccome l'indice del vettore parte da zero, ho dovuto decrementarlo di uno (n-1). Il button "btInvio" serve a far partire il timer.
Grazie per il suggerimento!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5