<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UART Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/uart/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/uart/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 15 Jan 2017 17:17:13 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>UART Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/uart/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Arduino aggiungere porta seriale con Software Serial Library</title>
		<link>https://logicaprogrammabile.it/software-serial-library-arduino-seriale/</link>
					<comments>https://logicaprogrammabile.it/software-serial-library-arduino-seriale/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Fri, 26 Aug 2011 09:16:41 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Comunicazione seriale]]></category>
		<category><![CDATA[RS232]]></category>
		<category><![CDATA[Software Serial Library]]></category>
		<category><![CDATA[SoftwareSerial]]></category>
		<category><![CDATA[UART]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1872</guid>

					<description><![CDATA[<p>Utilizzare Software Serial Library per aggiungere una porta seriale La comunicazione seriale RS232 è un modo semplice per permettere alla nostra board Arduino di comunicare con il computer piuttosto che con sensori o altri dispositivi. Principalmente Arduino UNO possiede una sola porta seriale, implementata in...</p>
<p>The post <a href="https://logicaprogrammabile.it/software-serial-library-arduino-seriale/">Arduino aggiungere porta seriale con Software Serial Library</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzare Software Serial Library per aggiungere una porta seriale</h1>
<p>La comunicazione seriale <strong>RS232</strong> è un modo semplice per permettere alla nostra board Arduino di comunicare con il computer piuttosto che con sensori o altri dispositivi.<br />
Principalmente Arduino UNO possiede una sola porta seriale, implementata in hardware sul chip Atmega328, e disponibile sui <strong>pin0 (Rx)</strong> e <strong>pin1 (Tx)</strong> della scheda.<br />
Sebbene, il più delle volte, una porta seriale sia sufficiente, può essere necessario instaurare un&#8217;ulteriore comunicazione seriale, ad esempio, per motivi di debugging o monitoring con un altro dispositivo o computer.<br />
In questo caso ci viene in aiuto la libreria <strong>SoftwareSerial (Software Serial Library)</strong> che permette di impiegare ulteriori pin disponibili sulla scheda per definire una porta seriale aggiuntiva.</p>
<p>Per utilizzarla è fondamentale inserire nello sketch il riferimento alla libreria tramite la parola chiave <strong>#include</strong>:</p>
<pre class="lang:arduino decode:true ">#include &lt;SoftwareSerial.h&gt;</pre>
<p>successivamente si definisce una variabile utilizzando il costruttore <strong>SoftwareSerial</strong>:</p>
<pre class="lang:arduino decode:true ">SoftwareSerial PortaSeriale = SoftwareSerial(pin_RX, pin_TX);</pre>
<p>&nbsp;</p>
<p>dove <span style="text-decoration: underline;">PortaSeriale</span> è il nome dell&#8217;oggetto, <span style="text-decoration: underline;">pin_RX</span> definisce il pin per ricevere i dati e <span style="text-decoration: underline;">pin_TX</span> definisce il pin per la trasmissione dati.</p>
<p><span id="more-1872"></span>Ora nella funzione Setup(), tramite pinMode, definiamo il pin previsto per la ricezione come input, e il pin previsto per la trasmissione come output. Specifichiamo inoltre la velocità di trasmissione a 9600bps.</p>
<pre class="lang:arduino decode:true ">void setup()
{
pinMode(pin_RX, INPUT);
pinMode(pin_TX, OUTPUT);

PortaSeriale.begin(9600);
}</pre>
<p>&nbsp;</p>
<p>Per leggere e scrivere sulla seriale vengono utilizzati gli stessi metodi implementati per Serial().</p>
<p>Di seguito l&#8217;esempio completo che permette di testare questa funzionalità impiegando i pin7 per la ricezione ed il pin8 per la trasmissione</p>
<pre class="lang:arduino decode:true ">#include &lt;SoftwareSerial.h&gt;

//creo una nuova porta seriale via software
SoftwareSerial PortaSeriale =  SoftwareSerial(7, 8);

//variabile
char EchoChar = 0;

void setup()  {
//definisco il pin7(RX) come ingresso
pinMode(7, INPUT);
//definisco il pin8(TX) come uscita
pinMode(8, OUTPUT);
//setto la velocita della seriale software
PortaSeriale.begin(9600);
}

void loop() {
//leggo dalla seriale(pin7)
EchoChar = PortaSeriale.read();
//invio il dato letto
PortaSeriale.print(EchoChar);

delay(10);

}</pre>
<p>&nbsp;</p>
<p>il circuito di per il test è rappresentato nell&#8217;illustrazione seguente:</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter wp-image-1878 size-full" title="Arduino_SerialPrint" src="https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_SerialPrint.gif" alt="Utilizzo libreria SoftwareSerial per aggiungere una porta seriale ad Arduino" width="623" height="372" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_SerialPrint.gif 623w, https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_SerialPrint-300x179.gif 300w" sizes="(max-width: 623px) 100vw, 623px" /></p>
<p>Avendo altri pin disponibili nulla ci vieta di definire un&#8217;ulteriore porta seriale o più.</p>
<p>Nonostante l&#8217;utilità di questa libreria, ci sono alcune limitazioni che bisogna conoscere, per evitare errori di programmazione e di progettazione:</p>
<ul>
<li>E&#8217; possibile utilizzare per la porta solamente la velocità di 9600bps</li>
<li>Non è possibile sapere se ci sono dati disponibili per la lettura come avviene per la funzione <strong>Serial.available()</strong></li>
<li>Il metodo<strong> read()</strong> è bloccante, quindi il codice si ferma fintanto che non arriva un byte da poter leggere</li>
<li>Non essendo presente un buffer di ricezione il metodo <strong>read()</strong> deve essere richiamato velocemente per evitare la perdita di dati.</li>
</ul>
<p>Queste limitazioni potrebbero far ripensare l&#8217;utilizzo della libreria, ma credo che sia comunque importante conoscerne il funzionamento per valutare, a seconda dei circuiti, se impiegarla o meno.<br />
Personalmente l&#8217;ho trovata molto utile per inviare dati ad altri dispositivi come funzione di monitoring, difatti potete utilizzare solamente la funzione <strong>print</strong> e tralasciare la read().</p>
<p>The post <a href="https://logicaprogrammabile.it/software-serial-library-arduino-seriale/">Arduino aggiungere porta seriale con Software Serial Library</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/software-serial-library-arduino-seriale/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Netduino e collegamento alla seriale RS232 del pc</title>
		<link>https://logicaprogrammabile.it/netduino-collegamento-seriale-rs232/</link>
					<comments>https://logicaprogrammabile.it/netduino-collegamento-seriale-rs232/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Thu, 10 Mar 2011 19:14:40 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Cominicazione]]></category>
		<category><![CDATA[HyperTerminal]]></category>
		<category><![CDATA[MAX233]]></category>
		<category><![CDATA[RS232]]></category>
		<category><![CDATA[Seriale]]></category>
		<category><![CDATA[UART]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=290</guid>

					<description><![CDATA[<p>Come usare la seriale RS232 L&#8217;interfaccia RS232 è un protocollo standard che permette lo scambio, a bassa velocità, tra dispositivi digitali. Lo standard RS232 nacque nei prima anni 60 e nonostante sia un protocollo piuttosto vecchio è ancora oggi utilizzato per la comunicazione tra microcontrollori,...</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-collegamento-seriale-rs232/">Netduino e collegamento alla seriale RS232 del pc</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come usare la seriale RS232</h1>
<p>L&#8217;interfaccia <strong>RS232 </strong>è un protocollo standard che permette lo scambio, a bassa velocità, tra dispositivi digitali. Lo standard RS232 nacque nei prima anni 60 e nonostante sia un protocollo piuttosto vecchio è ancora oggi utilizzato per la comunicazione tra microcontrollori, dispositivi industriali e da svariati circuiti che non necessitano di elevate velocità di comunicazione.<br />
Il termine seriale significa che i bit vengono trasferiti uno dopo l&#8217;altro su un singolo filo elettrico.</p>
<p>Il segnale RS232 è rappresentato nella figura seguente e può essere visualizzato tramite un comune oscilloscopio</p>
<p style="text-align: center;"><img decoding="async" class="aligncenter wp-image-294 size-full" title="Comunicazione RS232" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ComRS232.gif" alt="Segnale RS232 livelli logici" width="396" height="296" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ComRS232.gif 396w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ComRS232-300x224.gif 300w" sizes="(max-width: 396px) 100vw, 396px" /></p>
<p>Come possiamo vedere i valori di tensione del segnale RS232 vanno da -12Vdc a 12Vdc. Il segnale è composto sempre da un bit di start seguito da 8 bit di dati. Il bit 1 (Alto) è identificato da una tensione di -12Vdc mentre il bit 0 (Basso) corrisponde ad un livello di tensione di +12Vdc.</p>
<p>La velocità della comunicazione seriale è espressa in bps (bit per second) ed indica, appunto, la quantità di bit inviati in un secondo. La durata di un singolo bit dipende dalla velocità scelta per la trasmissione. Se per i nostri scopi abbiamo bisogno di una comunicazione seriale a 9600bps il singolo bit avrà una larghezza di 104us (1/9600).</p>
<p>Il connettore disponibile in molti pc desktop è un DB9 maschio ed è composto da nove pin, i quali svolgono delle funzioni specifiche:</p>
<p style="text-align: left;"><img decoding="async" class="aligncenter wp-image-300 size-full" title="Connetore Rs232 lato PC" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ConRs2321.gif" alt="rs232 pin function" width="468" height="289" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ConRs2321.gif 468w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ConRs2321-300x185.gif 300w" sizes="(max-width: 468px) 100vw, 468px" /><span id="more-290"></span>Quelli che ora ci interessano, per testare la nostra comunicazione seriale con il Netduino, sono il pin 2 (RX), il pin 3 (TX) ed il pin 5 (GND).<br />
Il Netduino ha due &#8216;porte&#8217; seriali disponibili tramite i pin 0 e 1 (UART1) e i pin 2 e 3 (UART2). Questi piedini lavorano con logica TTL e non possono essere collegati direttamente al connettore DB9 del pc, ma si ha bisogno di un componente esterno che converta il segnale TTL (0/5 Vdc) in un segnale RS232 (-12/+12 Vdc).<br />
Ci sono diversi componenti che permettono questa conversione, io solitamente uso il <a href="http://www.maxim-ic.com/datasheet/index.mvp/id/1798" target="_blank">MAX233</a> il cui circuito di impiego (pagina 21 del datasheet) è molto semplice e non necessita di ulteriori componenti esterni (condensatori o resistenze).</p>
<p>Lo schema elettrico del progetto è il seguente e risulta molto semplice nei collegamenti:</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-310 size-full" title="Netduino e collegamemento rs232" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ND_rs232.gif" alt="rs232 e integrato MAX233 CPP" width="589" height="355" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ND_rs232.gif 589w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ND_rs232-300x180.gif 300w" sizes="auto, (max-width: 589px) 100vw, 589px" /></p>
<p>La trasmissione dei dati avviene tramite il pin 1 del Netduino, che è collegato all&#8217;ingresso 3 del MAX233; l&#8217;uscita RS232 è disponibile sul pin 5 del MAX233 ed è collegata al pin 2 del connettore DB9 femmina (corrispondente al pin RX del PC). Viceversa il PC trasmette sul pin 3 del connettore DB9 maschio che è collegato tramite il connettore DB9 femmina al pin 4 del MAX233 che provvederà a convertire il segnale RS233 in TTL, l&#8217;uscita TTL del MAX233 disponibile sul pin 3 è collegata al pin 0 del Netduino.</p>
<p>Ora che il circuito è pronto, passiamo alla creazione del software di esempio per testare la comunicazione seriale tra Netduino e PC.<br />
Avviamo un nuovo progetto con Visual C#.<br />
Prima di scrivere il codice aggiungiamo un riferimento alla libreria <strong>Microsoft.SPOT.Hardware.SerialPort</strong>. In esplora soluzioni clicchiamo con il pulsante destro del mouse sulla voce <strong>Riferimenti</strong>, dal menu contestuale visualizzato, clicchiamo su <strong>Aggiungi Riferimento&#8230;</strong>, verrà visualizzata la finestra <strong>Add Reference</strong>. Clicchiamo sul tab <strong>.Net</strong>, poi sul componente <strong>Microsoft.SPOT.Hardware.SerialPort</strong> e confermiamo con il pulsante OK.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-321 size-full" title="Visual C# aggiungere riferimento" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/addref1.jpg" alt="Visual C# aggiungere riferimento" width="339" height="274" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/addref1.jpg 339w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/addref1-300x242.jpg 300w" sizes="auto, (max-width: 339px) 100vw, 339px" /></p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-322 size-full" title="Aggiungi Riferimento" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/addref.jpg" alt="Aggiungi Riferimento" width="574" height="426" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/addref.jpg 574w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/addref-300x222.jpg 300w" sizes="auto, (max-width: 574px) 100vw, 574px" /></p>
<p>Ora apriamo il file Program.cs ed iniziamo a scrivere il codice che permetterà al Netduino di inviare, ad intervalli di tempo regolari, una serie di caratteri al pc:</p>
<pre class="lang:c# decode:true ">using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

using System.IO.Ports;
using System.Text;

namespace NetduinoApplication1
{
public class Program
{
public static void Main()
{
SerialPort UART1 = new SerialPort("COM1", 9600, Parity.None,
8, StopBits.One);
OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);

UART1.Open();
String Messaggio = "Ciao!";
Byte[] bytesMessaggio = Encoding.UTF8.GetBytes(Messaggio);

while(true)
{
led.Write(true);
UART1.Write(bytesMessaggio, 0, bytesMessaggio.Length);
Thread.Sleep(100);
led.Write(false);

Thread.Sleep(500);
}

UART1.Close();
}

}
}</pre>
<p>&nbsp;</p>
<p>La prima cosa da fare è caricare il namespace System.IO.Ports (per accedere alla porta seriale) e System.Text (per convertire una stringa in un array di bytes e viceversa) (righe di codice 8 e 9).<br />
UART1 è l&#8217;oggetto che ci permette di accedere alla porta COM1 del Netduino (pin 0 e 1, mentre COM 2 è riferita ai pin 2 e 3) impostata per lavorare ad una velocità di 9600bps, con nessuna parità, 8 bit di dati ed un bit di stop.<br />
Queste impostazioni devono essere identiche a quelle della seriale del pc.<br />
Per avviare la comunicazione è necessario aprire la porta seriale, con il metodo Open() dell&#8217;oggetto UART1, mentre per spedire i dati dobbiamo utilizzare il metodo Write(). Questo metodo accetta un array di byte e bisogna specificare l&#8217;offset di questo array da spedire.<br />
L&#8217;oggetto <strong>led</strong> indica quando vengono spediti i dati sulla porta del Netduino, il metodo Sleep() crea invece un ritardo tra una spedizione e l&#8217;altra.</p>
<p>Avviamo il debug(F5) per fare girare il programma sul Netduino.</p>
<p>I dati vengono inviati al pc, per visualizzarli utilizziamo il programma <strong>HyperTerminal.</strong> Per i possessori di Windows Xp, dovete andare in:<br />
Start-&gt;Tutti i programmi-&gt;Accessori-&gt;Comunicazioni-&gt;HyperTerminal</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-369 size-full" title="Hyperterminal" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht.jpg" alt="Hyperterminal" width="490" height="159" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht.jpg 490w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht-300x97.jpg 300w" sizes="auto, (max-width: 490px) 100vw, 490px" /></p>
<p>all&#8217;avvio il programma chiede di dare un nome alla sessione, mettiamone uno indicativo e clicchiamo sul pulsante OK</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-370 size-medium" title="Configurazione Hyperterminal" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test-300x200.jpg" alt="Configurazione RS232 Hyperterminal" width="300" height="200" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test-300x200.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test.jpg 861w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p>La schermata seguente chiede quale porta seriale vogliamo usare, solitamente i pc odierni hanno una sola porta indicata come COM1 (verificate sul manuale della scheda madre), clicchiamo sul pulsante OK.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-372 size-medium" title="ht_test1" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test1-300x200.jpg" width="300" height="200" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test1-300x200.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test1.jpg 862w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p>La finestra successiva mostra i vari parametri configurabili per la porta COM1</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-373 size-medium" title="ht_test2" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test2-300x200.jpg" width="300" height="200" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test2-300x200.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test2.jpg 863w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p>Inseriamo gli stessi parametri che sono presenti nel codice C# relativi all&#8217;oggetto UART1</p>
<pre class="lang:c# decode:true ">SerialPort UART1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);</pre>
<p>&nbsp;</p>
<p>quindi:</p>
<p>Bit per secondo = 9600, Bit di dati = 8, Parità= Nessuno, Bit di Stop = 1, Controllo di Flusso = Nessuno.</p>
<p>Assicuriamoci che il cavo seriale colleghi il MAX233 ed il PC e confermiamo con il pulsante OK per avviare la ricezione dei dati dal Netduino</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-371 size-medium" title="ht_test3" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test3-300x242.jpg" width="300" height="242" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test3-300x242.jpg 300w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/ht_test3.jpg 565w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<p>Certamente è una bella emozione (a noi fanatici prende così!!) aver avviato una comunicazione tra un dispositivo hardware ed il pc.<br />
Il passo successivo è modificare il programma per dare la capacità al Netduino di ricevere comandi dal pc per creare una comunicazione bidirezionale completa.<br />
Ecco l codice per poter predisporre il Netduino alla ricezione dei comandi.</p>
<pre class="lang:c# decode:true ">using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

using System.IO.Ports;
using System.Text;

namespace NetduinoApplication1
{
public class Program
{
public static void Main()
{
OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);

SerialPort UART1 = new SerialPort("COM1", 9600, Parity.None,
8, StopBits.One);

UART1.Open();
String Messaggio = "RX OK!";
String MessaggioPC = "";
Int32 NumByteDisponibili = 0;
Byte[] bytesMessaggio = Encoding.UTF8.GetBytes(Messaggio);
Byte[] bytesRicevuti;

while(true)
{
if (UART1.BytesToRead &gt; 0)
{
NumByteDisponibili = UART1.BytesToRead;
bytesRicevuti = new Byte[NumByteDisponibili];
UART1.Read(bytesRicevuti, 0, NumByteDisponibili);
MessaggioPC = new String(Encoding.UTF8.GetChars(bytesRicevuti));

Debug.Print("Byte nel buffer del Netduino = " +
 NumByteDisponibili.ToString());
Debug.Print("Messaggio da PC = " + MessaggioPC);

//Accendi il Led
if (MessaggioPC == "a")
{
led.Write(true);
}

//Spegni il led
if (MessaggioPC == "s")
{
led.Write(false);
}

//Blink
if (MessaggioPC == "b")
{
Boolean Stato = true;
for (Int32 Ciclo = 0; Ciclo &lt;= 10; Ciclo++)
{
Stato = !Stato;
led.Write(Stato);
Thread.Sleep(100);
}
}

//invia al pc un informazione
UART1.Write(bytesMessaggio, 0, bytesMessaggio.Length);
}
Thread.Sleep(500);
}
UART1.Close();
}
}
}</pre>
<p>&nbsp;</p>
<p>Eseguiamo il debug(F5) per caricare il programma sul Netduino.</p>
<p>Per capire se il pc ha inviato dei dati al Netduino utilizziamo la proprietà <strong>BytesToRead</strong> dell&#8217;oggetto UART1; questa proprietà ci indica quanti byte sono presenti nel buffer della seriale del Netduino. Il codice verifica ciclicamente quando ci sono dei bytes nel buffer (UART1.BytesToRead &gt; 0); in funzione del numero di byte presenti, creo un array della dimensione appropriate (bytesRicevuti = new Byte[NumByteDisponibili];).<br />
Successivamente eseguo il metodo <strong>Read()</strong> che svuota il buffer della seriale e riempe l&#8217;arraybytesRicevuti.<br />
Ora posso lavorare con i dati inviati dal pc!<br />
Nel codice d&#8217;esempio accendo, spengo e faccio blinkare il led on board a seconda del dato inviato dal pc, utilizzando le varie istruzioni if. Da notare il metodo <strong>GetChar()</strong> che permette di codificare i byte nello standard UTF8.</p>
<p>Per comunicare con il Netduino posso sempre utilizzare <strong>HyperTerminal</strong>; nella configurazione standard HyperTerminal non visualizza i caratteri  digitati con la tastiera.<br />
Modifichiamo questa caratteristica andando nelle opzioni del programma cliccando sul menu <strong>File </strong>e poi sulla voce <strong>Proprietà</strong>.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-392 size-full" title="Proprieta Hyperterminal" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/HT_Proprieta.jpg" alt="Proprieta Hyperterminal" width="292" height="234" /><br />
Nella finestra appena visualizzata clicchiamo sul tab <strong>Impostazioni </strong>e poi sul pulsante <strong>Impostazioni ASCII&#8230;</strong>.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-393 size-medium" title="Proprieta Hyperterminal" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/HT_Proprieta1-272x300.jpg" alt="Proprieta Hyperterminal" width="272" height="300" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/HT_Proprieta1-272x300.jpg 272w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/HT_Proprieta1.jpg 384w" sizes="auto, (max-width: 272px) 100vw, 272px" /></p>
<p>Questa finestra presenta varie opzioni, spuntiamo la voce <strong>Eco dei caratteri digitati localmente</strong>, e confermiamo con il pulsante OK.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-394 size-medium" title="HT_Proprieta2" src="https://logicaprogrammabile.it/wp-content/uploads/2011/03/HT_Proprieta2-271x300.jpg" width="271" height="300" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/03/HT_Proprieta2-271x300.jpg 271w, https://logicaprogrammabile.it/wp-content/uploads/2011/03/HT_Proprieta2.jpg 384w" sizes="auto, (max-width: 271px) 100vw, 271px" /></p>
<p>Proviamo subito il codice!</p>
<p>Dalla finestra HyperTerminal digitiamo una <strong>a</strong> per accendere il led on board, una <strong>s</strong> per spegnerlo e la <strong>b</strong> per farlo blinkare. Il Netduino eseguirà queste operazioni e invierà al pc il testo <strong>RX OK!</strong> tramite l&#8217;istruzione <strong>UART1.Write(bytesMessaggio, 0, bytesMessaggio.Length);</strong>.</p>
<p>Questo semplice esperimento ci insegna le basi per iniziare ad interfacciare il pc con il Netduino e per capire come convertire il segnale TTL in segnale RS232.</p>
<p>Aspetto vostri commenti e consigli.</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-collegamento-seriale-rs232/">Netduino e collegamento alla seriale RS232 del pc</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/netduino-collegamento-seriale-rs232/feed/</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
	</channel>
</rss>
