Lantronix XPORT

embeddedArco

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"

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Tocario

No puedo conectar un Xport a la red

Hola.
Ocurre que tengo un Xport y si lo conecto a un PC lo puedo ver sin problemas.
El tema es que al conectarlo a una red usando switchs y un router pues ya no lo puedo ver.
No se si hay un problema con valor del gateway u otra cosa.
El router lo he mirado bastante y no creo que sea el tema.

¿Alguien tiene una experiencia con solución a ese tema?

Saludos cordiales

Tocario

Saludos

¿Tienes bien configuradas las opciones de red del XPORT?

Si tienes IP estática configurada en el XPORT asegurate de que pertenece a la red del router (a mi una vez me pasó algo por el estilo).

The cause of the problem is:
The vendor put the bug there.
-- Meta amigo informático --

Imagen de oscarah

Las soluciones de Microchip

Esta muy chulo el XPORT, el problema es el precio. Microchip tiene algún PIC que implementa un controlador Ethernet, como el PIC18F67J60 , que es muy interesante, y ¡por unos 4 euros y medio!. También puedes encontrar un controlador Ethernet solo (sin micro) como el ENC28J60, también muy baratito (y empaquetado en QFN, ya sabes, 6x6 mm). Claro, que el XPORT es el XPORT... Sticking out tongue
_______________________________________________
La "L" de "CRySoL" es de "Libre" no de "Linux".

"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" --GCC 4.3.1

Imagen de Tocario

Consulta: Codigo fuente en VB.net u otro para usar un XPORT

Hola amigos, estoy buscando un código fuente en visual Basic para controlar el XPORT desde el lado del TCP/IP, ojalá pequeñito porque sólo necesito los conceptos y pasos para supongo que abrir un socket, etc.

Puzzled

Atte. Tocario

Saludos

¿para controlar un XPORT desde el lado del TCP/IP?

hmmmm, supongo que te referiras a entrar en el modo de configuración utilizando algún tipo de cliente como telnet.... Bueno, todo eso lo puedes encontrar en la documentación del cacharro (http://www.lantronix.com/support/documentation.html#embds). Supongo que la forma de hacer eso será con sockets para cuya creación tendrás que consultar la documentación del lenguaje que utilices.

Un saludo

The cause of the problem is:
The vendor put the bug there.
-- Meta amigo informático --

Imagen de int-0

Siento ser cojonero...

Pero VB.net no es muy libre que digamos... o Micro$oft lo liberó GPLv3? Jawdropping!
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------