Conexi贸n Serial.
Cuando se desea controlar alg煤n dispositivo electr贸nico a trav茅s del ordenador, una forma muy sencilla de lograrlo es mediante el uso del puerto serie, que opera con las mismas configuraciones de la interfaz RS-232.
El puerto Serial es una herramienta del cuadro de Herramientas de VStudio.NET que nos proporciona la funcionalidad para poder conectarnos al puerto Serial y comunicarnos con dispositivos que est茅n conectados al mismo.
C脫MO FUNCIONA UN PUERTO COM.Los puertos del ordenador, tambi茅n llamados puertos de comunicacion, son una caracter铆stica esencial de todos los dispositivos inform谩ticos. Son aquellos donde se conectan los dispositivos externos al ordenador (tambi茅n llamados perif茅ricos) y por donde se recibe y/o env铆a informaci贸n al ordenador desde el exterior.
Un puerto del ordenador es un punto de conexi贸n con el que un dispositivo externo puede conectarse a la computadora. Los puertos de comunicaci贸n, normalmente, son ranuras o conectores de la placa base en el cual se conecta el conector del dispositivo externo. En la siguiente imagen puedes ver los conectores de la placa base de un pc.
Entonces, 驴qu茅 son los puertos COM? Son interfaces asincr贸nicas que cuando se conectan a un dispositivo serie pueden transmitir un bit de datos a la vez. La designaci贸n COM se debe a su uso como puertos de comunicaci贸n en ordenadores compatibles con IBM. En los ordenadores personales tradicionales, COM1 y COM2 se usan a menudo para conectar un dispositivo de puerto serie, como un m贸dem o un rat贸n. As铆 es como se ve un puerto COM DB9.
Por lo tanto para que el PC reconozca al puerto serie como ocupado, debe de existir un conector ocupando dicho puerto. Los puertos serie no son equipos est谩ndar en la mayor铆a de los ordenadores port谩tiles y de escritorio de nueva fabricaci贸n. Los puertos serie RS232 del pasado generalmente se reemplazan con una o m谩s interfaces USB. Esto no significa que no puede conectar un dispositivo de puerto serie a un ordenador nuevo. Puede utilizar un adaptador USB a serie que proporcionar uno o varios puertos COM a m谩quinas que no tienen ninguna interfaz serie instalada. Hay muchas soluciones disponibles y la mayor铆a f谩ciles de implementar como el software que simulen virtualmente los puertos.
Por ejemplo, si usas un puerto USB y conectas tu placa Arduino UNO, el ordenador ocupar谩 un puerto de comunicaci贸n que depender谩 del asignador de puertos internos del S.O (desde el Administrador de servicios de Windows puedes ver los dispositivos conectados).
El problema con utilizar los puertos COM es que, una vez ocupados no podr谩s acceder a ellos si no es a trav茅s del propio dispositivo y su interfaz.
脡ste fallo se produce porque hay una conexi贸n abierta entre el PC y la placa Arduino UNO a trav茅s del puerto COM4. Y la aplicaci贸n VB.NET que vamos a hacer en la pr谩ctica de esta clase, se encarga de enviar un texto y recibirlo a trav茅s de los puertos del ordenador.
INTERCAMBIO DINAMICO DE DATOS (Dinamic Data Exchange) DDE.El intercambio din谩mico de datos es una utilidad de Windows que utiliza Visual Basic, y nos permite crear aplicaciones que tomen datos una de otras. Para pasar datos de una aplicaci贸n a otra se necesitan al menos, dos aplicaciones: una que permanezca a la escucha, y la otra que envie la informaci贸n. Puede darse el caso que una aplicaci贸n est茅 recibiendo datos de otra aplicaci贸n, y a su vez env铆e datos a una tercera. A la aplicaci贸n que env铆a la informaci贸n se le llama aplicaci贸n servidor, y a la que la recibe, aplicaci贸n cliente. La aplicaci贸n servidor debe estar funcionando antes de que la aplicaci贸n cliente le pida la informaci贸n. Si no es as铆, se generar谩 un error.
El origen de un intercambio DDE suele ser un formulario. Dentro de este formulario origen estar谩 un control Label, un control TextBox o un PictureBox que contiene la informaci贸n a enviar. Para indicar que un formulario es origen de informaci贸n para un intercambio DDE debemos dec铆rselo en sus propiedades LinkMode y LinkTopic.
El destino de un texto ha de ser necesariamente un Label, un TextBox, y el destino de un gr谩fico debe ser un PictureBox. Cuando queremos que uno de estos controles sea el destino de un intercambio DDE debemos indicarlo en sus propiedades LinkMode, LinkTopic, LinkItem, e indicarle el tiempo de espera para un intercambio en la propiedad LinkTimeout.
A continuaci贸n muestro los m茅todos principales que usa el objeto SerialPort para usarlo en tus proyectos.
' Principales mandatos para utilizar el puerto serie:
Serie = My.Computer.Ports.OpenSerialPort("COM1") 'Constructor
'
'Definir las caracter铆sticas de la comunicaci贸n
Serie.BaudRate = 19200 'velocidad de comunicaciones
Serie.DataBits = 8 'Longitud para Byte de datos
Serie.Parity = Parity.Even 'paridad(enumeracion parity)
Serie.StopBits = StopBits.Two 'Bits parada despu茅s datos
'
'Abrir/Control/Liberar Puerto
Serie.Open() 'Abrir el puerto Serie
Serie.Close() 'Cerrar el Puerto Serie
Serie.Dispose() 'Liberar objecto
Dim SiNo As Integer
SiNo = Serie.IsOpen 'El Puerto esta abierto?
Dim Puerto As String
Puerto = Serie.PortName 'Nombre del puerto
'
'Manejo y Control de se帽ales
Dim Estado As Boolean 'True=Activa / False=Inactiva
Estado = Serie.CDHolding 'Estado de la se帽al carrier detect
Estado = Serie.CtsHolding 'Se帽al Clear to Send
Estado = Serie.DsrHolding 'Se帽al Data Set Ready
Serie.DtrEnable = True 'Activar de Data Terminal Ready
Serie.RtsEnable = True 'Activar Request To Send
'
'Control Transmission/Recepcion
Serie.ReadBufferSize = 1024 'Definir tama帽o buffer recepcion
Serie.WriteBufferSize = 1024 'Definir tama帽o buffer envio
Serie.ReadTimeout = 10 'Fuera de tiempo en receci贸n
Serie.WriteTimeout = 10 'Fuera de tiempo en transmisi贸n
Serie.Handshake = Handshake.XOnXOff 'Control recepcion/envio
Serie.DiscardInBuffer() 'Borrar buffer de entrada
Serie.DiscardOutBuffer() 'Borrar buffer de salida
'
'Enviar datos
Contador = Serie.BytesToWrite 'Bytes en espera de ser escritos
Serie.Write("Hola Mundo") 'Enviar una cadena de caracteres
Serie.WriteLine("Hola Mundo") 'Enviar una linea
'
'Leer datos
Dim Contador as Integer
Contador = Serie.BytesToRead 'Bytes en espera de ser leidos
Serie.ReadByte() 'Leer un byte
Serie.ReadChar() 'Leer un char
Serie.ReadLine() 'Leer una linea
Serie.ReadExisting() 'Leer datos existentes en buffer
Pero si lo que quieres es hacer que exista una comunicaci贸n fluida entre dos programas en ordenadores diferentes o en el mismo ordenador a trav茅s de una aplicaci贸n, mejor usar un sockets.
Sockets de conexi贸n.
Si disponemos de una conexi贸n a Internet, podemos conectar dos PCs a trav茅s de Internet usando un Socket. Con esto podr铆amos incluso realizar un ejemplo de chat entre un servidor y un cliente usando el namespace System.Net.Sockets. Pero antes de nada veamos que es un socket de internet.
Socket de internet.Con Socket se designa un concepto abstracto por el cual dos programas situados en computadoras distintas (o en la misma) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada.
El t茅rmino socket es tambi茅n usado como el nombre de una interfaz de programaci贸n de aplicaciones (API) para el stack de protocolos de Internet TCP/IP, provista usualmente por el sistema operativo.
Los sockets de Internet constituyen el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados (threading). Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de n煤meros de puerto local y remoto.
Para que dos programas puedan comunicarse entre s铆 es necesario que se cumplan ciertos requisitos:
● Que un programa sea capaz de localizar al otro.
● Que ambos programas sean capaces de intercambiarse cualquier secuencia de octetos
Para ello son necesarios los tres recursos que originan el concepto de socket:
● Un protocolo de comunicaciones, que permite el intercambio de octetos.
● Un par de direcciones del protocolo de red (direcci贸n IP, si se utiliza el protocolo TCP/IP), que identifican la computadora de origen y la remota.
● Un par de n煤meros de puerto, que identifican a un programa dentro de cada computadora.
Los sockets permiten implementar una arquitectura cliente-servidor. La comunicaci贸n debe ser iniciada por uno de los programas que se denomina programa "cliente". El segundo programa espera a que otro inicie la comunicaci贸n, por este motivo se denomina programa "servidor". Un socket es un proceso existente en la m谩quina cliente y en la m谩quina servidora, que sirve en 煤ltima instancia para que el programa servidor y el cliente lean y escriban la informaci贸n. Esta informaci贸n ser谩 la transmitida por las diferentes capas de red.