El XPort de Lantronix es un dispositivo que permite conectar cualquier cacharrito con puerto serie a una ethernet. Permite la creación de conexiones TCP activas y pasivas y el envio y recepción de datagramas UDP. Por aquí iré explicando un poco los resultados de las pruebas que vaya haciendo con él. Hoy de momento, el tema de las conexiones.

Conexiones TCP

Veamos, según el datasheet y el manual de usuario del XPORT, éste permite conexiones entrantes desde cualquier IP a un puerto determinado, denominado Local Port. A su vez, al XPORT se le pueden programar una IP y puerto al que realizar las conexiones por defecto: Remote host y Remote Port. Las opciones para la creacion de conexiones activas (conexiones creadas por el XPORT) son las siguientes:
  • No active startup: No genera conexión activa en ningún caso
  • With any character: Si no existe ninguna conexión activa y se recibe un caracter cualquiera por el puerto serie, el XPORT intenta abrir una conexión con la IP y puerto configurados por defecto y una vez abierta dicha conexión, envia los caracteres que reciba por el puerto serie
  • With DTR active: Igual que el caso anterior, pero si la línea DRT no se encuentra activa, no intenta abrir conexión
  • With a Specific start character: Sólo intenta conectar cuando recibe un caracter específico por el puerto serie. Por defecto, si el usuario no especifica otro, el caracter de inicio de conexión es un retorno de carro
  • Manual connection: Intenta abrir la conexión a una IP y puerto cualquiera que puede ser especificado a través del puerto serie
  • Modem mode: Permite utilizar comandos AT a través del puerto serie para gestionar las conexiones.

Conexiones activas en Modo Manual

La forma básica de indicar al XPORT a qué IP y puerto conectar utilizando el modo manual es enviar a través del puerto serie comandos que empiecen por el caracter "c", por ejemplo
c192.168.0.10/20000
hará que el XPORT intente conectar al puerto 20000 de la máquina 192.168.0.10 Si la opción Connect Response se encuetra en Char Response, en el momento en el que se establezca la conexión el XPORT responderá con el caracter "C" a través del puerto serie. Si no se puede establecer conexión, responderá con una "N". Cuando se cierra una conexión activa, el XPORT responde enviando el caracter "D". Con el comando
c0.0.0.0/0
se entra en el modo monitor. Desde aquí, se pueden hacer varias cosas, como leer la configuración actual del XPORT, su IP, MAC, o cambiar dicha configuración a través del puerto serie.

Conexiones activas en modo Modem

El XPORT tiene varias opciones distintas a la hora de emular un DCE tipo módem y pueden elegirse a través de la opción Modem mode. Éstas opciones son las que siguen:
  • Without echo: El módem no enviará respuesta alguna a los comandos que se le envien.
  • Data Echo & Modem Response: Aquí el módem envía a través del puerto serie tanto un eco del comando recibido como la respuesta generada por dicho comando. A su vez, esta opción tiene dos subtipos:
    • Full Verbose: Las respuestas se dan en forma de cadena ASCII.
    • Numeric Response: Las respuestas se dan en forma de código numérico.
  • Modem Response only: Es exactamente igual que la opción anterior, con la diferencia de que sólo se envía la respuesta de los comandos ejecutados sin eco alguno de los comandos.

Comandos AT mas importantes

Los comandos que mas importancia pueden tener para la gestión de la conexión son los siguientes:
  • ATDTx.x.x.x,pppp: Se utiliza para abrir una conexión TCP a la dirección <x.x.x.x:pppp>.
  • ATH: Cierra la conexión activa en ese instante.
  • +++: Es la secuencia de escape por defecto. Si durante una conexión se envía dicha secuencia y se espera 1 segundo sin enviar mas datos (siempre hablando desde el DTE al DCE), los siguientes caracteres que se envíen precedidos de un retorno de carro se entenderán como un comando AT.
. La mejor manera de ver todo ésto es con un ejemplo:
Welcome to minicom 2.2

OPCIONES: I18n
Compilado en Jan  7 2007, 18:00:43.
Port /dev/ttyUSB0

                 Presione CTRL-A Z para obtener ayuda sobre teclas especiales

AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK
ATDT192.168.0.1,20001
NO CARRIER
ATDT192.168.0.1,20000
CONNECT

OK
ATH
OK
RING 192.168.0.10
CONNECT
hola

NO CARRIER
En éste ejemplo, el primer OK después de la inicialización realizada por minicom indica que el XPORT está funcionando y listo para recibir comandos AT. Seguidamente intentamos crear una conexión a la dirección <192.168.0.1:20001>, pero el XPORT nos responde con "NO CARRIER" debido a que no hay nadie escuchando en esa dirección. Lo volvemos a intentar otra vez, en esta ocasión en la dirección <192.168.0.1:20000>. Ahora si ha habido suerte, por lo que el XPORT nos responde con "CONNECT". A continuación se ve una línea en blanco y seguidamente una confirmación ("OK"). Esto ha sido porque hemos introducido la secuencia de escape "+++". El minicom estaba configurado si echo, por eso no se puede ver, pero el XPORT, transcurrido un segundo, devolvió "OK" indicando que ha recibido e interpretado la secuencia de escape y se encuentra preparado para recibir un comando AT. El comando que enviamos es "ATH", con lo que cerramos la conexión. Podemos ver que nos responde con un "OK" indicando que el comando ha sido procesado y por lo tanto la conexión se encuentra ya cerrada. Finalmente, somos nosotros los que conectamos remotamente con el XPORT, desde la IP 192.168.0.10. Se puede observar que el XPORT informa de ello con la cadena "RING 192.168.0.10". Una vez que se ha establecido la conexión, envía "CONNECT" para indicarlo. Finalmente, al cerrar la conexión remotamente, el XPORT devuelve "NO CARRIER", con lo que sabemos que la conexión se ha cerrado.

Datagramas UDP

En lo referente a Datagramas UDP la cosa cambia bastante, ya que no se tiene tanta libertad para elegir dirección destino como con TCP. Básicamente, podemos recibir datagramas UDP desde cualquier sitio sin ningún tipo de problemas (obvio), pero a la hora de enviar datagramas UDP, éstos solo pueden enviarse a la dirección configurada dentro del XPORT o a una lista de direcciones también configurada dentro del propio XPORT. De cualquier modo, aún tengo que realizar mas pruebas a éste respecto....

Nota

Es importante remarcar que los comandos introducidos en el XPORT acaban todos con el caracter 0x0d (CR) al igual que las respuestas que envía el XPORT. La única excepción que he encontrado, se produce cuando se hacen conexiones activas: La respuesta tan solo es un caracter ASCII (el "1" de conexión efectuada o el "3" de error en la conexión). Todo esto lo digo refiriéndome al modo "Numeric Response only"


blog comments powered by Disqus