UNIDAD PROFESIONAL “ADOLFO LOPEZ MATEOS”
“PROYECTO DE CONTROL VÍA INTERNET DE UN
SISTEMA DE MONITOREO MÓVIL”
T E S I S
Que para obtener el titulo de:
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
PRESENTAN:
MARTÍNEZ BADILLO MARCO POLO CAPETILLO RASCON LEONARDO GONZÁLEZ BAUTISTA JOSE ALBERTO
ASESORES:
ING. ARMANDO MANCILLA LEÓN M. EN C. ROBERTO GALICIA GALICIA
UNIDAD PROFESIONAL "ADOLFO LÓPEZ MATEOS"
TEMA DE TESIS
QUE PARA OBTENER EL TITULO DE INGENIERO EN COMUNICACIONES Y ELECTRÓNICA POR LA OPCIÓN DE TITULACiÓN TESIS COLECTIVA y EXAMEN ORAL INDIVIDUAL DEBERA(N) DESARROLLAR C. MARTÍNEZ BADILLO MARCO POLO
CAPETILLO RASCON LEONARDO GONZÁLEZ BAUTISTA JOSE ALBERTO
"PROYECTO DE CONTROL VÍA INTERNET DE UN SISTEMA DE MONITOREO MÓVIL"
DISEÑAR UN SISTEMA DE MONITOREO MÓVIL CONTROLADO VÍA INTERNET POR MEDIO DE UNA PAGINA WEB INTERACTIVA, QUE LE MUESTRE AL USUARIO LO QUE CAPTA LA CÁMARA DEL DISPOSITIVO EN TIEMPO REAL.
• INTRODUCCIÓN • CÁMARA Y MÓVIL • SERVICIO AL USUARIO • SERVIDOR WEB
• SERVICIO DE CONTROL
• TRANSMISIÓN DE VIDEO POR INTERNET • CONCLUSIONES Y RECOMENDACIONES
• APÉNDICE A: INTRODUCCIÓN ACODE WARRIOR • APÉNDICE B: ESTUDIO ECONÓMICO
MÉXICO D.F. A 22 DE AGOSTO DE 2008
ASESORES
42.
uA& -?:t .. €ó!'«'\ING. ARMANOV)MfANCILLA LEÓN M. EN C. ROBERTO GALICIA GALICIA
Capítulo1: Introducción
1.1 Resumen………...
1.1.1 Resultados………..
1.2 Antecedentes………..
1.3 Justificación……….
1.4 Objetivo General……….
1.5 Objetivos Particulares……….
1.6 Esquema General ………...
1.7 Bloques del Esquema General………... 1.7.1 Bloque de Presentación………...
1.7.2 Bloque de Servidor Web………
1.7.3 Bloque de Servicio de control………...
1.7.4 Bloque de Captura de Video…….………...
1.7.5 Móvil y cámara ………...
1.8 Alcance del proyecto . ………... 5 6 7 8 10 10 11 12 12 12 13 14 14 15
Capítulo 2: Cámara y Móvil.
2.1 Móviles propuestos………... 2.1.1 Giratorio 360°………... 2.1.2 Con riel como guía………... 2.1.3 Tabla comparativa de Móviles……….
2.1.4 Móvil a emplear ………...
2.2 Tipos de cámaras en el mercado……….
2.2.1 Web………...
2.2.2 IP………...
2.2.3 Telescópicas………... 2.2.4 Tabal comparativa de Cámaras………..
2.2.5 Cámara a emplear………....
17 17 20 21 23 24 24 25 28 29
Capítulo 3: Servicio al usuario
3.1 HTML………... 3.1.1 Estructura básica………... 3.1.2 Protocolo TCP/IP………...
3.1.3 Aplicación específica en el proyecto………
3.2 Flash………...
Capítulo 4:
Servidor Web
4.1 Introducción……….
4.2 Instalación del servidor………...
4.2.1 IIS………...
4.2.1.1 Historia………...
4.2.1.2 Instalación software de servidor……… 4.2.1.3 Sitio Web predeterminado………
4.2.2 Direcciones IP………...
4.3 ASP.NET………... 4.3.1 Criterios de selección……….
4.3.2 Programando ASP.NET usando C#………
4.3.3 Control del puerto paralelo………
45 48 48 49 51 52 57 59 60 62
Capítulo 5:
Servicio De Control
5.1 Puerto paralelo………...
5.1.1 Estructura………...
5.1.2 DLL inpout32………...
5.1.3 Control del LPT con C#……….
5.2 Comunicación Inalámbrica………
5.2.1 Módulo de transmisión………..
5.2.2 Módulo de recepción………..
5.3 Circuito de potencia del móvil………..
5.3.1 Driver L293………...
5.3.2 Diagrama interno………...
5.3.3 Rangos absolutos máximos………..
5.3.4 Control de un motor en dos sentidos………..
5.4 Microcontrolador MC9S08QG8………
5.4.1 Planteamiento del problema……….
5.4.2 Análisis de los movimientos……….
5.4.3 Programación del microcontrolador………
5.5 Diseño del Circuito Impreso………
5.5.1 Diseño del circuito de transmisión………
5.5.2 Diseño del circuito de recepción………
Capítulo 6: Transmisión
de video por Internet.
6.1 Arquitectura de los sistemas de video streaming………...
6.1.1 Compresión de audio y video………
6.1.2 Escalabilidad de la codificación……… 6.1.3 Control QoS en la capa de aplicación……… 6.1.4 Protocolos de transporte en tiempo real……….
6.1.4.1 RTP………..
6.1.4.2 RTCP………...
6.1.4.3 RTSP………...
6.1.5 Distribución………..
6.1.6 Receptoro reproductor………..
6.2 Streaming Unicast………
6.2.1 Demasiadas peticiones……….
6.2.2 Demasiados paquetes………..
6.3 Streaming Multicast……….
6.3.1 Recibiendo………..
6.3.2 Enrutamiento………..
6.3.3 Ruta de los datos………...
6.4 Arquitectura de codecs………..
6.4.1 Codecs de código privado………
6.4.2 Codecs de código abierto……….
6.5 Reproductores de Streaming comerciales………... 6.5.1 Apple quick time... 6.5.2 RealNetworks...
6.5.3 Windows Media Player...
6.6 Windows Media Encoder... 6.6.1 Codificación CBR... 6.6.2 Codificación VBR………...
6.7 Transmitiendo Con Windows Media Encoder………
6.8 Implementación de la transmisión de video en la página Web……….
102 103 104 105 107 107 107 108 110 111 112 113 113 114 115 116 116 117 117 118 119 119 121 122 124 125 125 126 130
Conclusiones y recomendaciones……… 132
Apéndice A: Introducción a Code Warrior………. A.1 Creación de un proyecto en blanco en Code Warrior……… A.2 Programa LED parpadeante………
136 136 140
Apéndice B: Estudio Económico……… B.1 Hardware………..……… B.2 Software……….………
Capítulo 1
1.1 Resumen
En la planeación de este proyecto, como su nombre lo indica es el, diseño e implementación de un sistema de monitoreo móvil por Internet, el cual se basará en dar un servicio al usuario capaz de monitorear un área específica, sin restricción de movimiento y con la facilidad de acceso remoto en un medio eficaz como lo es Internet, todo esto donde el sistema sea instalado.
A grandes rasgos el proyecto se puede resumir o describir con estas simples palabras, pero esto nos lleva a la pregunta de qué elementos son necesarios para resolver este tipo de problemas, este tipo de elementos se deben considerar como los cimientos de todo el sistema , éstos son elementos para el servicio en el lado del usuario mediante el establecimiento de una pagina web con los elementos interactivos basados en botones de control y manipulación de el móvil , así como ventanas de Windows Media Player para la visualización de la transmisión de video del sistema , todo esto establecido en un entorno amigable y accesible para el usuario.
En el lado del servidor, como su nombre lo indica servirá para sostener y cimentar el servicio a todo el sistema ya que ahí se cargarán todos los elementos necesarios para todo el servicio, desde la pagina ya mencionada, más adelante se tocaran los lenguajes que se utilizaran para la creación , diseño y justificación para la creación de dicha pagina , así como también en dicho servidor se cargarán tanto programas de software, plugins, y demás elementos necesarios para la etapa de servicio, se debe mencionar que se implementará este sistema para el puerto paralelo, ya que al ser implementado para dicho puerto no satura el ancho de banda necesario para otras aplicaciones, como la reducción de eficacia para los puertos USB que al saturar dichos puertos se divide el ancho de banda y podría no operar a su máxima eficacia, este sistema al compartir el ancho de banda con otros dispositivos.
Pasando a la parte de comunicación entre el servidor y el móvil, será mediante una interfaz inalámbrica para la comodidad y mayor libertad de movimiento del móvil ,al igual que se utilizará una cámara inalámbrica montada sobre el vehículo y por último se culminara con el diseño del circuito de potencia de el móvil utilizando como base de diseño de este un microcontrolador, tomando en cuenta la configuración de los puertos del mismo y los elementos de potencia de los motores del vehículo, así como el modo de transmisión de dicha cámara a través de internet en base a los protocolos de video streaming, para la visualización de la transmisión hacia el usuario final.
1.1.1 Resultados
Ya mencionado a grandes rasgos la planeación y tras haber establecido un panorama general de algunos problemas, se debe mencionar que el resultado obtenido a lo largo de este proyecto, es un sistema que pese a un lapso de retraso en la transmisión de video debido a la demora de entrega de paquetes de video de el servidor al cliente, se ha obtenido un sistema con una respuesta instantánea de acción, y con nulas complicaciones mecánicas
Un robot móvil es un agente capaz de desplazarse por un entorno determinado. En la actualidad, se pueden encontrar varios robots diseñados en varias escuelas y organizaciones con funciones similares a las de nuestro proyecto, ya que cuentan con cámaras que toman fotografías de su entorno y las envían a donde se encuentra el usuario, para poder analizar dichas fotos e incluso, las pueden mandar a otros robots que realicen otra función.
De los robots que más se destacan, que tienen funciones similares al nuestro, está el Pathfinder de la NASA es el robot que llegó a Marte en Julio de 1997. Transmitió 17.000 fotografías, 8000 millones de mediciones meteorológicas y 16 análisis químicos del suelo y rocas marcianas. Otro ejemplo es un robot creado para inspeccionar las tuberías, que se encarga de ir en busca de fallas, corrosiones o fisuras en el interior de una tubería por medio de una cámara que transmite imágenes a una computadora para ser procesadas. Por último mencionaremos el robot de exploración submarina que prácticamente tiene las mismas funciones de los robots antes mencionados. Como pudimos analizar al hacer esta investigación de otros proyectos similares al nuestro, cabe resaltar que la mayoría de ellos son controlados por una computadora que se encarga específicamente de controlar y recibir la información. En cambio nuestro propósito es que el usuario pueda tener el acceso al control del robot, desde cualquier computadora por medio de Internet.
1.3 Justificación
Elegimos emprender este proyecto debido a que vimos la necesidad de tener un sistema que nos permitiera monitorear nuestro hogar, para mantenerlo vigilado a pesar de estar fuera de nuestras casas o simplemente para ver a nuestros familiares desde la escuela o el trabajo. Actualmente existen cantidad de soluciones para cubrir la necesidad antes mencionada, por ejemplo:
• Sistemas de monitoreo de tráfico.
• Sistemas de cámaras de seguridad en centros comerciales (aunque este sólo cubre la parte de vigilar porque la mayoría no tiene acceso remoto).
• Cámaras IP.
Al igual que en el caso de las cámaras IP nosotros buscamos nuestra conexión, pero también queremos ocupar nuestras PC’s para la instalación del sistema, con lo que seria mas barato ya que en una PC con nuestro sistema, se pueden conectar varias cámaras y estas cámaras serian más baratas como cámaras Web y daría como resultado un sistema de monitoreo móvil más barato y ocupando cosas que ya se tienen.
1.4 Objetivo General
Nuestro objetivo principal es diseñar un sistema de monitoreo móvil controlado vía Internet por medio de una página Web interactiva, que le muestre al usuario lo que capta la cámara del dispositivo en tiempo real.
1.5 Objetivos Particulares
• Mostrar en tiempo real la ubicación del móvil, mediante video.
• Implementar una capa de servicio para controlar el móvil desde la página Web.
• Diseñar una página Web que permita visualizar el entorno del móvil y controlarlo.
1.6 Esquema General
Nuestro proyecto consiste en implementar un servicio de monitoreo mediante Internet, el cual nos proporcione la facultad de desplazarnos con un móvil a través del ambiente o evento que estemos monitoreando. En este caso con el término monitoreo, nos referimos a grabar o tomar vídeo y cuando decimos por Internet, estamos hablando que este vídeo tomado, será enviado o transmitido por este medio de comunicación; ya sea a uno o varios usuarios. Por otra parte no sólo transmitiremos vídeo por Internet a un usuario determinado, si no que también este usuario será capaz de mover o manipular el estado de la cámara que esté monitoreando. Todo el servicio será consultado en una página Web.
[image:13.595.112.493.408.744.2]Todo lo anterior se puede ver en la figura 1.1 la cual es un diagrama general, en el cual se muestran los bloques que componen nuestro proyecto.
1.7 Bloques del Esquema General
Como se mostró en el diagrama de la figura 1.1, tenemos varios bloques donde cada uno de los cuales representa un problema a solucionar o a cubrir. A continuación se enlistarán cada uno de los bloques describiendo a detalle lo que se tiene que hacer para cubrir los problemas planteados.
1.7.1 Bloque de Presentación
Este bloque en el proyecto consiste en una página Web, que es la que dará el servicio al cliente. En otras palabras es en donde el cliente o usuario podrá acceder al servicio de monitoreo móvil. Los problemas a resolver son:
• Aplicar los lenguajes de programación y de diseño que se muestran en la figura 1.1.
• Diseñar la página Web.
1.7.2 Bloque de Servidor Web.
Esta parte es fundamental, se podría decir que es la columna que sostiene el proyecto, debido a que si el servidor falla, todo se viene abajo y no sólo nos referimos a que éste falle, sino que también si hacemos una mala instalación de este mismo, no tendría un desempeño adecuado y los puntos que tenemos que cubrir son los siguientes:
• Implementar el lenguaje seleccionado en este caso ASP.net.
1.7.3 Bloque de Servicio De Control.
Esta es una de las capas más complicadas a desarrollar, debido a que es la interfaz entre el servidor y el dispositivo móvil, es decir, en esta capa nos vamos a preocupar por programar y diseñar todo lo necesario para que las señales o instrucciones que la PC o servidor, mande por el puerto paralelo, sean bien recibidas y ejecutadas por el móvil.
Cabe mencionar, que la interfaz será inalámbrica por lo que se empleará un módulo transmisor y receptor (como se muestra en la figura 1.1). Para lograr cubrir este bloque tenemos que:
¾ Armar la interfaz entre la PC y el transmisor, de tal forma que los datos que mande la PC por el puerto paralelo sean enviados por el transmisor.
¾ Armar el módulo receptor, el cual consistirá de un receptor conectado a un microcontrolador, el cual ejecutará las instrucciones recibidas por el transmisor.
1.7.4 Bloque de Captura de Video
En esta parte del proyecto nos enfocaremos a revisar algunos conceptos importantes sobre el vídeo streamig, que es el método que emplearemos para transmitir el vídeo. También revisaremos la arquitectura de los sistemas de vídeo streaming así como los protocolos con los cuales trabaja. Por último concluiremos cuál es el mejor software que se adapte mejor a nuestras necesidades. El punto a resolver en esta etapa es precisamente elegir el software para vídeo streaming en base a al análisis de los conceptos antes mencionados.
Los puntos anteriores se verán más a fondo en los siguientes capítulos que corresponden a la parte del desarrollo del proyecto. La finalidad de los puntos anteriores fue la de tener un panorama general del proyecto y de los puntos que se tienen que cubrir para hacerlo tangible.
1.7.5 Móvil y cámara.
En este bloque escogeremos el tipo de cámara y el tipo de móvil que vayamos a utilizar, este punto tiene una cierta flexibilidad, ya que en realidad el móvil y la cámara serán elegidos de acuerdo a una necesidad específica. En los capítulos posteriores describiremos distintos tipos de cámara que podrían ser útiles para cubrir determinados eventos, de la misma forma propondremos prototipos de distintos tipos de móviles que pueden cubrir distintos tipos de necesidades, de acuerdo al evento o lugar donde se necesite el monitoreo.
En este proyecto pretendemos llegar hasta la etapa de implementación, es decir, que no sólo tocaremos los puntos teóricos sino que queremos llegar a la parte práctica y experimental. En el punto anterior mencionamos que queríamos este proyecto para ocuparlo en nuestras casas, pero nuestro sistema tiene un mayor alcance ya que se podría implementar en varios lugares como:
• Empresas: Para la supervisión de empleados o de la empresa en general y para seguridad.
• Escuelas: Los padres podrán ver a sus hijos, esto especialmente en guarderías, preescolar aunque también podría emplearse en primarias y hasta secundarias. Además de que tendrán la posibilidad de ver como los maestros dan las clases lográndose así una mejor retroalimentación entre directivos de la escuela y padres. Seria de gran utilidad, si por algún motivo el usuario no puede llegar a clase, la podría tomar por Internet.
•Centros de recreación: Para promocionar centros vacacionales, museos, exposiciones, etc.
• Calles de unidades habitacionales: actualmente en la zona metropolitana y algunos municipios del estado de México, han hecho grandes cantidades de unidades habitacionales, este tipo de construcciones nos ofrecen la ventaja de que una área relativamente pequeña se aglomeran varias casas, por lo que seria relativamente sencillo instalar una o varias redes LAN donde los vecinos podrían monitorear sus calles con nuestro sistema por motivos de seguridad. Los puntos anteriores muestran sólo algunos ejemplos en donde nuestro proyecto podría ser usado, es decir, hasta donde podría llegar nuestro sistema, en otras palabras el alcance que el sistema tendría. Para el caso de esta tesis sólo nos enfocaremos a diseñar e implementar el sistema en nuestros hogares o en la escuela para demostrar su funcionamiento.
Capítulo 2
Introducción
A lo largo de este capítulo se describirá y justificará la elección tanto de la cámara a emplear como del móvil implementado en este proyecto, así también se postularán diferentes tipos de cámaras y de móviles existentes que sirven para el mismo objetivo, que es le monitoreo pero limitados en diferentes áreas como la libertad de movimiento, alcance de visión, construcción, así como una limitación económica como se presentará más adelante.
2.1 Móviles propuestos
Como en el caso de la imagen que se muestra en el inicio de éste capitulo, un móvil puede ser tan sofisticado y por ende tan complicado como se quiera o se pueda llegar. Por ejemplo hay móviles que se mueven sobre el agua, que vuelan, submarinos, etc. Que pueden ser utilizados en casos y en ambientes muy específicos. En los siguientes puntos mostraremos algunos móviles que podrían ser útiles en ambientes un poco más comunes, como un salón de clases, un pasillo, un centro recreativo, un parque, etcétera.
Por último indicaremos el móvil que se empleará en el proyecto en cuestión.
2.1.1 Giratorio 360°
Figura 2.1.1.1. Vista aérea del área que cubriría la cámara.
Figura 2.1.1.2.Inclinación y ángulo de visión de la cámara.
2.1.2 Con riel como guía
[image:22.595.120.477.265.556.2]Con este móvil se podría optimizar el uso de la cámara para cubrir ambientes que tengan un área larga y angosta, como es el caso de pasillos, andenes de metro, campos donde se practique algún deporte, etc. La ventaja de este diseño es que no se necesitarían varias cámaras para cubrir el área mencionada, sino que con una sola cámara y este móvil sería suficiente (ver figura 2.1.2).
2.1.3 Tabla comparativa
Libertad de movimiento
Complicaciones mecánicas
Costos Dificultad de instalación
Giratorio 360º
Baja Medias Medios Bajo
Con riel como Guía
Media Altas Altos Alto
Móvil con doble tracción
[image:23.595.78.520.141.391.2]Alta Bajas Bajos Bajo
Tabla 2.1.Tabla Comparativa de Distintos Móviles propuestos
En este proyecto se empleará un móvil con doble tracción trasera y con una rueda loca como el que se muestra en la figura 2.1.3, se eligió este móvil debido a que se pretende tener la mayor libertad de movimiento posible. Con este móvil se puede explorar de una forma completa una determinada área. Como mencionamos anteriormente el tipo de móvil depende totalmente de la aplicación o de la acción que se quiera monitorear.
Figura. 2.1.3. Móvil a emplear en el proyecto.
Otro punto por el que se eligió este móvil, fue porque su armado no representa mayores complicaciones mecánicas. Como es el caso del móvil giratorio y el móvil con riel como guía. Para fines de demostrar el funcionamiento del sistema de monitoreo móvil por Internet, con este tipo de móvil será más que suficiente.
A lo largo de este capítulo mencionaremos distintos tipos de cámaras que pueden cubrir distintas necesidades, dependiendo del evento que se quiera cubrir o el lugar que se quiera monitorear. Todo con la intención de mostrar las posibles variaciones que el proyecto en cuestión podría tener, como ya hemos mencionado en puntos anteriores, desde que se estaba ideando este proyecto buscamos tener la flexibilidad de poder usar casi cualquier tipo de cámara. Es necesario mencionar que no se profundizará mucho en los detalles técnicos de ellas. Como ya se mencionó, podemos conectar todo tipo de cámara que se pueda enlazar a la computadora. Por último se escogerá una dentro de los distintos tipos que mostraremos para la implementación del proyecto.
2.2.1 Web
Figura 2.2.1.Cámara Web
2.2.2 IP
Figura 2.2.2 Cámara IP
2.2.3 Telescópicas
2.2.4 Tabla Comparativa de Cámaras
Costo Complejidad
de Instalación
Mantenimiento Inalámbrica
IP Alto Media Alto R
Web Bajo Baja Bajo -
Telescópicas Medio Media Medio -
Mini cámara espía
Medio Demasiado sencilla
Muy Bajo R
Tabal 2.2.Tabla comparativa de Cámaras
En la tabla anterior se exponen algunos puntos relevantes que exponen y justifican de distinta manera, como cada una de estas cámaras podrían adecuarse a este proyecto, se puede apreciar que algo muy decisivo es el costo de dicho dispositivo, así como su mantenimiento que también se traduce en gastos económicos, que para algunos usuarios no podrían costear, sin mencionar que la instalación mientras mas sencilla sea también no se pueden incurrir en gastos innecesarios en técnicos o personal que se necesite de su auxilio y siendo esto mas sencillo el mismo usuario podría hacerlo, el factor inalámbrico es relevante en este proyecto, ya que es un sistema móvil, de esta manera el dispositivo no esta atado a un medio físico que puede ser una limitante en una cámara que sea alámbrica y considerando las dimensiones de dicha cámara es determinante para el diseño de los circuitos de potencia que mientras mas peso sostenga el móvil, mas voltaje consume, y eso al fin yal cabo se traduce en gastos económicos en suministros de baterías.
2.2.5 Cámara a emplear en este proyecto
Para este proyecto se empleará una cámara conocida como mini cámara o cámara espía. Se eligió este tipo de cámara ya que necesitamos una cámara ligera y que también sea pequeña, ya que como se vio en el punto 2.1.3 utilizaremos un móvil con doble tracción trasera, lo que como veremos en puntos posteriores, se traduce en que necesitaremos dos motores. Los cuales consumen corriente y entre más peso se les cargue, más corriente consumen, lo que nos da como resultado un mayor consumo de energía. Lo anterior nos representa un problema, porque como ya vimos anteriormente el móvil será inalámbrico, entonces utilizará baterías. Además de que independientemente de que se esté buscando una mayor duración de las baterías, siempre se debe de buscar consumir la menor energía posible. He aquí la importancia en este proyecto de primero elegir en primera instancia, lo que se va a mover y cómo se va a mover. La cámara que empleamos en específico, es inalámbrica de 2.4 GHz de marca LLOYD’S modelo CA-1035. A continuación mostramos algunas de sus características principales:
Cámara
Sensor de Imagen 0.847 cm CMOS Total de Píxeles 628 x 582 (pixeles)
510 x 492 (pixeles) Resolución Horizontal 380 Líneas
Vista de ángulo 60° Iluminación Mínima 1 Lux Control de Video Automático
Frecuencia (MHz) ISM 2400 a 2483 en 4 canales Transmisión de energía 10 mW
Alimentación de Energía 8 Volts Consumo de corriente 80 mA
Rango Efectivo de Señal 100 metros (libres de obstáculos)
Receptor
Recepción de Frecuencia (MHz) 2400 a 2483 en 4 canales Frecuencia Inmediata 480 MHz
Desmodulación FM Alimentación de Energía 8 Volts
Capítulo 3
Capítulo 3
En este capítulo hablaremos todo lo relacionado con el diseño de la página Web que prestará servicio al usuario. Se darán nociones generales de los lenguajes empleados en la elaboración, como Flash y HTML así como de los
plugins necesarios y su funcionamiento para elaborar una página Web que
proporcione el mejor servicio posible al usuario. Hacemos notar que el objetivo de esta tesis no es presentar tutoriales de los lenguajes, debido a que estos tienen infinidad de funciones y características por lo que nos sería imposible explicar siquiera la mitad y se perdería el sentido del proyecto. Nos limitaremos a explicar sólo las funciones y características que ocuparemos en este proyecto.
3.1 HTML
3.1.1 Estructura básica.
El principio esencial del lenguaje HTML es el uso de las etiquetas (tags). Funcionan de la siguiente manera:
<XXX> Este es el inicio de una etiqueta. </XXX> Este es el cierre de una etiqueta.
Las letras de la etiqueta pueden estar en mayúsculas o minúsculas, indiferentemente.
Lo que haya entre ambas etiquetas estará influenciada por ellas. Por ejemplo, todo el documento HTML debe estar entre las etiquetas <HTML> y </HTML>:
<HTML> [Todo el documento] </HTML>
Un documento HTML está dividido en dos zonas principales:
• El encabezamiento, comprendido entre las etiquetas <HEAD> y </HEAD>
• El cuerpo, comprendido entre las etiquetas <BODY> y </BODY> Dentro del encabezamiento hay información del documento, que no se ve en la pantalla principal del navegador que es utilizado para visualizar el documento HTML, principalmente la información encontrada en el encabezamiento es el título del documento, comprendido entre las etiquetas <TITLE> y </TITLE>. El título debe ser breve y descriptivo de su contenido, pues será lo que vean los demás cuando añadan nuestra página a su
bookmark (o agenda de direcciones).
Se han desarrollado diferentes familias de protocolos para comunicación por red de datos para los sistemas UNIX. El más ampliamente utilizado es el Internet Protocol Suite, comúnmente conocido como TCP / IP. El nombre TCP / IP Proviene de dos protocolos importantes, el Transmission Control Protocol
(TCP) y el Internet Protocol (IP). Todos juntos llegan a ser más de 100
protocolos diferentes definidos en este conjunto.
El TCP / IP es la base del Internet que sirve para enlazar computadoras que utilizan diferentes sistemas operativos, incluyendo PC, minicomputadoras y computadoras centrales sobre redes LAN y WAN (Wide Area Network, red de área extensa). TCP / IP fue desarrollado y demostrado por primera vez en 1972 por el departamento de defensa de los Estados Unidos, ejecutándolo en el ARPANET una red de área extensa del departamento de defensa. En términos generales, el software TCP/IP está organizado en cuatro capas conceptuales que se construyen sobre una quinta capa de hardware. La figura 3.1.2, muestra las capas conceptuales así como la forma en que los datos pasan entre ellas.
Capa de aplicación (HTTP, SMTP, FTP…)
Capa de transporte (UDP, TCP)
Capa de red (IP)
Capa de acceso a la red (Ethernet, Token Ring...)
Capa física (cable coaxial, par trenzado...)
en la figura 3.1.2:
• Capa de aplicación. Es el nivel más alto, los usuarios llaman a una aplicación que acceda a servicios disponibles a través de la red de redes TCP/IP. Una aplicación interactúa con uno de los protocolos de nivel de transporte para enviar o recibir datos. Cada programa de aplicación selecciona el tipo de transporte necesario, el cual puede ser una secuencia de mensajes individuales o un flujo continuo de bytes. El programa de aplicación pasa los datos en la forma requerida hacia el nivel de transporte para su entrega.
a otra, ésta acepta una solicitud para enviar un paquete desde la capa de transporte, junto con una identificación de la máquina, hacia la que se debe enviar el paquete. La capa Internet también maneja la entrada de datagramas, verifica su validez y utiliza un algoritmo de ruteo para decidir si el datagrama debe procesarse de manera local o debe ser transmitido. Para el caso de los datagramas direccionados hacia la máquina local, el software de la capa de red de redes borra el encabezado del datagrama y selecciona, de entre varios protocolos de transporte, un protocolo con el que manejará el paquete. Por último, la capa Internet envía los mensajes ICMP de error y control necesarios y maneja todos los mensajes ICMP entrantes.
3.1.3 Aplicación específica en el proyecto.
Como ya hemos mencionado antes HTML es un lenguaje de Internet estándar que trabaja en la capa de aplicación del protocolo TCP/IP. Nosotros en este proyecto lo usaremos sólo como contenedor ya que realmente programaremos muy poco con este lenguaje. En la figura 3.1.3, se ilustra la idea anterior, como podemos ver, incrustaremos los diferentes componentes de Flash, Activex, FLV Player (plug-in) y ASP.net.
Figura 3.1.3, HTML como contenedor.
Nosotros no utilizaremos estos programas WYSIWYG porque programaremos cada parte por separado y las añadiremos en una página HTML, todo con el fin de tener una mejor visión de cada parte, ya que para usar los programas de desarrollo visual, es necesario saber como está compuesto el código de la página que se está diseñando principalmente cuando se está programando en ASP.NET.
3.2 Flash
Se decidió utilizar este software porque nos ofrece grandes prestaciones en cuanto al aspecto visual de la página de servicio al usuario. El software en cuestión está orientado al diseño de animaciones, juegos, botones interactivos y en general páginas interactivas. Aplicaremos Flash para el diseño de botones y algunas animaciones de la página, como podemos observar en la figura 2.1.3, este programa es parte fundamental del desarrollo de la página, ya
3.3 Active-X
Active-X es una tecnología desarrollada por Microsoft que apareció por primera vez con la salida de Internet Explorer 3.0. El objetivo de esta tecnología es el de insertar objetos de diferente tipo en una página Web y no sólo se limita a eso, sino que esta tecnología nos da la posibilidad de tener interacción y comunicación con programas externos. Existen páginas que la mayoría de su contenido (si no es que todo) está formado por Active-X.
Los controles Active-X guardan un gran parecido con los Applets de Java y los plugins pero Active-X al ser de tecnología auto-contenida presenta
ventajas ante éstos. La ventaja más importante es que Active-X no necesita de la instalación de algún programa en el navegador para cada objeto, como es el caso de los Plug-ins, sino que cada objeto tiene la suficiente información para ejecutarse a sí mismo sin la ayuda de alguna otra aplicación.
Para insertar un objeto Active-X en una página HTML se utiliza el siguiente código:
<html> <body> <object >
id="NSPlay"
width="320" heigth="240"
classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
codebase="http://activex.microsoft.com/activex/controls/mplay er/en/nsmp2inf.cab#Version=5,1,52,701"
standby="Cargando los componentes del Reproductor de Windows Media de Microsoft...
"type="application/x-oleobject">
<param NAME="FileName" VALUE="http://ip_servidor:8080/"> <param NAME="ShowControls" VALUE="0">
<param NAME="ShowDisplay" VALUE="1"> <param NAME="ShowStatusBar" VALUE="1">
</object>
</body> </html>
Del código anterior tenemos que:
Para iniciar la declaración de un objeto active-X se usa la etiqueta <object> y para indicar el fin de éste, empleamos </object>. Dentro de la etiqueta <object> se tienen características que inicializan al objeto:
•ID: Es la identificación del objeto que en este caso es un objeto Windows Media Player.
•Width: Especifica el ancho que el objeto tendrá dentro de la página.
•Height: Especifica el alto que el objeto tendrá dentro de la página.
•Classid: Indica a qué clase pertenece el objeto.
•Standby: Se le asigna un letrero que aparecerá cuando el objeto se esté cargando.
•Type: indica el tipo de objeto que está manejando.
Los parámetros anteriores como ya dijimos sólo inicializan al objeto; ahora veremos algunos de los parámetros que cambian las características del objeto una vez que ya se inicializó y son las siguientes:
• <param NAME="FileName" VALUE=http: //ip_servidor:8080/>
Con este parámetro se indica la IP a dónde se dirigirá el reproductor para recibir la transmisión de vídeo, como podemos darnos cuenta también se indica a qué puerto se dirigirá éste.
• <param NAME="ShowControls" VALUE="0">
• <param NAME="ShowDisplay" VALUE="1">
Sucede lo mismo que en el punto anterior sólo que esta vez se oculta o se deja ver el display del objeto que es un reproductor.
• <param NAME="ShowStatusBar" VALUE="1">
Por último con este parámetro se quita o se pone la barra de estado del reproductor.
Si se coloca el código 3.3 de una forma adecuada el reproductor se debe de ver como se muestra en la figura 3.3.
Capítulo 4
4.1 Introducción
Antes de meternos a la programación del servidor, es necesario explicar el término servidor en sí, para evitar confusiones más adelante. La palabra servidor se usa en informática para darle el nombre al software que realiza ciertas tareas en nombre de los usuarios. La cuestión es que el término servidor también se usa para referirse a la computadora física, donde se almacena y se ejecuta el software mencionado anteriormente. En otras palabras, si tenemos una computadora y le instalamos un software que permita ejecutar funciones de servidor, entonces esta computadora la podemos llamar servidor. En este trabajo también usaremos la palabra servidor indistintamente, ya sea para referirnos al hardware o al software.
En un servidor se almacenan y ejecutan los archivos de cada sitio de Internet. En Internet existen una gran cantidad de servidores y de una gran variedad, un servidor puede ser desde una computadora personal (PC) hasta una supercomputadora, todo depende del servicio o aplicación que se esté dando. Cuando nos conectamos a un sitio de internet, lo que hacemos al ingresar la dirección es hacer una peticion al servidor, para que nos envíe las páginas Web a nuestra computadora. Lo anterior se puede observar en la siguiente figura 4.1.
Existe una gran cantidad de servicios que pueden dar los servidores, a los que la mayoría de la gente tiene acceso, y son:
• Servicio Web.
• Servicio de correo.
• Servicio de base de datos.
• Servicio de vídeos.
Un solo servidor puede ejecutar diferentes servicios, es decir, que con un servidor podemos estar dando servicio de páginas Web, servicio de bases de datos o servicio de correo. Los servicios que se puedan dar tienen que ver con el software de servidor que se tenga instalado. Existen en el mercado distintos tipos de servidor que se muestran en la tabla 4.1.
Servidor Descripción Plataforma ¿Gratis?
Apache Servidor Web de propósito general con muchas prestaciones.
Win/Linux/M
Ac Sí
NES Tiene alto rendimiento y es muy Netscape Enterprise Server. fiable.
Win NT
UNIX No
IIS Internet Information Services. Tiene alto rendimiento y
opciones robustas.
Windows No
Fnord
Un servidor básico de Web. Win 95/NT Sí HTTPS Un servidor muy básico NT Sí
NetPresenz Un servidor Web, ftp y Gopher. Soporta la identificación de
usuarios. Macintosh
[image:49.595.79.518.220.612.2]Sí
Tabla 4.1. Tipos de servidores en el mercado.
4.2 Instalación del servidor
En este punto explicaremos más a detalle las características de IIS, también abarcaremos algunos conceptos de direcciones IP que son fundamentales para tener un servidor funcionando correctamente, ya que los equipos de los usuarios o clientes acceden al servidor mediante direcciones IP.
4.2.1 Internet Information Server (IIS)
IIS engloba un conjunto de herramientas destinadas al control de servicios de Internet como el Web, FTP, correo y servidores de noticias. Además incluye el soporte necesario para la creación de páginas dinámicas en el servidor mediante el lenguaje ASP y la evolución de éste que es ASP.NET.
4.2.1.1 Historia
IIS fue inicialmente lanzado como un conjunto de servicios basados en Internet para Windows NT 3.51. IIS 2.0, siguió agregando soporte para el sistema operativo Windows NT 4.0 e IIS 3.0, introdujo las páginas activas de servidor, esta tecnología es una plataforma de scripting dinámico.
IIS 4.0 eliminó el soporte para el protocolo Gopher y fue puesto con Windows NT como un CD-ROM de "Paquete Opcional" separado.
La versión actual de IIS es la 6.0 para Windows Server 2003 e IIS 5.1 para Windows XP Professional. IIS 5.1 para Windows XP es una versión compacta del IIS que soporta sólo 10 conexiones simultáneas y sólo un sitio Web. IIS 6.0 ha agregado soporte para IPv6.
4.2.1.2 Instalación
En general la instalación de IIS es la misma para diferentes versiones de Windows, la que mostramos a continuación es la instalación en Windows Xp pero si se quisiera instalar en otras versiones, no hay cambios considerables, de hecho existen versiones de Windows que ya tienen preinstalado este software de servidor, por ejemplo Windows Server 2003 y Windows Vista. A continuación, se enlistan los pasos para la instalación del servidor:
Paso 1: Abrir panel de control.
Paso 2: Ir a “agregar y quitar programas”.
Paso 3: Dentro de la ventana dar clic en “agregar o quitar componentes de Windows” (ver figura 4.2.1.2.1).
Paso 4: Una vez abierta una ventana como la de la figura 4.2.1.2.2, tenemos que seleccionar y marcar “Servicios de Internet Information Server”, como se puede ver en la misma figura.
Figura 4.2.1.2.2. Asistente para componentes de Windows.
Paso 5: Si damos clic en detalles, podemos seleccionar los componentes específicos que se van a utilizar (ver figura 4.2.1.2.2). Entre los componentes posibles se encuentran documentación, servicios adicionales de IIS, un servidor de FTP (para la transferencia de ficheros con el servidor por FTP), incluso uno de SMTP (para el envío de correos electrónicos). Damos clic en siguiente para comenzar la instalación.
Paso 6: Una vez instalado y después de haber verificado que se instaló correctamente en el navegador que se tenga, se ingresa la dirección “http://localhost/”, con esta dirección se accede al servidor Web, si todo salió bien debería de aparecer una página con información de IIS. Cabe mencionar que la información de esta página, depende de la versión de Windows que se tenga.
Entonces, siguiendo los pasos anteriores, se logra la instalación del software de servidor IIS. Ahora nuestra computadora ya es un servidor de páginas Web.
4.2.1.3 Sitio Web predeterminado
Para acceder al sitio predeterminado tuvimos que ingresar la dirección “http//:localhost/” en nuestro navegador, este sitio Web se almacena en nuestro disco duro específicamente en “C:\Inetpub\wwwroot”. Si queremos agregar nuestras propias páginas Web, lo que tenemos que hacer es simplemente moverlas a este directorio con todo y sus archivos correspondientes. Por ejemplo, si creamos una página llamada “Menu.html”, ésta y todos sus archivos (imágenes, sonidos, vídeos, etc.) tienen que ser movidos al directorio “wwwroot” y para abrirla en el navegador, tenemos que colocar la siguiente dirección “http//:localhost/Menu.html” y la página tiene que visualizarse en el navegador. Lo anterior sería útil para páginas sencillas o si sólo se tiene una página en el servidor.
Un sitio Web predeterminado es al que se ingresa sin necesidad de especificar su nombre y para crearlo sòlo se tiene que dar el nombre de
Default (predeterminado), a la página que queremos que sea nuestro sitio predeterminado por ejemplo, si en “C:\wwwroot\Web_1” tenemos la página “Default.html” entonces para acceder a este sitio, sólo tenemos que ingresar la dirección “http//:localhost/Web1/” e ingresa automáticamente al sitio “Default.html”, entonces se recomienda que a la página principal se le nombre Default.
IIS tiene una gran gama de opciones, como ya vimos podemos configurarlo para tener un servidor de correo, servidor FTP, servidor de páginas Web. En este punto sólo vimos como instalarlo y como configurarlo como servidor de páginas Web, que es lo que principalmente ocuparemos en este proyecto.
4.2.2 Direcciones IP
La dirección IP es el identificador de cada host dentro de su red de redes. Cada host conectado a una red tiene una dirección IP asignada, la cual debe ser distinta a todas las demás direcciones que estén vigentes en ese momento, en el conjunto de redes visibles por el host. En el caso de Internet, no pueden haber dos ordenadores con 2 direcciones IP (públicas) iguales. Pero sí podríamos tener dos ordenadores con la misma dirección IP siempre y cuando pertenezcan a redes independientes entre sí (sin ningún camino posible que las comunique).
Las direcciones IP se clasifican en:
• Direcciones IP públicas. Son visibles en todo Internet. Un ordenador con una IP pública es accesible (visible) desde cualquier otro ordenador conectado a Internet. Para conectarse a Internet es necesario tener una dirección IP pública.
• Direcciones IP privadas (reservadas). Son visibles únicamente por otros host de su propia red o de otras redes privadas interconectadas por ruteadores. Se utilizan en las empresas para los puestos de trabajo. Los ordenadores con direcciones IP privadas pueden salir a Internet por medio de un ruteador (o proxy) que tenga una IP pública, sin embargo, desde Internet no
se puede acceder a ordenadores con direcciones IP privadas. A su vez, las direcciones IP pueden ser:
• Direcciones IP dinámicas. Un host que se conecte a la red mediante dirección IP dinámica, cada vez lo hará con una dirección IP distinta. Las direcciones IP públicas dinámicas son las que se utilizan en las conexiones a Internet mediante un módem. Los proveedores de Internet utilizan direcciones IP dinámicas debido a que tienen más clientes que direcciones IP (es muy improbable que todos se conecten a la vez).
Las direcciones IP están formadas por 4 bytes (32 bits). Se suelen representar de la forma a.b.c.d donde cada una de estas letras es un número comprendido entre el 0 y el 255. Por ejemplo la dirección IP del servidor de IBM (www.ibm.com) es 129.42.18.99.
Las direcciones IP también se pueden representar en hexadecimal, desde la 00.00.00.00 hasta la FF.FF.FF.FF o en binario, desde la
00000000.00000000.00000000.00000000 hasta la 11111111.11111111.11111111.11111111.
Las tres direcciones siguientes representan a la misma máquina
Decimal 128.10.2.30 Hexadecimal 80.0A.02.1E Binario 10000000.00001010.00000010.00011110
Dependiendo del número de hostes que se necesiten para cada red, las direcciones de Internet se han dividido en las clases primarias A, B y C. La
clase D está formada por direcciones que identifican no a un host, sino a un grupo de ellos. Las direcciones de clase E no se pueden utilizar (están reservadas).
0 1 2 3 4 8 16 24 31
Clase
A 0 red host
Clase
B 1 0 Red host
Clase
C 1 1 0 red host
Clase
D 1 1 1 0 grupo de multicast (multidifusión)
Clase
E 1 1 1 1
(direcciones reservadas: no se pueden utilizar)
Clase Formato (r=red,h=host)
Número de redes
Número de hosts por red
Rango de direcciones de redes
Máscara de subred
A r.h.h.h 128 16.777.214 0.0.0.0 - 127.0.0.0 255.0.0.0
B r.r.h.h 16.384 65.534 128.0.0.0 - 191.255.0.0 255.255.0.0
C r.r.r.h 2.097.152 254 192.0.0.0 - 223.255.255.0 255.255.255.0
D grupo - - 224.0.0.0 - 239.255.255.255 - no válidas - - 240.0.0.0 - 255.255.255.255 -
Figura. 5.2.2.2. Distribución de IPs de acuerdo a su clase.
De los conceptos anteriores podemos concluir que para este proyecto y en general para cualquier proyecto en donde se quiera instalar un sitio necesitamos de una IP pública y estática, que tiene que ser solicitada a nuestro proveedor de servicios.
ASP.NET es un marco de trabajo de programación, que es generado en
Common Language Runtime capaz de utilizarse del lado del servidor, para
generar aplicaciones en un servidor. ASP.NET ofrece una gama de ventajas relevantes para la comunicación del usuario y el mismo servidor, las ventajas más relevantes que encontramos son:
• Mejor Rendimiento: Como se mencionó ASP.NET es un lenguaje del tipo Common Languaje Runtime, esto se traduce que es un lenguaje
compilado del lado del servidor, que al fin y al cabo dentro del proyecto es correcto ya que debe de comportarse como un servicio en el servidor ejecutado por el cliente.
• Compatibilidad con herramientas de primer nivel: ASP.NET dentro del proyecto ofrece una ventaja al ser un entorno integrado de programación, apoyado de herramientas de diseño de Visual Studio. Se utilizo una edición WYSIWYG, que como se mencionó, ahorró simplificó y automatizó la etapa de diseño de los controles.
• Eficacia y Flexibilidad: Esto es de gran ventaja ya que ASP.NET es independiente del lenguaje (aunque su lenguaje nativo sea C#) , ya que esto simplemente dependerá del lenguaje que se adapte a la aplicación o se divida la misma en distintos lenguajes, ofreciéndonos la opción que si no tuviera C# la facilidad de control del puerto paralelo, se hubiera podido optar por un lenguaje auxiliar.
• Simplicidad: Ofrece la facilidad de realizar tareas de manera sencilla desde envío de formularios hasta la configuración de sitios. Ya que es un lenguaje de tipo Common Language Runtime, que simplifica la tarea
así como la configuración del mismo servidor.
• Facilidad de uso: ASP.NET puede ser implementado en el servidor (en este caso el IIS) simplemente con la copia de los archivos requeridos en el servidor, sin la necesidad de reinicio del mismo al tener que reemplazar o implementar el código compilado en ejecución.
• Escalabilidad y disponibilidad: Ya que ASP.NET cuenta con un motor de tiempo de ejecución es capaz de administrar y controlar los procesos de cerca, ya que si uno de estos procesos no se lleva de manera adecuada (ya sea por filtraciones o bloqueos), es posible que se cree un proceso nuevo en su lugar, esto quiere decir que el servidor es capaz de mantener el proceso (en este caso el monitoreo), para así seguir controlando las solicitudes del usuario.
• Posibilidad de personalización y extensibilidad: Gracias a la arquitectura de ASP.NET somos capaces de adecuar con nuestros propios códigos al proceso, ya sea por ejemplo en el motor de tiempo de ejecución de ASP.NET para así personalizar un subcomponente del motor (al extenderlo o reemplazarlo), y así tener aún mas controlados los procesos que involucran el desarrollo del proyecto (control de puerto, envío de comandos, etc…).
4.3.1 Criterios de selección
4.3.2 Programando ASP.NET usando C#
En esta parte mostraremos y explicaremos un pequeño programa de ASP.NET, el cual calculará cuántos meses tiene el usuario de edad, una vez que ha sido proporcionada esta en años. Con este programa podremos familiarizarnos con este lenguaje, para cuando más adelante mostremos el programa que controla el LPT, sea más fácil de entender, tanto su estructura, así como su funcionamiento. Una vez que hacemos hincapié en que ya existen programas WYSIWYG que usan ASP.NET de una forma más amigable que poniendo el código, de hecho este tipo de programas manejan las dos formas: la interfaz gráfica como el código, como es el caso de Dreamweaver. En este caso nos enfocaremos a explicar el código y es el siguiente:
<html>
<h1> CSHARP </h1>
<FORM RUNAT=SERVER>
EDAD<INPUT TYPE=TEXT ID=EDAD RUNAT=SERVER/><BR> MESES<INPUT TYPE=TEXT ID=MESES RUNAT=SERVER /><BR> <INPUT TYPE=BUTTON TEXT=OK ONSERVERCLICK=EVENTO1 VALUE=OK RUNAT=SERVER/>
</form> </html>
<SCRIPT LANGUAGE=C# RUNAT=SERVER>
void EVENTO1 (Object sender, EventArgs e) {
int edad = Int32.Parse(EDAD.Value); edad=edad*12; MESES.Value=edad.ToString(); } </SCRIPT>
Del código anterior explicaremos las siguientes etiquetas:
<FORM RUNAT=SERVER> indica el inicio de un formulario que será ejecutado del lado de servidor.
EDAD<INPUT TYPE=TEXT ID=EDAD RUNAT=SERVER/> incrusta dentro del formulario una entrada del tipo texto, que es equivalente a la caja de texto muy conocida en lenguajes visuales. También le asigna un identificados ID llamado EDAD y por último indica que esta entrada también se ejecutará del lado del servidor. Lo mismo sucede con la etiqueta MESES<INPUT TYPE=TEXT ID=MESES RUNAT=SERVER/> sólo que en este caso se le asigna una ID diferente por obvias razones.
<INPUT TYPE=BUTTON TEXT=OK ONSERVERCLICK=EVENTO1 VALUE=OK RUNAT=SERVER/> Con esta etiqueta se incrusta una entrada de tipo botón el cual al dar clic sobre éste, nos dirigirá al EVENTO1. Por último se cierra el formulario y también la parte de HTML, con esto termina lo que tenga que ver con HTML.
Ahora fuera del código HTML, con la etiqueta <SCRIPT LANGUAGE=C# RUNAT=SERVER> se indica que se va escribir código en lenguaje C#, como podemos observar, también se indica que se ejecutará en el servidor.
void EVENTO1 (Object sender, EventArgs e) es la declaración de una función llamada “EVENTO1” y podemos darnos cuenta que está relacionada con el botón que vimos antes, es decir que cuando dicho botón se ha presionado se ejecutara todo el código que se encuentre de este evento.
4.3.3 Control del puerto paralelo
En el punto anterior se explicó como implementar el lenguaje de programación C# mediante ASP.NET, ahora se mostrará como controlar el puerto paralelo con ésta plataforma. Entonces uniremos los conocimientos del punto 5.1.3 donde se muestra como mandar datos por el puerto paralelo con C# y los conocimientos que se vieron en el punto anterior. Haciendo lo anterior, se logrará mandar datos por el puerto paralelo usando ASP.NET y programándolo con C#. A continuación en el código 4.3.3 se muestra el programa que manda los datos utilizando ASP.NET por el puerto LPT.
<html>
<form RUNAT=SERVER>
DATOS<INPUT TYPE=TEXT ID=DATOS RUNAT=SERVER/><BR>
ENVIAR<INPUT TYPE=BUTTON TEXT=OK
ONSERVERCLICK=EVENTO1 VALUE=OK RUNAT=SERVER/>
</form><BR> </html>
<script LANGUAGE=C# RUNAT=SERVER> public class AccesoAlPuerto
{
[DllImport("inpout32.dll", EntryPoint="Out32")]
public static extern void Salida(int direccion,int valor); [DllImport("inpout32.dll", EntryPoint="Inp32")]
public static extern int Entrada(int direccion); }
void EVENTO1 (Object sender, EventArgs e) {
int datos=Int32.Parse(DATOS.Value); AccesoAlPuerto.Salida(888,datos); }
</script>
En el código anterior lo que se hizo fue que dentro del cuerpo de HTML se agregó un formulario, dentro de este formulario se agregaron una caja de texto con el ID de datos y se agregó también un botón que no dirige al
EVENTO1; que está dentro del “script” de C#. Dentro del código que tiene que ver con C# se agregó la clase “AccesoAlPuerto” que como se verá en el punto 5.1.3, nos permite abir DLL’s que a su vez nos permiten el control del LPT. Ahora dentro del EVENTO1, convertimos el contenido de la caja de texto llamada “datos” a entero y este dato entero lo mandamos al puerto paralelo, llamando a la función “salida” y mandándole como segundo argumento la variable datos.
Entonces una vez que corra nuestra página con extensión .aspx, que es la extensión que tienen las páginas programadas con ASP.NET. En ésta habrá un botón con el texto enviar y una caja de texto. Si nosotros escribimos un valor en dicha caja y presionamos el botón, este dato será enviado al puerto paralelo del servidor. Lo mismo pasará si un usuario accede a nuestro sitio y abre la página, podrá manipular remotamente el puerto paralelo del servidor, y éste a su vez, puede mandar las señales de control al móvil. Aplicando lo anterior se completa la página de ASP.NET que utilizaremos en este proyecto mostrada en la figura 4.3.3.
De la figura anterior podemos darnos cuenta que usaremos 5 botones de los cuales cada uno generará un evento que a su vez enviara datos por el puerto LPT y estos datos el servicio de control los convertirá en movimientos del móvil. Como se mostró en el punto 4.5 necesitamos de 5 movimientos: detener, avanzar, retroceder, girar izquierda y girar derecha. Es de suponerse que cada botón mandará la combinación de datos necesarios, para ejecutar cada uno de los movimientos. A continuación de muestra una tabla que tiene la relación del nombre del botón y del dato que mandará por el puerto paralelo.
Botón Dato a enviar.(binario)
Detener 000 Retrocede 001
Avanza 010 Girar Izquierda 011
Girar Derecha 100 Incrementar PWM 101 Decrementar PWM 110
Capítulo 5
Introducción
A continuación se mencionará un panorama general de la capa de servicio de control , que es la capa de comunicación y manipulación del servidor con el móvil , en el desarrollo de este capítulo se explicarán todos los elementos involucrados tanto en hardware como en software para el control por el puerto paralelo, el cual se dará una breve descripción del mismo, así como los elementos finales de la parte del hardware que están involucrados, desde los circuitos de potencia de los motores como el uso de el microcontrolador y el diseño de control mediante los bits de control interpretados por el mismo microcontrolador, para dar acciones a los motores y el uso del circuito driver para la etapa de potencia de los motores. Otro bloque que se mencionará es para el módulo de comunicación inalámbrica, el cual como se observó desde el esquema general de este proyecto es un pequeño bloque primordial del mismo, ya que este bloque nos proporcionará la facilidad de movimiento del móvil. En la parte del software que se implementará en esta capa de desarrollo, involucra varias cuestiones desde los datos enviados desde el servidor por ASP.NET, para el mismo puerto paralelo que será controlado por software mediante C#. Una vez hecho todo esto, se finalizara en el diseño y armado de los circuitos impresos de transmisión y recepción junto con los circuitos de potencia del móvil.
5.1 Puerto paralelo
El puerto paralelo de la computadora, conocido como LPT, anteriormente se utilizaba para conectar impresoras fue liberado en 1994 y se apega al estandar IEEE.1284, actualmente tiene 4 modos de operaciòn:
En este proyecto ocuparemos el LPT en modo ECP, ya que este modo nos permite controlar el puerto en ambiente Windows, además de que permite bidireccionalidad.
Como mencionamos antes, uno de los propósitos de este proyecto es instalar el monitoreo móvil en lugares donde esté ya instalada una red LAN. Una opción era la de implementar el servicio de control con el puerto USB, el inconveniente de los puertos USB (para el caso de este proyecto), es que actualmente se usan para todo, por ejemplo: impresora, scanner, mouse, teclado, memoria, etc. Normalmente los dispositivos anteriores se tienen conectados, sin mencionar que todavía le vamos a conectar la cámara, entonces tendríamos demasiados dispositivos saturando los puertos USB, por eso es que decidimos implementar el control del móvil con el puerto paralelo.
5.1.1 Estructura
Como podemos observar en la figura 5.1.1.1, el puerto paralelo consta de un conector DB-25 hembra en la PC, también conocido como Centronics, nombre de la empresa que lo desarrolló.
Figura 5.1.1.1. Puerto paralelo hembra.
Figura 5.1.1.2. Organización de los registros físicos del LPT.
En la figura anterior se muestra como están físicamente las líneas de datos, control y estado. Ahora en la siguiente figura se muestra como están compuestos los registros del LPT.
Figura 5.1.1.3. Organización de los registros del LPT.
Dirección Nombre Lectura/Escritura Bit Propiedades
D7 Dato 7 D6 Dato 6 D5 Dato 5 D4 Dato 4 D3 Dato 3 D2 Dato 2 D1 Dato 1 Base + 0 Registro de datos Lectura y escritura
[image:71.595.70.525.34.752.2] [image:71.595.75.526.422.737.2]D0 Dato 0
Tabla 5.1.1.1. Registro de datos
Dirección Nombre Lectura/Escritura Bit # Propiedades
Bit 7 Busy Bit 6 Acknowledge Bit 5 Falta de papel Bit 4 Select In Bit 3 Error Bit 2 IRQ (Not) Bit 1 Reservado Base + 1 Registro de estado Sólo lectura
Bit 0 Reservado
Tabla 5.1.1.2. Registro de estado
Dirección Nombre Lectura/Escritura Bit # Propiedades
Bit 7 No usado Bit 6 No usado Bit 5 Permite puerto bidireccional
Bit 4
Permite IRQ a través de la
línea acknowledge Bit 3 Selecciona impresora Bit 2 impresora Inicializa Bit 1 Nueva línea automática Base + 2 Registro de control Lectura y escritura
De las tablas, podemos ver que cada registro tiene una dirección asignada, en la tabla la dirección se representa con la palabra base, se muestra así porque la dirección puede tener distintos valores, dependiendo de la arquitectura de la PC. Esta dirección se puede encontrar en el panel de control y en administrador de dispositivos, normalmente el sistema operativo lo identifica como LPT1.La dirección está en numeración hexadecimal y para el caso de este proyecto las direcciones son: 378h que correspondería a la dirección del registro de datos, 379h para el registro de estado y 37Ah para el registro de control.
En la figura 5.1.1.4 se muestra el esquema general del circuito que emplearemos para mandar los datos, el circuito más detallado se verá en siguientes puntos.
Figura 5.1.1.4. Conexión entre el puerto LPT y el módulo transmisor
corresponden desde la 2 hasta la 9, corresponden a las líneas de datos, los cuales forman un valor en binario.
El estado alto de cada terminal, o sea, la presencia de una tensión del orden de los 5V, corresponde a los siguientes valores decimales:
2=1, 3=2, 4=4, 5=8, 6=16, 7=32, 8=64, 9=128
Como se podrá apreciar, cada salida representa un dígito binario. Cada valor que enviemos al puerto hará que algunos tengan un estado alto, mientras que otros tengan un estado bajo, o sea, cercano a los 0V.
Si se sabe trabajar con numeración binaria, se verá que pueden encender la combinación que deseen, de salidas en el puerto. Sólo basta con ingresar el número adecuado, teniendo en cuenta que al haber 8 dígitos binarios, el rango va desde 0 hasta 255.
A la hora de querer acceder a los puertos bajo ambiente Windows mediante un programa de alto nivel (C++, C#, Visual Basic) el sistema lo restringe especialmente en versiones más actuales de este sistema operativo como es el caso de Xp y Vista.
Para solucionar este problema se ocupan las DLL (Dynamic Linking Library) cuya traducción al español sería Biblioteca de Enlace Dinámico y son una evolución de las bibliotecas estáticas. Usarlos en el desarrollo de programas trae ciertas ventajas como:
• Reducción del tamaño de los archivos ejecutables: pues parte del código puede estar en las bibliotecas y no en el programa ejecutable.
• Compartir bibliotecas entre aplicaciones.
• Facilitar la gestión y aprovechar la memoria del sistema.
• Brindar flexibilidad frente a cambios: la solución de errores o la
implementación de mejoras, puede solucionarse sólo con distribuir una nueva versión de la biblioteca. Esta corrección, en general, será válida para todas las aplicaciones que la utilicen.
Código 5.1.2. DLL inpout32. library inpout32;
uses SysUtils;
function Out32(PortAddress:smallint;Value:smallint);stdcall;export; var ByteValue:Byte; begin ByteValue:=Byte(Value); asm push dx mov dx,PortAddress mov al, ByteValue out dx,al
pop dx end; end;
function Inp32(PortAddress:smallint):smallint;stdcall;export; var
ByteValue:byte; begin
asm push dx
mov dx, PortAddress in al,dx
mov ByteValue,al pop dx
end;
mostramos porque es necesario aclarar algunos puntos de este código, para su
implementación con el lenguaje de programación C#. Como podemos ver en el código anterior, está resaltado en la primera línea “library inpout32;” éste es el nombre de la DLL y se declara como una biblioteca, esto es, por lo que habíamos mencionada antes de que una archivo DLL no es más que una biblioteca dinámica que interactúa con otras bibliotecas y con componentes del sistema.
5.1.3 Control del LPT con C#
Como mencionamos en el capítulo anterior, el encargado de generar las señales de control del móvil por el puerto paralelo, debe de ser un software con las siguientes características:
• Tener funciones de carga de DLL.
• Debe de ser compatible con un lenguaje de servidor.
Las dos características anteriores son indispensables para el control a distancia mediante Internet, ya que en el servidor es donde va a entrar el usuario y como vimos en el punto anterior, es necesario manejar DLL para acceder al LPT. Un lenguaje de programación que cumple con las características anteriores es C#, ya que con este lenguaje se programa el lenguaje de servidor ASP.NET, además en C# existen clases que tienen funciones que permiten cargar DLL, razón por la cual este lenguaje es el ideal, para lograr un control a distancia mediante un servidor por Internet.