Uno de los requerimientos habituales en nuestros diseños es la posibilidad de intercambiar tramas con otros dispositivos a través del puerto serie.
En este ejemplo, realizaremos el punto de entrada para el modulo “usbSerial” en un FEZ-Cerberus. En el siguiente ejemplo recibiremos los bytes enviados por el dispositivo anfitrión y simplemente los reenviaremos… efectivamente! “Echo Response!”.
Espero os sea útil.
PepLluis,
using Microsoft.SPOT; using GT = Gadgeteer; using Gadgeteer.Modules.GHIElectronics; namespace usbSerialSample { public partial class Program { void ProgramStarted() { // Configurar el modulo serie usbSerial.Configure(9600, GT.Interfaces.Serial.SerialParity.None, GT.Interfaces.Serial.SerialStopBits.One,8); usbSerial.SerialLine.DataReceived += new GT.Interfaces.Serial.DataReceivedEventHandler(SerialLine_DataReceived); usbSerial.SerialLine.Open(); } void SerialLine_DataReceived(GT.Interfaces.Serial sender, System.IO.Ports.SerialData data) { try { led7r.TurnLightOn(1, true); // Indicar Recepción led 1 (modulo led7r) int toRead = usbSerial.SerialLine.BytesToRead; // Cantidad de bytes disponibles para leer byte[] buffer = new byte[toRead]; // Dimensionar array para leer del buffer usbSerial.SerialLine.Read(buffer, 0, toRead); // leer bytes recibidos usbSerial.SerialLine.Write(buffer, 0, toRead); // reenviar de vuelta bytes recibidos led7r.TurnLightOff(7); // apagar led señalizacion "error" led7r.TurnLightOff(1); // apagar led 1, para indicar fin operación } catch { led7r.TurnLightOn(7, true); // señalizar error encendiendo led rojo (led7r) } } } }