Como mencione a partir de esta entrada y las siguientes será necesario usar componentes o módulos externos para realizar los ejemplos.
En esta ocasión veremos como leer e imprimir por el puerto serial de NetDuino. Recordemos que el puerto MicroUSB solo sirve para debuggear, por lo que si queremos recibir o enviar información es necesario usar uno de los puertos serial de la placa, que por cierto tiene 4!
Así pues necesitamos un modulo que nos permita leer la información desde el ordenador, en esta entrada usare el modulo CP2102.
Para conectarlo es simple, unimos los pines GND, TX y RX de ambas placas entre si y conectamos cada USB de cada placa al PC.
En cuanto al código también es sencillo siempre y cuando nos conformemos con lo que nos proporciona NetDuino de serie, que es la lectura y escritura de bytes, si queremos enviar o recibir otro tipo de información ya nos lo tendremos que montar nosotros como veremos en la próxima entrada que publicare.
El siguiente código hace un eco de todo lo que se le envié al NetDuino desde el PC, es simple, byte que recibe byte que envía por donde vino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.IO.Ports; namespace com.giltesa.netduino.ejemplos { public class Program { public static void Main() { SerialPort serial = new SerialPort("COM1" , 9600); serial.Open(); while( true ) if( serial.BytesToRead > 0 ) serial.WriteByte((byte)serial.ReadByte()); } } } |
Y este otro código enciende y mantiene encendido el led de la placa cuando recibe un 1 o lo apaga en caso de recibir cualquier otra cosa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System.IO.Ports; using Microsoft.SPOT.Hardware; using SecretLabs.NETMF.Hardware.Netduino; namespace com.giltesa.netduino.ejemplos { public class Program { public static void Main() { OutputPort led = new OutputPort(Pins.ONBOARD_LED , false); SerialPort serial = new SerialPort("COM1" , 9600); serial.Open(); while( true ) { if( serial.BytesToRead > 0 ) { if( serial.ReadByte() == '1' ) led.Write(true); else led.Write(false); serial.Flush(); } } } } } |