Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ajustamos las propiedades bsicas, en nuestro caso, la velocidad a 9600. El puerto serie, se comportar como un dispositivo de e/s. La operacin completa consistir en: seleccionar un nombre de puerto (PortName) - abrir el puerto, (Open) - realizar la lectura/escritura(Read/Write) - cerrar el puerto(Close) EJEMPLO ESCRITURA
array<byte>^ buffer = gcnew array<byte>(10); buffer[0]=100;//envia un cdigo 100 serialPort1->PortName="COM"+COMPORT; serialPort1->Open(); serialPort1->Write(buffer,0,1); serialPort1->Close();
LECTURA Para la recepcin de datos establecemos que ocurra un evento por parte del puerto serial al recibir un Byte, y all utilizando la propiedad BytesToRead podemos determinar cuntos bytes disponemos para leer. Si hay datos, tenemos varias opciones para realizar la lectura, leer bytes ->ReadByte(), leer cierta cantidad de bytes ->Read(), leer una lnea (hasta recibir salto de lnea) ->ReadLinea() o leer lo que se encuentre en el buffer de recepcin ->ReadExisting (). En
IES Los Viveros Sevilla Dpto. Electrnica. 1
nuestro caso leemos lo que hay en el buffer, lo guardamos en un string e invocamos a una funcin que se encarga de escribir los datos en un TextBox. EJEMPLO LECTURA
char a; if(serialPort1->BytesToRead>0) { // Si hay datos a leer... a=serialPort1->ReadChar(); // Leemos 1 carcter.label3->Text=" "+a; }
Cuando manejanos eventos del objeto serialPort, se crean hilos o threads, lo que nos puede originar errores. Para evitarlos, debemos poner esta lnea al comienzo del programa:
CheckForIllegalCrossThreadCalls = 0;
CREANDO UN PROTOCOLO
A la hora de enviar y recibir datos desde y hacia Arduino, debemos crear nuestro propio protocolo. Para ello, crearemos un conjunto de rdenes-respuestas que arduino reciba y ejecute. Por ejemplo, podramos hacer: Cdigo 50 para leer entrada analgica 0. Cdigo 51 para leer entrada analgica 1. .. Cdigo 60 para leer entrada digital 0. Cdigo 61 para leer entrada digital 1. .. Cdigo 70 para escribir en la salida analgica 0; Cdigo 71 para escribir en la salida analgica 1; .. Cdigo 80 para escribir en la salida digital 0; Cdigo 81 para escribir en la salida digital 1; ..
Para finalizar el protocolo, haremos que las lecturas se enven con el cdigo + un guin-+el valor+ retorno de carro. El retorno de carro nos simplificar la tarea de la lectura.
Con esto, el programa en arduino, debera responder con el valor de la lectura en dicha entrada. Para poder capturar la respuesta, debemos activar el evento Datareceived, del serialPort, para leer y procesar el dato recibido. El cdigo podra ser:
array<byte>^ buffer = gcnew array<byte>(10);; int cont,x,i,j; cont=serialPort1->BytesToRead; //leo n de bytes en buffer recepcin if(cont>0) { // Si hay datos a leer...
IES Los Viveros Sevilla Dpto. Electrnica. 2
b=serialPort1->ReadLine(); // Leemos los datos en buffer cadena=b->Split('-');//busco el primer guion y saco el comando switch ( int::Parse(cadena[0])){ case 50: Proceso del dato recibido, que est en cadena[1] break; .. });//del switch }//del if
El cdigo debera incluir dentro del switch, todas las opciones que yo quiera tener activas
Sevilla
Dpto. Electrnica.