Академический Документы
Профессиональный Документы
Культура Документы
ESTADO DE HIDALGO
TESIS
PRESENTAN:
ASESOR:
AGRADECIMIENTOS
Gracias a Dios por permitirme llegar hasta este momento tan importante de mi vida y
lograr otra meta más en mi carrera.
Gracias a mi novia Jazmín por su apoyo, porras y amor que me brinda a pesar de
muchas cosas.
Gracias a mis amigos Benigno, Emmanuel y Mauricio por convivir conmigo y hacer más
ameno el tiempo de mi estancia en la universidad, todas las cosas que sucedieron en
ese transcurso siempre serán algo muy importante para mí.
Gracias al Ing. Francisco Javier Cuellar Ortega por las enseñanzas y amistad que me
han sido de utilidad para la realización de la tesis y para mí desarrollo profesional.
i
Agradecimientos ii
____________________________________________________________________________
A quienes sin escatimar esfuerzo alguno, han sacrificado gran parte de su vida para
formarme y educarme. A quienes la ilusión de su vida ha sido convertirme en una
persona de provecho. A quienes nunca podré pagar todos sus desvelos ni aún con las
riquezas más grandes del mundo, por eso y más, quiero que sientan que el objetivo
logrado también es de ustedes y que la fuerza que me ayudo a conseguirlo fué su
apoyo… Gracias mami y papi por dejarme el legado más grande que pudiera recibir.
Al Ing. Miguel Rosas Yacotu y a la Dr. Eva Jeanine Lezama Estrada por su amistad,
consejos y apoyo que me brindaron durante toda la carrera.
A mis amigos Benigno e Iván que estuvieron, están y seguirán estando a mi lado a
pesar de la distancia o los diferentes caminos que tomen nuestras vidas. A la “niña
latosa” que me molestaba y no me dejaba terminar este trabajo, pero que me enseño
grandes cosas de la vida, por su amistad, cariño, apoyo y comprensión.
A todos los catedráticos de los cuales aprendí muchas cosas y me formaron como
profesionista.
ii
Resumen iii
____________________________________________________________________________
RESUMEN
Con la expansión y uso de las redes de internet y además del creciente mercado de
sistemas, productos y servicios a través de internet, se puede sacar el mejor provecho
de estos avances tecnológicos desarrollando diversos sistemas para aplicaciones
embebidas que satisfagan las distintas necesidades que se presenten.
iii
Índice iv
____________________________________________________________________________
ÍNDICE
AGRADECIMIENTOS i
RESUMEN iii
ÍNDICE iv
ÍNDICE DE FIGURAS ix
ÍNDICE DE TABLAS xiv
CAPITULO 1. INTRODUCCIÓN 1
1.1 Introducción 1
1.2 Objetivos 2
1.2.1 Objetivo general 2
1.2.2 Objetivos específicos 2
1.3 Justificación 2
1.4 Planteamiento del problema 2
1.5 Solución 3
iv
Índice v
____________________________________________________________________________
v
Índice vi
____________________________________________________________________________
CAPITULO 3. DISEÑO 94
3.1 Introducción 94
3.2 Modem 2Wire 95
3.2.1 Características 95
3.2.2 Instalación y Configuración 97
3.3 Tarjeta de desarrollo PICDEM.NET.2 103
3.3.1 Características 103
3.3.2 Instalación y configuración 110
3.4 Interfaz de potencia 114
3.4.1 Construcción, funcionamiento e implementación 114
3.5 Sistema de Adquisición y Transmisión de Datos vía Ethernet 118
3.5.1 Prueba de funcionamiento del sistema 118
vi
Índice vii
____________________________________________________________________________
vii
Índice viii
____________________________________________________________________________
CONCLUSIONES 174
GLOSARIO 175
APENDICE A. CÓDIGO FUENTE .C 188
A.1 Main .C 188
REFERENCIAS 240
viii
Índice de figuras ix
____________________________________________________________________________
ÍNDICE DE FIGURAS
ix
Índice de figuras x
____________________________________________________________________________
x
Índice de figuras xi
____________________________________________________________________________
xi
Índice de figuras xii
____________________________________________________________________________
xii
Índice de figuras xiii
____________________________________________________________________________
xiii
Índice de tablas xiv
____________________________________________________________________________
ÍNDICE DE TABLAS
xiv
Capitulo 1. Introducción 1
____________________________________________________________________________
CAPÍTULO 1. INTRODUCCIÓN
1.1 INTRODUCCIÓN
En los últimos años se ha producido una gran expansión y uso de las redes de Internet,
este crecimiento da paso a nuevas tecnologías y posibilidades en distintas áreas, tal
como lo son las aplicaciones Ethernet.
1
Capitulo 1. Introducción 2
____________________________________________________________________________
1.2 OBJETIVOS
1.3 JUSTIFICACIÓN
Las tendencias actuales llevan al desarrollo y uso de sistemas que integran distintas
tecnologías para crear aplicaciones que faciliten la automatización, control, vigilancia y
manipulación de dispositivos desde cualquier lugar utilizando Internet. Sin embargo es
necesaria la actualización e innovación de tales sistemas para asegurar su
implementación en distintos sectores como lo es el hogar, negocios, empresas e
industrias que permita una interacción sencilla e intuitiva de los usuarios.
2
Capitulo 1. Introducción 3
____________________________________________________________________________
1.5 SOLUCIÓN
Los recursos anteriores son unidos mediante la creación de un sitio Web propio, que
une distintas tecnologías como lo es el uso de HTML dinámico, FTP, HTTP CGI,
aplicaciones TCP/IP usando AJAX, DDNS, etc. El sitio Web muestra una interfaz
sencilla e intuitiva para el control de un servidor HTTP interno del sistema, así como la
función de monitoreo y vigilancia y también información extra para la comprensión del
sistema de parte de los usuarios o clientes.
3
Capitulo 2. Estado del Arte. 4
____________________________________________________________________________
4
Capitulo 2. Estado del Arte. 5
____________________________________________________________________________
a esto las redes se expandieron en todo el mundo, como se puede ver en la figura 2.1
(UTEZ, 2003).
5
Capitulo 2. Estado del Arte. 6
____________________________________________________________________________
6
Capitulo 2. Estado del Arte. 7
____________________________________________________________________________
En la tabla 2.1, puede observarse la evolución del internet a través del tiempo de una
forma más sencilla para identificar fácilmente cada una de las etapas (UTEZ, 2003).
7
Capitulo 2. Estado del Arte. 8
____________________________________________________________________________
8
Capitulo 2. Estado del Arte. 9
____________________________________________________________________________
Una red, más que varias computadoras y/o dispositivos conectadas, la constituyen
varias personas que solicitan, proporcionan e intercambian experiencias e
informaciones a través de sistemas de comunicación. En los Bancos, las agencias de
alquiler de vehículos, las líneas aéreas, y casi todas las empresas tienen como núcleo
principal de la comunicación a una RED. Las redes agilizaron en un paso gigante al
mundo, porque grandes cantidades de información se trasladan de un sitio a otro sin
peligro de extraviarse en el camino (Black, 2003).
9
Capitulo 2. Estado del Arte. 10
____________________________________________________________________________
A continuación se mencionan los objetivos primordiales que debe cubrir una red (Groth,
2005):
• El ahorro económico. Los ordenadores pequeños tienen una mejor relación costo
/ rendimiento, comparada con la ofrecida por las máquinas grandes. Estas son, a
grandes rasgos, diez veces más rápidas que el más rápido de los
microprocesadores, pero su costo es miles de veces mayor. Este desequilibrio ha
ocasionado que muchos diseñadores de sistemas, construyan sistemas
constituidos por poderosos ordenadores personales, uno por usuario, con los
datos guardados en una o más máquinas, que funcionan como servidor de
archivo compartido.
10
Capitulo 2. Estado del Arte. 11
____________________________________________________________________________
recibirlos por carta. Esta rapidez hace que la cooperación entre grupos de
individuos que se encuentran alejados, y que anteriormente había sido imposible
de establecer, pueda realizarse ahora (Tanenbaum, 2002).
Un repetidor es un dispositivo de red que se utiliza para regenerar una señal. Los
repetidores regeneran señales analógicas o digitales que se distorsionan a causa de
pérdidas en la transmisión producidas por la atenuación. Un repetidor no toma
decisiones inteligentes acerca del envío de paquetes como lo hace un router o puente,
el símbolo utilizado para representar este dispositivo se puede apreciar en la figura 2.2
(Ibidem).
Los hubs concentran las conexiones. En otras palabras, permiten que la red trate un
grupo de hosts como si fuera una sola unidad. Esto sucede de manera pasiva, sin
interferir en la transmisión de datos. Los hubs activos no sólo concentran hosts, sino
que además regeneran señales. En la figura 2.3 se pueden observar los símbolos
utilizados para los diversos tipos de hubs (Ibídem).
11
Capitulo 2. Estado del Arte. 12
____________________________________________________________________________
12
Capitulo 2. Estado del Arte. 13
____________________________________________________________________________
Los routers poseen todas las capacidades indicadas arriba. Los routers pueden
regenerar señales, concentrar múltiples conexiones, convertir formatos de transmisión
de datos, y manejar transferencias de datos. También pueden conectarse a una WAN,
lo que les permite conectar LAN que se encuentran separadas por grandes distancias.
Ninguno de los demás dispositivos puede proporcionar este tipo de conexión, el
símbolo usadao para este dispositivo se ilustra en la figura 2.6 (Ibídem).
• Tecnología de transmisión
o Broadcast. Un solo canal de comunicación compartido por todas las
máquinas. Un paquete mandado por alguna máquina es recibido por
todas las otras. Todos los nodos pueden acceder a la información en
cualquier momento.
o Point-to-point. Muchas conexiones entre pares individuales de máquinas.
Los paquetes de A a B pueden atravesar máquinas intermedias, entonces
se necesita el ruteo (routing) para dirigirlos.
o Difusión. Se utiliza siempre el mismo medio de transmisión para todos los
nodos.
o Conmutada. Es una técnica de enrutamiento que nos permite hacer uso
eficiente de los enlaces.
• Arquitectura
13
Capitulo 2. Estado del Arte. 14
____________________________________________________________________________
14
Capitulo 2. Estado del Arte. 15
____________________________________________________________________________
15
Capitulo 2. Estado del Arte. 16
____________________________________________________________________________
16
Capitulo 2. Estado del Arte. 17
____________________________________________________________________________
17
Capitulo 2. Estado del Arte. 18
____________________________________________________________________________
18
Capitulo 2. Estado del Arte. 19
____________________________________________________________________________
Las principales ventajas de usar el modelo OSI son las siguientes (ITLP, 2006):
• Reduce la complejidad
• Estandariza las interfaces
• Facilita el diseño modular
• Asegura la interoperabilidad de la tecnología
• Acelera la Evolución
• Simplifica la enseñanza y el aprendizaje
19
Capitulo 2. Estado del Arte. 20
____________________________________________________________________________
El modelo de referencia OSI es un marco que se puede utilizar para comprender cómo
viaja la información a través de una red. El modelo de referencia OSI explica de qué
manera los paquetes de datos viajan a través de varias capas a otro dispositivo de una
red, aun cuando el remitente y el destinatario poseen diferentes tipos de medios de red
(Black, 2003).
En el modelo de referencia OSI, hay siete capas numeradas, cada una de las cuales
ilustra una función de red específica. La división de la red en siete capas permite
obtener las siguientes ventajas (Groth, 2005):
Las capas del modelo OSI, se mencionaran en orden ascendente, así como una breve
descripción de sus características principales (Márquez, 2007).
20
Capitulo 2. Estado del Arte. 21
____________________________________________________________________________
21
Capitulo 2. Estado del Arte. 22
____________________________________________________________________________
2.2 ETHERNET
Con la llegada de Gigabit Ethernet, lo que comenzó como una tecnología LAN ahora se
extiende a distancias que hacen de Ethernet un estándar de red de área metropolitana
(MAN) y red de área amplia (WAN). La idea original de Ethernet nació del problema de
permitir que dos o más host utilizaran el mismo medio y evitar que las señales
interfirieran entre sí. El problema de acceso por varios usuarios a un medio compartido
se estudió a principios de los 70 en la Universidad de Hawái. Se desarrolló un sistema
llamado Alohanet para permitir que varias estaciones de las Islas de Hawái tuvieran
acceso estructurado a la banda de radiofrecuencia compartida en la atmósfera. Más
tarde, este trabajo sentó las bases para el método de acceso a Ethernet conocido como
CSMA/CD (Pérez, 2006).
La primera LAN del mundo fue la versión original de Ethernet. Robert Metcalfe y sus
compañeros de Xerox la diseñaron hace más de treinta años. El primer estándar de
Ethernet fue publicado por un consorcio formado por Digital Equipment Company, Intel
22
Capitulo 2. Estado del Arte. 23
____________________________________________________________________________
y Xerox (DIX). Metcalfe quería que Ethernet fuera un estándar compartido a partir del
cual todos se podían beneficiar, de modo que se lanzó como estándar abierto. Los
primeros productos que se desarrollaron utilizando el estándar de Ethernet se vendieron
a principios de la década de 1980. Ethernet transmitía a una velocidad de hasta 10
Mbps en cable coaxial grueso a una distancia de hasta 2 kilómetros (Km). Este tipo de
cable coaxial se conocía como thicknet (red con cable grueso) y tenía el ancho
aproximado de un dedo pequeño. En 1985, el comité de estándares para Redes
Metropolitanas y Locales del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE)
publicó los estándares para las LAN. Estos estándares comienzan con el número 802.
El estándar para Ethernet es el 802.3. El IEEE quería asegurar que sus estándares
fueran compatibles con el modelo OSI de la Organización Internacional de Estándares
(ISO). Por eso, el estándar IEEE 802.3 debía cubrir las necesidades de la Capa 1 y de
las porciones inferiores de la Capa 2 del modelo OSI. Como resultado, ciertas
pequeñas modificaciones al estándar original de Ethernet se efectuaron en el 802.3.
Las diferencias entre los dos estándares fueron tan insignificantes que cualquier tarjeta
de interfaz de la red de Ethernet (NIC) puede transmitir y recibir tanto tramas de
Ethernet como de 802.3. Básicamente, Ethernet y IEEE 802.3 son un mismo estándar
(Ibídem).
El ancho de banda de 10 Mbps de Ethernet era más que suficiente para los lentos
computadores personales (PC) de los años 80. A principios de los 90, los PC se
volvieron mucho más rápidos, los tamaños de los archivos aumentaron y se producían
cuellos de botella en el flujo de los datos. La mayoría a causa de una baja disponibilidad
del ancho de banda. En 1995, el IEEE anunció un estándar para la Ethernet de 100
Mbps. Más tarde siguieron los estándares para Ethernet de un gigabit por segundo en
1998 y 1999 (Herrera, 2003).
23
Capitulo 2. Estado del Arte. 24
____________________________________________________________________________
cambia. Por este motivo, se considera que Ethernet es muy escalable. El ancho de
banda de la red podría aumentarse muchas veces sin cambiar la tecnología base de
Ethernet. El estándar original de Ethernet ha sufrido una cantidad de enmiendas con el
fin de administrar nuevos medios y mayores velocidades de transmisión. Estas
enmiendas sirven de estándar para las tecnologías emergentes y para mantener la
compatibilidad entre las variaciones de Ethernet (Black, 2003).
Una red de aérea local (Local Área Network: LAN) es la interconexión de varios
ordenadores y periféricos. Su extensión esta limitada físicamente a un edificio o aun
entorno de hasta 200 metros. Su aplicación más extendida es la interconexión de
ordenadores personales y estaciones de trabajo en oficinas, fábricas, etc., para
compartir recursos e intercambiar datos y aplicaciones. En definitiva, permite que dos o
más maquinas se comuniquen (ITLP, 2006).
El termino LAN refiere un grupo de estándares de capa 1 y 2 del modelo OSI (capa
física y capa de enlace de datos respectivamente) diseñados para trabajar en conjunto
24
Capitulo 2. Estado del Arte. 25
____________________________________________________________________________
con el propósito de implementar redes geográficamente pequeñas. Para crear una LAN
básica se necesitan tres componentes principales (Pérez, 2006):
La figura 2.14 muestra una LAN con cada uno de los elementos antes mostrados y
otros que son típicos de la red.
Para elegir el tipo de red hay que tener en cuenta distintos factores, como son el
número de estaciones, distancia máxima entre ellas, dificultad del cableado,
necesidades de velocidad de respuesta o de enviar otras informaciones aparte de los
datos de la red (Ibídem).
25
Capitulo 2. Estado del Arte. 26
____________________________________________________________________________
El formato de la trama del estándar IEEE 802.3 tiene diferencias con el formato original
diseñado para Ethernet producto de las constantes mejoras a la tecnología (ver figura
15), lo que muchas veces es un problema para la compatibilidad entre equipos nuevos
y viejos (Sanguanpong, 2000).
26
Capitulo 2. Estado del Arte. 27
____________________________________________________________________________
Una de las diferencias entre las dos tramas esta en el preámbulo. El propósito del
preámbulo es anunciar la trama y permitir a todos los receptores en la red sincronizarse
a sí mismos a la trama entrante. El preámbulo en Ethernet tiene una longitud de 8 bytes
pero en IEEE 802.3 la longitud del mismo es de 7 bytes, en este último el octavo byte
se convierte en el comienzo del delimitador de trama. La segunda diferencia entre el
formato de las tramas es en el campo tipo de trama que se encuentra en la trama
Ethernet. Un campo tipo es usado para especificar al protocolo que es transportado en
la trama. Esto posibilita que muchos protocolos puedan ser transportados en la trama.
El campo tipo fue reemplazado en el estándar IEEE 802.3 por un campo longitud de
trama, el cual es utilizado para indicar el numero de bytes que se encuentran en el
campo de datos. La tercera diferencia entre los formatos de ambas tramas se
encuentra en los campos de dirección tanto de destino como de origen. Mientras que el
formato de IEEE 802.3 permite el uso tanto de direcciones de 2 como de 6 bytes, el
estándar Ethernet permite solo direcciones de 6 bytes (Ibídem).
El formato de trama que predomina actualmente en los ambientes Ethernet es el de
IEEE 802.3, pero la tecnología de red continua siendo referenciada como Ethernet.
27
Capitulo 2. Estado del Arte. 28
____________________________________________________________________________
Ethernet no es una tecnología para redes, sino una familia de tecnologías para redes
que incluye Legacy, Fast Ethernet y Gigabit Ethernet. Las velocidades de Ethernet
pueden ser de 10, 100, 1000 ó 10000 Mbps. El formato básico de la trama y las
subcapas del IEEE de las Capas OSI 1 y 2 siguen siendo los mismos para todas las
formas de Ethernet (UTEZ, 2003).
Ethernet emplea señalización banda base, la cual utiliza todo el ancho de banda del
medio de transmisión. La señal de datos se transmite directamente por el medio de
transmisión. Los datos se transmiten directamente sobre el medio de transmisión
(Ibídem).
El IEEE no puede forzar a los fabricantes de equipamiento para redes a cumplir con
todas las particularidades de ningún estándar. El IEEE espera que se logre lo siguiente
(Pérez, 2006):
28
Capitulo 2. Estado del Arte. 29
____________________________________________________________________________
Cada dispositivo equipado con Ethernet opera de forma independiente del resto de los
dispositivos de la red, las redes Ethernet no hacen uso de un dispositivo central de
control. Todos los dispositivos son conectados a un canal de comunicaciones de
señales compartidas (Groth, 2005).
Las señales Ethernet son transmitidas en serie, se transmite un bit a la vez. Las
transmisiones se realizan a través del canal de señales compartidas donde todos los
dispositivos conectados pueden escuchar la transmisión (Herrera, 2003).
Después de que es transmitida una trama, todos los dispositivos de la red compiten por
la siguiente oportunidad de transmitir una trama. La disputa por la oportunidad de
transmitir una trama. La disputa por la oportunidad de transmitir entre los dispositivos es
pareja, para asegurar que el acceso al canal de comunicaciones sea justo, ningún
dispositivo puede bloquear a otros dispositivos. El acceso al canal de comunicaciones
compartido es determinado por la subcapa MAC (Ibídem).
2.2.6.1 DIRECCIONAMIENTO
Los campos de direcciones en una trama Ethernet llevan direcciones de 48 bits, tanto
para la dirección de destino como la de origen. El estándar IEEE administra parte del
campo de las direcciones mediante el control de la asignación un identificador de 24
bits conocido como OUI (UTEZ, 2003).
29
Capitulo 2. Estado del Arte. 30
____________________________________________________________________________
A cada organización que desee construir interfaces de red (NIC) Ethernet, se le asigna
un OUI de 24 bits único, el cual es utilizado como los primeros 24 bits de la dirección de
hardware, o dirección MAC. El uso de direcciones únicas pre asignadas, simplifica el
montaje y crecimiento de una red Ethernet (Ibídem).
La topología lógica de una red determina como las señales son trasferidas en la red. La
topología lógica de una re Ethernet provee un único canal de comunicaciones que
transporta señales de todos los dispositivos conectados. Esta topología lógica puede
ser diferente de la topología física o de la disposición real del medio. Por ejemplo, si los
segmentos del medio de una red Ethernet se encuentran concentrados físicamente
siguiendo una topología estrella, la topología lógica continua siendo la de un único
canal de comunicaciones que transporta señales de todos los dispositivos conectados.
La señal generada en un dispositivo es generada por el segmento del medio al cual
está conectado. La señal es repetida en todos los otros segmentos conectados de
forma que sea escuchada por todas las demás estaciones. Sin importa cuál sea la
topología física, solo existe un canal de señales para entregar tramas a través de todos
los segmentos a todos los dispositivos conectados como se aprecia en la figura 2.16
(McQuerry, 2008).
30
Capitulo 2. Estado del Arte. 31
____________________________________________________________________________
2.3.1 INTRODUCCIÓN
Internet se desarrolló para brindar una red de comunicación que pudiera continuar
funcionando en tiempos de guerra. Aunque la Internet ha evolucionado en formas muy
diferentes a las imaginadas por sus arquitectos, todavía se basa en un conjunto de
protocolos TCP/IP. El diseño de TCP/IP es ideal para la poderosa y descentralizada red
que es Internet. Muchos de los protocolos utilizados hoy en día se diseñaron utilizando
el modelo TCP/IP de cuatro capas (Reynders, 2003).
Resulta útil conocer los modelos de red OSI y TCP/IP. Cada modelo ofrece su propia
estructura para explicar cómo funciona una red, pero los dos comparten muchas
características. La falta de comprensión de cualquier de los dos modelos puede hacer
que un administrador de sistemas no cuente con la información suficiente para
determinar por qué una red funciona de cierta forma (Wright, 2003).
Todo dispositivo conectado a Internet que desee comunicarse con otros dispositivos en
línea debe tener un identificador exclusivo. El identificador se denomina dirección IP
porque los Routers utilizan un protocolo de la capa tres, el protocolo IP, para encontrar
la mejor ruta hacia dicho dispositivo. IPv4, la versión actual de IP, se diseñó antes de
que se produjera una gran demanda de direcciones. El crecimiento explosivo de
Internet ha amenazado con agotar el suministro de direcciones IP. La división en
subredes, la Traducción de direcciones en red (NAT) y el direccionamiento privado se
utilizan para extender el direccionamiento IP sin agotar el suministro. Otra versión de IP
conocida como IPv6 mejora la versión actual proporcionando un espacio de
direccionamiento mucho mayor, integrando o eliminando los métodos utilizados para
trabajar con los puntos débiles del IPv4 (Ibídem).
31
Capitulo 2. Estado del Arte. 32
____________________________________________________________________________
32
Capitulo 2. Estado del Arte. 33
____________________________________________________________________________
de las capas de los dos modelos ya que estas desempeñan diferentes funciones en
cada modelo (Ibídem).
La capa de aplicación del modelo TCP/IP maneja protocolos de alto nivel, aspectos de
representación, codificación y control de diálogo, como se muestra en la figura 2.18. El
modelo TCP/IP combina todos los aspectos relacionados con las aplicaciones en una
sola capa y asegura que estos datos estén correctamente empaquetados antes de que
pasen a la capa siguiente. TCP/IP incluye no sólo las especificaciones de Internet y de
la capa de transporte, tales como IP y TCP, sino también las especificaciones para
aplicaciones comunes. TCP/IP tiene protocolos que soportan la transferencia de
archivos, e-mail, y conexión remota, además de los siguientes (UTEZ, 2003):
33
Capitulo 2. Estado del Arte. 34
____________________________________________________________________________
34
Capitulo 2. Estado del Arte. 35
____________________________________________________________________________
flujo de datos, o conexión lógica entre los extremos. La corriente de datos de la capa de
transporte brinda transporte de extremo a extremo (Ibídem).
Generalmente, se compara la Internet con una nube. La capa de transporte envía los
paquetes de datos desde la fuente transmisora hacia el destino receptor a través de la
nube. El control de punta a punta, que se proporciona con las ventanas deslizantes y la
confiabilidad de los números de secuencia y acuses de recibo, es el deber básico de la
capa de transporte cuando utiliza TCP. La capa de transporte también define la
conectividad de extremo a extremo entre las aplicaciones de los hosts. Los servicios de
transporte incluyen los siguientes servicios (Ibídem):
TCP y UDP
TCP solamente
35
Capitulo 2. Estado del Arte. 36
____________________________________________________________________________
Generalmente, se representa la Internet con una nube. La capa de transporte envía los
paquetes de datos desde la fuente transmisora hacia el destino receptor a través de la
nube (ver figura 2.20). La nube maneja los aspectos tales como la determinación de la
mejor ruta (ver figura 2.21).
36
Capitulo 2. Estado del Arte. 37
____________________________________________________________________________
El propósito de la capa de Internet es seleccionar la mejor ruta para enviar paquetes por
la red (Parker, 2001). El protocolo principal que funciona en esta capa es el Protocolo
de Internet (IP). La determinación de la mejor ruta y la conmutación de los paquetes
ocurren en esta capa (UTEZ, 2003).
Los siguientes protocolos operan en la capa de Internet TCP/IP (ver figura 2.22):
37
Capitulo 2. Estado del Arte. 38
____________________________________________________________________________
o Transfiere los datos entre la capa Internet y las capas de acceso de red.
o Enruta los paquetes hacia los hosts remotos (UTEZ, 2003).
La capa de acceso de red también se le denomina capa de host a red (ver figura 2.24).
La capa de acceso de red es la capa que maneja todos los aspectos que un paquete IP
requiere para efectuar un enlace físico real con los medios de la red. Esta capa incluye
los detalles de la tecnología LAN y WAN y todos los detalles de la capa física y de
enlace de datos del modelo OSI (UTEZ, 2003).
38
Capitulo 2. Estado del Arte. 39
____________________________________________________________________________
Los controladores para las aplicaciones de software, las tarjetas de módem y otros
dispositivos operan en la capa de acceso de red. La capa de acceso de red define los
procedimientos para realizar la interfaz con el hardware de la red y para tener acceso al
medio de transmisión. Los estándares del protocolo de los módem tales como el
Protocolo Internet de Enlace Serial (SLIP) y el Protocolo de Punta a Punta (PPP)
brindan acceso a la red a través de una conexión por módem. Debido a un intrincado
juego entre las especificaciones del hardware, el software y los medios de transmisión,
existen muchos protocolos que operan en esta capa. Esto puede generar confusión en
los usuarios. La mayoría de los protocolos reconocibles operan en las capas de
transporte y de Internet del modelo TCP/IP (Parker, 2001).
40
Capitulo 2. Estado del Arte. 41
____________________________________________________________________________
41
Capitulo 2. Estado del Arte. 42
____________________________________________________________________________
Las cabeceras de HTTP pueden contener información acerca de los objetos que
transmite la aplicación a través de la Web. Con la información de las cabeceras, las
aplicaciones Cliente-Servidor negocian formatos que pueden utilizar para transferir los
objetos. Si no reconocen la información de la cabecera, la ignoran. Por tanto, puede
probar nuevos protocolos en la Web sin comprometer la integridad del HTTP. Además
el protocolo está basado en texto por lo cual es legible y no necesita decodificación.
La información transmitida es identificada mediante una url (de ahí que las páginas que
vemos en un navegador de internet comienzan con http://) y es conocida como recurso.
Esta arquitectura hace de este protocolo muy flexible a la hora de enviar y recibir datos,
ya que es estándar y puede manejar cualquier tipo de multimedia, audio, textos,
imágenes etc. El protocolo de Transferencia de Hipertexto es un protocolo de nivel de
aplicación en el formato de capas de TCP/IP para sistemas de información hipermedia
distribuida y colaborativa. Ha estado en usa por la iniciativa WWW desde 1990
(McQuerry, 2008).
42
Capitulo 2. Estado del Arte. 43
____________________________________________________________________________
Si se reciben líneas de encabezado del cliente, el servidor las coloca en las variables de
ambiente de CGI con el prefijo "HTTP_" seguido del nombre del encabezado. Cualquier
carácter guión"-" del nombre del encabezado se convierte a caracteres "_” (Marquez,
2004).
• Un código de estado que indica si la petición fue correcta o no. Los códigos de
error típicos indican que el archivo solicitado no se encontró, que la petición no
43
Capitulo 2. Estado del Arte. 44
____________________________________________________________________________
• Se, abre una conexión al host www.example.com, puerto 80 que es el puerto por
defecto para HTTP.
• Se envía un mensaje en el estilo siguiente:
GE/.index.html HTTP/1.1
Host: www.example.com
User-Agent: nombre-cliente
[Línea en blanco]
• La respuesta del servidor está formada por encabezados seguidos del recurso
solicitado, en el caso de una página web:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1221
<htmt>
44
Capitulo 2. Estado del Arte. 45
____________________________________________________________________________
<body>
(Contenido)
</body>
</html>
El sistema HTTPS utiliza un cifrado basado en las Secure Socket Layers (SSL) para
crear un canal cifrado (cuyo nivel de cifrado depende del servidor remoto y del
navegador utilizado por el cliente) más apropiado para el tráfico de información sensible
que el protocolo HTTP. De este modo se consigue que la información sensible (usuario
y claves de paso normalmente) no puede ser usada por un atacante que haya
conseguido interceptar la transferencia de datos de la conexión, ya que lo único que
obtendrá será un flujo de datos cifrados que le resultará imposible de descifrar. Los
protocolos HTTPS son utilizados por navegadores como: Zafarí, Internet Explorer,
Mozilla Firefox, Opera y Google Chrome, entre otros. El puerto estándar para este
protocolo es el 443 (Ibídem).
45
Capitulo 2. Estado del Arte. 46
____________________________________________________________________________
Para conocer si una página web que estamos visitando, utiliza el protocolo https y es,
por tanto, segura en cuanto a la trasmisión de los datos que estamos transcribiendo,
debemos observar si en la barra de direcciones de nuestro navegador, aparece https al
comienzo, en lugar de http. Algunos navegadores utilizan un icono generalmente un
candado) en la parte derecha de la barra de direcciones para indicar la existencia de un
protocolo de comunicaciones seguro e incluso cambian el color del fondo de la barra de
direcciones por amarillo (Firefox) o verde (Internet Explorer) para identificar páginas
web seguras (UTEZ, 2003).
46
Capitulo 2. Estado del Arte. 47
____________________________________________________________________________
Muchos de saben que apariencia tiene una computadora, usualmente tiene teclado,
monitor, CPU (Unidad de Procesamiento Central), impresora y mouse. Este tipo de
computadoras, como Mac o PC, son diseñadas principalmente para comunicarse con
humanos. Manejo de base de datos, análisis financieros o incluso procesadores de
textos, se encuentran todos dentro de la “gran caja”, que contiene CPU, la memoria, el
disco rígido, etc. El verdadero “cómputo”, sin embargo, tiene lugar dentro de la CPU. Si
piensa sobre esto, el único propósito del monitor, teclado, mouse e incluso la impresora,
es “conectar” a la CPU con el mundo exterior (González, 2002).
47
Capitulo 2. Estado del Arte. 48
____________________________________________________________________________
48
Capitulo 2. Estado del Arte. 49
____________________________________________________________________________
49
Capitulo 2. Estado del Arte. 50
____________________________________________________________________________
50
Capitulo 2. Estado del Arte. 51
____________________________________________________________________________
51
Capitulo 2. Estado del Arte. 52
____________________________________________________________________________
Las diferencias más importantes son: Por ejemplo la configuración mínima básica de un
microprocesador estaba constituida por un Micro de 40 Pines, Una memoria RAM de 28
Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines;
pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por
lo que implica una gran ventaja en varios factores: En el circuito impreso por su amplia
simplificación de circuitería, el costo para un sistema basado en microcontrolador es
mucho menor y, lo mejor de todo, el tiempo de desarrollo de su proyecto electrónico se
disminuye considerablemente (Gonzalez, 2002).
52
Capitulo 2. Estado del Arte. 53
____________________________________________________________________________
53
Capitulo 2. Estado del Arte. 54
____________________________________________________________________________
Von Neumann:
El tamaño de la unidad de datos o instrucciones está fijado por el ancho del bus que
comunica la memoria con la CPU. Así un microprocesador de 8 bits con un bus de 8
bits, tendrá que manejar datos e instrucciones de una o más unidades de 8 bits (bytes)
de longitud. Si tiene que acceder a una instrucción o dato de más de un byte de
longitud, tendrá que realizar más de un acceso a la memoria. Y el tener un único bus
54
Capitulo 2. Estado del Arte. 55
____________________________________________________________________________
hace que el microprocesador sea más lento en su respuesta, ya que no puede buscar
en memoria una nueva instrucción mientras no finalicen las transferencias de datos de
la instrucción anterior, como se ilustra a grandes rasgos en la figura 2.30. Resumiendo
todo lo anterior, las principales limitaciones que nos encontramos con la arquitectura
Von Neumann son (Orduña, 2001):
Harvard:
55
Capitulo 2. Estado del Arte. 56
____________________________________________________________________________
a los datos para completar la ejecución de una instrucción, y al mismo tiempo leer la
siguiente instrucción a ejecutar. Ventajas de esta arquitectura (Ibídem):
56
Capitulo 2. Estado del Arte. 57
____________________________________________________________________________
El procesador o UCP
57
Capitulo 2. Estado del Arte. 58
____________________________________________________________________________
Memoria
Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia
del mismo en la RAM pues se ejecuta directamente desde la ROM. Los usuarios de
computadores personales están habituados a manejar Megabytes de memoria, pero,
los diseñadores con microcontroladores trabajan con capacidades de ROM
comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512
bytes. Según el tipo de memoria ROM que dispongan los microcontroladores, la
aplicación y utilización de los mismos es diferente. Se describen las cinco versiones de
memoria no volátil que se pueden encontrar en los microcontroladores del mercado
(Aguayo, 2004).
• ROM con máscara: Es una memoria no volátil de sólo lectura cuyo contenido se
graba durante la fabricación del chip. El elevado coste del diseño de la máscara
sólo hace aconsejable el empleo de los microcontroladores con este tipo de
memoria cuando se precisan cantidades superiores a varios miles de unidades.
58
Capitulo 2. Estado del Arte. 59
____________________________________________________________________________
59
Capitulo 2. Estado del Arte. 60
____________________________________________________________________________
que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria
es relativamente lenta.
Reloj principal
Todos los microcontroladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la
60
Capitulo 2. Estado del Arte. 61
____________________________________________________________________________
RECURSOS ESPECIALES
61
Capitulo 2. Estado del Arte. 62
____________________________________________________________________________
62
Capitulo 2. Estado del Arte. 63
____________________________________________________________________________
• Conversor D/A. Transforma los datos digitales obtenidos del procesamiento del
computador en su correspondiente señal analógica que saca al exterior por una
de las patitas de la cápsula. Existen muchos efectores que trabajan con señales
analógicas.
63
Capitulo 2. Estado del Arte. 64
____________________________________________________________________________
64
Capitulo 2. Estado del Arte. 65
____________________________________________________________________________
65
Capitulo 2. Estado del Arte. 66
____________________________________________________________________________
66
Capitulo 2. Estado del Arte. 67
____________________________________________________________________________
67
Capitulo 2. Estado del Arte. 68
____________________________________________________________________________
Las aplicaciones más habituales (casi un 90%) la elección de una versión adecuada de
PIC es la mejor solución; sin embargo, dado su carácter general, otras familias de
microcontroladores son más eficaces en aplicaciones específicas, especialmente si en
ellas predomina una característica concreta, que puede estar muy desarrollada en otra
familia. Las razones que se tomaron en cuenta para el uso de los PIC en el presente
trabajo son los siguientes (Microchip, 2009):
Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a
manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es
muy fácil emplear otro modelo.
68
Capitulo 2. Estado del Arte. 69
____________________________________________________________________________
69
Capitulo 2. Estado del Arte. 70
____________________________________________________________________________
1. Velocidad de ejecución.
2. Eficiencia en la compactación del código.
70
Capitulo 2. Estado del Arte. 71
____________________________________________________________________________
71
Capitulo 2. Estado del Arte. 72
____________________________________________________________________________
72
Capitulo 2. Estado del Arte. 73
____________________________________________________________________________
73
Capitulo 2. Estado del Arte. 74
____________________________________________________________________________
74
Capitulo 2. Estado del Arte. 75
____________________________________________________________________________
• Aplicaciones del servidor: El servidor web ejecuta la aplicación; ésta, una vez
ejecutada, genera cierto código HTML; el servidor toma este código recién
creado y lo envía al cliente por medio del protocolo HTTP (Ibídem).
Las aplicaciones de servidor muchas veces suelen ser la mejor opción para realizar
aplicaciones web. La razón es que, al ejecutarse ésta en el servidor y no en la máquina
del cliente, éste no necesita ninguna capacidad añadida, como sí ocurre en el caso de
75
Capitulo 2. Estado del Arte. 76
____________________________________________________________________________
querer ejecutar aplicaciones javascript o java. Así pues, cualquier cliente dotado de un
navegador web básico puede utilizar este tipo de aplicaciones. Dependiendo del tipo de
dispositivo y sus características, los servidores web se encuentran en computadoras y
en sistemas embebidos (Ibídem).
En este caso el servidor web se refiere al software usado, como el servidor de http de
Apache, que funciona en la computadora y maneja la entrega de los componentes de
las páginas web como respuesta a peticiones de los navegadores de los clientes
(Module for hosting, 2009).
Apache es un estándar de distribución libre que dio el empujón inicial para la expansión
de la Web, su plataforma de código abierto garantiza estabilidad, disponibilidad e
interoperabilidad de las plataformas y tecnologías Web modernas, al igual de su
facilidad de implementación en la mayoría de sistemas operativos existentes. Apache
cuenta con una comunidad de desarrolladores y miembros que añaden funciones con el
propósito de asegurar su funcionamiento con los estándares HTTP que surgen
(Ibídem).
76
Capitulo 2. Estado del Arte. 77
____________________________________________________________________________
HTTP, el cual provee una interfaz sencilla con características y funciones mínimas a
comparación de los servidores en computadoras (SourceForge, 2008).
77
Capitulo 2. Estado del Arte. 78
____________________________________________________________________________
2.9.1 MPFS
78
Capitulo 2. Estado del Arte. 79
____________________________________________________________________________
Donde:
79
Capitulo 2. Estado del Arte. 80
____________________________________________________________________________
El servidor FTP es una tarea cooperativa que coexiste con el Stack TCP/IP desarrollado
por microchip y la aplicación principal, el cual consta de dos componentes (Rajbharti,
2006):
El servidor HTTP interno al igual que el servidor FTP contiene funciones mínimas
propias de un sistema embebido. El servidor cuenta con las siguientes características y
funciones (Rajbharti, 2006):
80
Capitulo 2. Estado del Arte. 81
____________________________________________________________________________
El servidor HTTP usa el archivo “index.htm” como la página Web por defecto, la cual es
mostrada cada vez que se ingresa por primera vez. Esto requiere que todas las
aplicaciones incluyan un archivo “index.htm” como parte de la imagen MPFS. De igual
manera es de gran importancia asegurarse que ninguno de los nombres de otras
páginas Web a usar contenga alguno de los siguientes caracteres alfanuméricos
(Ibídem):
El servidor también contiene una lista de los archivos que son soportados, usando esta
información para avisar al explorador remoto como interpretar un archivo en particular,
basado en una extensión de un archivo de tres letras. Por defecto el servidor soporta
los archivos “.txt”, “.htm”, “.gif”, “.cgi”, “.jpg”, “.cla” y “.wav”. Una aplicación no puede
usar tipos de archivo que no están incluidos en esta lista (Ibídem).
81
Capitulo 2. Estado del Arte. 82
____________________________________________________________________________
Algunas de tecnologías Web más utilizadas para sistemas que realizan o reciben
peticiones de información y respuestas a la interacción con los clientes o usuarios son
las siguientes:
• HTTP CGI
• HTML Dinámico
• JavaScript
• AJAX
• CSS
Para el uso en el servidor HTTP se implementa una versión modificada de CGI. Con
esta interfaz un cliente HTTP puede invocar una función (variable o comando) con
HTTP y recibir resultados en la forma de una página Web. Cuando un cliente remoto
invoca una función por el método HTML GET con más de un parámetro, el servidor
HTTP analiza y llama a la aplicación principal con el método actual de código y todos
los parámetros. Al usar HTTP CGI no se realiza “decodificación de URL”, esto significa
que si cualquiera de las formas de campos de texto que contengan ciertos caracteres
especiales (como <, >, “, #, %, etc.), el valor actual de un parámetro debe de contener
“%xx” (siendo “xx” el valor hexadecimal del carácter ASCII de una variable), en lugar del
82
Capitulo 2. Estado del Arte. 83
____________________________________________________________________________
nombre de la variable y debe contener “%x” (siendo “x” un valor numérico de un solo
digito). Un archivo que contenga esta forma de HTML, debe de tener “.cgi” como su
extensión de archivo (NCSA, 2009).
2.10.3 JAVASCRIPT
83
Capitulo 2. Estado del Arte. 84
____________________________________________________________________________
84
Capitulo 2. Estado del Arte. 85
____________________________________________________________________________
function GetXMLHttpRequest()
{
var object = null;
if (window.XMLHttpRequest)
{ object = new XMLHttpRequest(); }
else if (window.ActiveXObject)
{
try
{ object = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) { }
if (object == null)
85
Capitulo 2. Estado del Arte. 86
____________________________________________________________________________
{
try
{ object = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) { }
}
}
if (object == null)
{ alert("Your browser does not support AJAX"); }
return object;
}
86
Capitulo 2. Estado del Arte. 87
____________________________________________________________________________
XMLHttpRequestObject.onreadystatechange = ProcessRequest;
XMLHttpRequestObject.open("GET", url, true); XMLHttpRequestObject.send(data);
Se debe notar que los datos que son enviados y recibidos cuando se usa el objeto
XMLHttpRequest pueden ser en cualquier formato que el usuario necesite.
Al final del paso 1, se debe de proveer al usuario una indicación visual de que algo ha
cambiado. Luego el paso 2 se necesita tener un manejador para los procesos que son
solicitados en el servidor, el manejador puede ser un CGI u otro tipo de script como
PHP, ASP o JSP. Por ejemplo (Modelworks Software Solutions, 2008):
function UpdateStatus()
{ xmlHttp = GetXmlHttpObject(StateChanged); xmlHttp.open("GET","Status.cgi",
true);xmlHttp.send(null); }
function stateChanged()
{ if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ document.getElementById("txtHint").innerHTML= xmlHttp.responseText } }
87
Capitulo 2. Estado del Arte. 88
____________________________________________________________________________
Para el uso de funciones similares que usen el atributo readyState se debe de verificar
el status que se asigna, debido a que el manejador será llamado con diferentes estados
y códigos de estatus. Los códigos posibles a utilizar son (Google Code University,
2009):
• 0 No inicializado.
• 1 Cargando.
• 2 Cargado.
• 3 Interactuando.
• 4 Completo.
Las hojas de estilos en cascada (CSS) son un conjunto de reglas de formato que
determinan el aspecto del contenido de una página Web. La utilización de estilos CSS
para aplicar formato a una página permite separar el contenido de la presentación. El
contenido de la página (el código HTML) reside en el archivo HTML, mientras que las
reglas CSS que definen la presentación del código residen en otro archivo (una hoja de
estilos externa) o en otra parte del documento HTML (normalmente, en la sección
head). La separación del contenido y la presentación hace que resulte mucho más fácil
88
Capitulo 2. Estado del Arte. 89
____________________________________________________________________________
mantener el aspecto del sitio desde una ubicación central, ya que no es necesario
actualizar las propiedades de las distintas páginas cuando se desea realizar algún
cambio. La separación del contenido y la presentación también depura y simplifica el
código HTML, lo que disminuye el tiempo de carga en los navegadores y agiliza la
navegación para personas con problemas de accesibilidad (por ejemplo, para los
usuarios que utilicen lectores de pantalla) (Adobe, 2008).
El lenguaje CSS ofrece gran flexibilidad y control para lograr el aspecto exacto que se
desee para la página. Con CSS, se pueden controlar numerosas propiedades del texto,
entre ellas las fuentes y los tamaños de fuente específicos; negrita, cursiva, subrayado
y sombras de texto; color de texto y de fondo; color y subrayado de vínculos; etc. Si se
utiliza CSS para controlar las fuentes, también se conseguirá un tratamiento más
coherente del diseño y el aspecto de la página en múltiples navegadores. Además para
dar formato al texto, se utiliza CSS para definir el formato y la posición de elementos de
nivel de bloque (block-level) de una página Web. Un elemento de nivel de bloque es un
elemento de contenido independiente que normalmente está separado por una nueva
línea en el código HTML y que tiene visualmente el formato de un bloque. Por ejemplo,
las etiquetas “h1”, “p” y “div” generan elementos de nivel de bloque en una página Web.
CSS puede ajustar márgenes y bordes para elementos de nivel de bloque, situarlos en
una ubicación concreta, añadirles color de fondo, colocar texto flotante alrededor de
ellos, etc. La manipulación de elementos de nivel de bloque es, en definitiva, la forma
en que se establece el diseño de las páginas con CSS (Ibídem).
De igual manera el diseño de páginas con CSS, con su correcto manejo provee la
facilidad de seleccionar temas limpios, claros y unificados, sin importar el navegador
que el cliente use o que versión ocupe. El uso de CSS a botones y formas resuelve
muchos problemas, con lo cual hace a los sitios lucir mejor y funciona de igual manera
en cualquier versión de navegador que el cliente utilice (Matti, 2008).
89
Capitulo 2. Estado del Arte. 90
____________________________________________________________________________
En un principio el uso de DNS era muy sencillo debido a que eran pocos los dispositivos
alrededor del mundo que contaban con nombres de dominio y además de contaba con
IP estáticas, pero debido al rápido crecimiento de la internet y la proliferación de
computadoras personales, los proveedores de servicios de internet (ISP) comenzaron a
asignar direcciones IP dinámicas, las cuales cambiaban constantemente lo cual generó
que hubiera una mayor dificultad para la resolución de nombres de dominio (Ibídem).
90
Capitulo 2. Estado del Arte. 91
____________________________________________________________________________
2.11.2.1 EL ROUTER
Uno de los dispositivos más comunes en cualquier red, después de las computadoras
en el router. Se encuentra entre el modem y los otros dispositivos de la red, su trabajo
consiste en dirigir el tráfico de y desde Internet a los dispositivos de la red de área local
que comparten una única conexión a Internet. Un router es más que un simple
separador, puesto que maniobra de manera inteligente los paquetes de datos y
establece una prioridad entre dispositivos para asegurar la transferencia de datos,
muchos incluyen una variedad de características que incluyen la configuración de la
Calidad del Servicio (QoS), opciones de red privada virtual, filtrado de contenido Web,
restricciones de acceso y mucho más (DynDNS, 2008).
Cada dispositivo en Internet tiene por lo menos una dirección IP, la cual es usada para
identificar un dispositivo, además esa dirección es dividida en varios puertos. Cuando
una computadora envía datos a otra, los datos son enviados de un puerto en una
dirección IP a otro puerto en una dirección IP. Es importante mencionar que un puerto
puede ser usado por un solo programa a la vez. Teniendo lo en cuenta lo anterior, la
NAT toma una dirección IP y básicamente la separa en varias direcciones IP. La
91
Capitulo 2. Estado del Arte. 92
____________________________________________________________________________
En la figura 2.35 se aprecia que solo los dispositivos de la LAN pueden ver solamente
las direcciones IP internas, por lo tanto no pueden ver directamente un dispositivo fuera
de la red. Cuando un dispositivo de la red requiere enviar datos enviar datos a otro
fuera de la LAN, este envía los datos al Gateway, que transmite la información fuera de
la dirección IP externa hacia el internet. Un dispositivo fuera de la LAN no puede ver un
dispositivo dentro de ella, solo ve y envía datos a la dirección externa del router,
entonces este debe decidir qué hacer con estos datos (Ibídem).
92
Capitulo 2. Estado del Arte. 93
____________________________________________________________________________
Todo el trafico TCP y UDP en Internet usa puertos para identificar el protocolo que será
usado, por ejemplo el puerto 80 para HTTP (Web) y el 25 para SMTP (Email). Para
resolver el problema del firewall y permitir visitantes a la red, el usuario da instrucciones
al router que permita pasar el tráfico a través de un puerto dado. Esto es conocido
como “Direccionamiento de Puertos”, debido a que el router dirige las peticiones de
Internet a un puerto especifico para un dispositivo local. Las condiciones que se deben
de cumplir o características del direccionamiento son definidas como reglas de
direccionamiento. Para establecer las reglas de direccionamiento, el router toma datos
de la dirección IP externa y número de puerto (con un formato: xxx.xxx.xxx.xxx:#) y los
manda a una dirección IP interna a un número de puerto (xxx.xxx.xxx.xxx:#). Las reglas
de direccionamiento son creadas por puerto. Por ejemplo si se crea una regla para el
puerto 53, sólo funcionara para el puerto 53 (DynDNS, 2008).
93
Capitulo 2. Estado del Arte. 94
____________________________________________________________________________
94
Capitulo 3. Diseño 94
____________________________________________________________________________
3.1 INTRODUCCIÓN
El sistema está dividido en tres etapas: La etapa de Internet, que está integrada por un
modem que permite el enlace a la nube de internet proporcionando acceso desde
cualquier lugar donde haya una conexión a esta. La etapa de Ethernet permite realizar
la interfaz con la etapa de internet y la etapa de potencia, algunos sensores y a demás
de proporcionar una pequeña memoria EEPROM para guardar una página web muy
sencilla que servirá como medio de interacción con el usuario, mediante el uso de una
tarjeta de desarrollo. Por último la etapa de Potencia, la cual está formada por un
circuito electrónico que permite la manipulación de distintos actuadores.
Una vez acopladas estas etapas el usuario simplemente tendrá que ingresar a la página
web y de una manera muy sencilla podrá hacer uso del sistema para poder controlar o
adquirir datos de un determinado lugar, dando mayor confort, rendimiento y seguridad.
94
Capitulo 3. Diseño 95
____________________________________________________________________________
Este modelo de modem es uno de los más usados en el país, ya que es proporcionado
por la empresa líder en telecomunicaciones que brinda el servicio de internet, cabe
mencionar que no solamente se puede realizar con este dispositivo, puede usarse
cualquier otro realizando las configuraciones necesarias. A continuación se describirán
las características del modem 2Wire, su instalación y configuración para ser parte del
sistema de adquisición y transmisión de datos vía Ethernet.
3.2.1 CARACTERÍSTICAS
• Velocidad: 54 Mbps.
• Alcance: 120 m.
95
Capitulo 3. Diseño 96
____________________________________________________________________________
En la siguiente imagen (figura 3.2) se puede apreciar los puertos con los que cuenta el
modem (Telmex, 2007):
96
Capitulo 3. Diseño 97
____________________________________________________________________________
Funciones:
• Modem ADSL.
• Configurarlo como Router y tener una red en la cual se pueda compartir archivos
e impresoras con diferentes computadoras.
• Acceso Inalámbrico de un alcance de hasta 120 metros en campo abierto.
• Cuenta con FIREWALL para evitar intrusos que quieran acceder a la red sin una
contraseña.
• Compatible con cualquier dispositivo Wi-Fi (PSP, XBOX 360, PLAYSTATION 3,
IPHONE, IPOD TOUCH, ETC.).
• Adaptador de Corriente.
• Microfiltros.
• Cable Telefónico (gris).
• Cable Ethernet (amarillo).
• Cable USB (azul).
97
Capitulo 3. Diseño 98
____________________________________________________________________________
Lo primero por hacer es identificar los componentes y accesorios que se van a utilizar
para poner en funcionamiento el modem (Ver figura 3.4):
Para realizar el proceso de conexión se debe seguir los siguientes pasos, para tener un
buen funcionamiento del modem y el servicio de internet sea proporcionado.
98
Capitulo 3. Diseño 99
____________________________________________________________________________
Una vez que se hayan concluido estos pasos, al abrir el navegador por primera vez, se
desplegara el contrato de servicio de la compañía que provee el servicio de internet, dar
clic en aceptar y se tendrá acceso a la nube de internet. Una vez concluyendo la
instalación se procede a modificar los parámetros del modem.
99
Capitulo 3. Diseño 100
____________________________________________________________________________
100
Capitulo 3. Diseño 101
____________________________________________________________________________
Figura 3.7 Vínculos seleccionados con un círculo para ingresar a la configuración avanzada de
bloqueo de intrusos
• Activar la casilla NetBIOS y dar clic en guardar, como se muestra en la figura 3.8.
101
Capitulo 3. Diseño 102
____________________________________________________________________________
Una vez realizados estos pasos, se tendrá acceso a los dispositivos que se encuentran
dentro de la red local desde cualquier lugar con conexión a internet, permitiendo de
esta forma acceder a la tarjeta de desarrollo PICDEM.net.2.
102
Capitulo 3. Diseño 103
____________________________________________________________________________
3.3.1 CARACTERÍSTICAS
Esta tarjeta cuenta con diversas características que pueden ser útiles para realizar
diversas aplicaciones mediante el uso de un servidor, algunas de ellas son (Ibídem):
103
Capitulo 3. Diseño 104
____________________________________________________________________________
• Sensor de temperatura.
• Interfaz RS-232/RS-485.
104
Capitulo 3. Diseño 105
____________________________________________________________________________
105
Capitulo 3. Diseño 106
____________________________________________________________________________
106
Capitulo 3. Diseño 107
____________________________________________________________________________
15. ÁREA DE PROTOTIPOS: Una superficie de 9x20 con una red de agujeros para
que los usuarios puedan desarrollar circuitos adicionales. Tres pastillas SOT-23
y un SOIC-28 son también la huella de la superficie de montaje de componentes
comunes. Las conexiones provistas son +3.3 VDC, +5 VDC, +9 VDC y tierra.
16. ENTRADA DE ALIMENTACIÓN: Dos reguladores de la tarjeta proveen de 5
VDC, 3.3 CC a 500 mA de corriente común. J7 suministra 9 VDC.
17. LED DE ENCENDIDO: El LED (D9) muestra si la tarjeta está encendida.
18. ETIQUETAS DE ETHERNET ID: Los números en las dos etiquetas se utilizan
para formar una única Media Control Access (MAC) Adress usada para la
transmisión de Ethernet para la identificación y filtrado de paquetes. El número
es la base 10 versión de los últimos 6 dígitos hexadecimales de los 12 dígitos de
la dirección MAC. Por ejemplo, la etiqueta “12345”, la representación
hexadecimal 003039h de la dirección MAC. Uno de estos es asignado al
PIC18F97J60 y el otro a ENC28J60. Estas direcciones MAC pueden ser
cambiadas en el software.
Microchip ofrece asimismo una pila de software gratuita TCP/IP para reducir el tiempo
de desarrollo. Ethernet es la tecnología líder de red para redes locales (LAN), y se
puede utilizar para conectar dispositivos embebidos a través de una LAN a Internet. La
infraestructura, prestaciones, interoperabilidad, escalabilidad y sencillo desarrollo de
Ethernet la han convertido en la elección estándar para este tipo de comunicaciones
embebidas. Cualquier aplicación embebida que precise conectividad Ethernet puede
aprovechar la nueva familia de microcontroladores PIC18F97J60.
107
Capitulo 3. Diseño 108
____________________________________________________________________________
108
Capitulo 3. Diseño 109
____________________________________________________________________________
109
Capitulo 3. Diseño 110
____________________________________________________________________________
110
Capitulo 3. Diseño 111
____________________________________________________________________________
Para configurar la tarjeta mediante una conexión directa (ver figura 3.12):
• Coloque la tarjeta cerca del ordenador host sobre una superficie no conductora.
• Conecte el cable de Ethernet (cable cruzado) a la tarjeta al conector J1, después
a la red Ethernet. Esto puede ser en un puerto de red, o en un puerto disponible
en algún dispositivo de red (como un switch, hub, router o modem).
• Aplicar Voltaje a la tarjeta (9 VDC) en J7, mediante un convertidor de 2.5 mm de
centro positivo de 7 V a 12 V (preferentemente 9 V) con una capacidad de
corriente de 500 mA es suficiente.
Para confirmar que la tarjeta está operando, una vez que esté conectada y encendida
se deben de ver las siguientes características:
111
Capitulo 3. Diseño 112
____________________________________________________________________________
Por último para comprobar que la comunicación ha sido establecida, una vez que la
tarjeta de desarrollo PICDEM.net.2 este correctamente instalada, todo lo que sigue es
iniciar sesión. Para esto, puede hacerse de la misma manera en que se accede a
cualquier sitio web, en este caso se debe ingresar la dirección IP que se muestra en la
pantalla LCD en la barra de direcciones del navegador, y se mostrara un página web
como la de la figura 3.14. En la página web se puede observar tres botones y tres
indicadores de estatus, los botones marcados con la palabra LED1 y LED2, que sirven
para encender y apagar los LEDs de la tarjeta desarrollo D1 y D2, mostrando un cambio
en el indicador de estatus denominado LEDs con 1 indica encendido y un 0 indica
apagado; en el recuadro se puede escribir un mensaje que al dar clic en el botón Write
será mostrado en la LCD de la tarjeta de desarrollo. El indicador Pot, muestra las
variaciones que se realicen en el potenciómetro de la tarjeta y por último el indicador
Botones mostrara cambios si en la tarjeta es presionado alguno de los botones
indicando cuál de ellos fue el activado.
112
Capitulo 3. Diseño 113
____________________________________________________________________________
113
Capitulo 3. Diseño 114
____________________________________________________________________________
Para este circuito se usan fotorresistencias, ya que las salidas de datos de la tarjeta de
desarrollo PICDEM.net.2 son por medio del encendido o apagado LEDs, por lo tanto el
diseño del circuito se baso en transformar esas señales luminosas en pulsos que
activen y desactiven un actuador.
114
Capitulo 3. Diseño 115
____________________________________________________________________________
• 1 fotorresistencias.
• 1 resistencias de 100.
• 1 resistencias de 1 KΩ.
• 1 TIP 120.
• 1 Relevador (1 polo, 2 tiros).
• 1 Placa fenolica.
• Caimanes.
• 1 fuente de alimentación de 12 VDC.
• Cautín, soldadura, cinta de aislar, cable para ProtoBoard, pinzas de corte.
Una vez que se tiene todo el material, se procede al ensamble del circuito de acuerdo al
diagrama eléctrico, se colocan todos los componentes electrónicos sobre la placa
fenolica, para posteriormente ser soldados, en la figura 3.16 se muestra la interfaz de
potencia terminada, se puede observar dos circuitos idénticos, esto se debe a que es
necesario elaborar un circuito de potencia por cada actuador que se desee controlar, en
este caso se están utilizando dos circuitos, ya que únicamente se utilizan dos salidas
de datos de la tarjeta de desarrollo PICDEM.net.2. Si se desea conocer más detalles y
características técnicas de los componentes empleados puede verse los DataSheet de
estos elementos en las siguientes direcciones web:
115
Capitulo 3. Diseño 116
____________________________________________________________________________
Fotorresistencias: http://www.electan.com/catalog/datasheets/cebek/CE-C2795.pdf
Transistor: http://www.fairchildsemi.com/ds/TI/TIP120.pdf
Relevador: http://www.steren.com.mx/catalogo/interior3.asp?pdto=RAS-0610
• Voltaje: 120V@8A
• 2 entradas ópticas
• 2 Salidas a Relevador
Una vez que ya se conocen las especificaciones del circuito y ha sido ensamblado, se
procede a la conexión de este, las fotorresistencias deben ser colocadas sobre los
LEDs D1 y D2 de la tarjeta de desarrollo PICDEM.net.2, teniendo especial cuidado en
cubrir perfectamente las fotorresistencias para evitar que otra fuente luminosa pueda
causar interferencia en estas (ver figura 3.17)
116
Capitulo 3. Diseño 117
____________________________________________________________________________
117
Capitulo 3. Diseño 118
____________________________________________________________________________
Una vez concluida la instalación, conexión y acoplamiento de cada una de las etapas
(ver figura 3.19), se tiene el Sistema de Adquisición y Transmisión de Datos Vía
Ethernet.
118
Capitulo 4. Aplicación 119
____________________________________________________________________________
CAPITULO 4. APLICACIÓN
4.1 INTRODUCCIÓN
Después del diseño y creación del Sistema de Adquisición y Transmisión de Datos vía
Ethernet, es preciso hacer un análisis de sus posibilidades de expansión y mejora. De
igual manera es de suma importancia la tarea de realizar una aplicación que muestre
las capacidades y el potencial del sistema.
De igual manera una parte muy importante para las aplicaciones basadas en
tecnologías Ethernet, TCP/IP y Web es la presencia en Internet. Para poder tener
presencia en internet es necesario hacer uso de las herramientas y servicios de red, lo
cual asegura la conectividad a internet que permite el acceso remoto.
119
Capitulo 4. Aplicación 120
____________________________________________________________________________
La idea general para el diseño del sitio Web interno es hacer uso de componentes de
uso común, como lo son tablas, imágenes, hipervínculos y scripts de Java. Para ello se
utiliza la página principal “index.htm” que contiene las herramientas principales del
control remoto, además de páginas extra en las cuales se muestran distintos aspectos y
características de los componentes usados por el Sistema de Adquisición y Transmisión
de Datos vía Ethernet. Las paginas mostrarán las características, la arquitectura y el
footprint, con sus los archivos “Features.htm”, “Arch.htm” y “Footprnt.htm”
respectivamente. Se debe de hacer énfasis de que el tamaño total de los archivos
utilizados no exceda la capacidad de almacenamiento de la memoria EEPROM externa
de 32 Kbytes, que es la limitante de memoria que posee el sistema.
Para la creación de las páginas del sitio Web interno, se hace uso del programa
Dreamweaver CS4 de Adobe. Este programa es un editor de páginas Web de distintos
formatos, entre los cuales figuran PHP, HTML, DHTML, entre otros. Una de sus
principales ventajas es la posibilidad de observar y editar el código fuente y el diseño de
las páginas al mismo tiempo, además de contar con una vista y prueba en tiempo real
de los cambios realizados y de igual manera de una gran facilidad de sus herramientas
para la edición.
Para hacer uso de todo lo anterior es necesario hacer uso de las herramientas de
microchip: MPFS, servidor FTP y el servidor HTTP interno.
120
Capitulo 4. Aplicación 121
____________________________________________________________________________
Para la creación de las páginas CGI se abre un bloc de notas y dependiendo de los
datos o acciones que se necesiten del servidor, se debe escribir el código de la variable
o comando a utilizar, ya sea de la tabla 4.1 o de la tabla 4.2.
Variable Valor
LED0 0x00
LED1 0x01
LED2 0x10
LED3 0x11
LED4 0x12
LED5 0x13
LED6 0x14
LED7 0x15
ANAIN_AN0 0x02
ANAIN_AN1 0x03
DIGIN0 0x04 (Button0)
DIGIN1 0x0D
(Button1)
DIGIN2 0x0E (Button2)
DIGIN3 0x0F (Button3)
121
Capitulo 4. Aplicación 122
____________________________________________________________________________
STACK_VERSION 0x16
STACK_DATE 0x17
STROUT_LCD 0x05
MAC_ADDRESS 0x06
SERIAL_NUMBER 0x07
IP_ADDRESS 0x08
SUBNET_MASK 0x09
GATEWAY_ADDRESS 0x0A
DHCP 0x0B
DHCP_TRUE 0x0B
DHCP_FALSE 0x0C
Comando Valor
LED1 0x0
LED2 0x1
La página puede contener únicamente ese valor o igual puede contener fragmentos de
código HTML, una vez escrito el código fuente de la página se guarda el archivo con
extensión “.cgi” (Rajbharti, 2006).
122
Capitulo 4. Aplicación 123
____________________________________________________________________________
Button2 %0E
Button3 %0F
Index <html>
<body>
<b>Bienvenido</b><br>
Stack version: %16<br>
Build date: %17<br>
<br>
<form method="get" action="0">
<b>Acciones</b><br>
Alternar:<br>
<input type="submit" name="1"
value="LED2"></input>
<input type="submit" name="0"
value="LED1"></input>
</form>
<form method="get" action="1">
Escribir a LCD:
<input type="text" name="3" size="16"></input>
<input type="submit" value="Write"></input>
</form><br>
<b>Status</b><br>
Analogo: %02<br>
Digital: %0F %0E %0D %04<br>
LEDs: %15 %14 %13 %12 %11 %10 %01 %00<br>
</body>
</html>
LED0 %00
LED1 %01
Pot0 %02
Status <table cellpadding="3">
123
Capitulo 4. Aplicación 124
____________________________________________________________________________
<tr>
<td>Analogo:</td>
<td>%02</td>
</tr>
<tr>
<td>Digital:</td>
<td>%0F %0E %0D %04</td>
</tr>
<tr>
<td>LEDs:</td>
<td>%15 %14 %13 %12 %11 %10 %01 %00</td>
</tr>
</table>
Version %16
Las páginas Web que se cargarán en la memoria EEPROM, son diseñadas para
mostrar las características y posibilidades que tiene el Sistema de Adquisición y
Transmisión de Datos vía Ethernet.
124
Capitulo 4. Aplicación 125
____________________________________________________________________________
Index.htm
Features.htm
125
Capitulo 4. Aplicación 126
____________________________________________________________________________
Arch.htm
Footprnt.htm
126
Capitulo 4. Aplicación 127
____________________________________________________________________________
Una vez que tanto las páginas CGI y HTM sean creadas, se procede a colocarlas junto
con sus archivos correspondientes, en una carpeta que se creará con el nombre de
“WebPages” en la ruta “c:\”. Posteriormente se ejecuta el programa MPFS.exe y se
escribe el comando MPFS c:\WePages MPFSImg.bin, con lo cual se crea el archivo
MPFSImg.bin que es el sitio Web que se cargará a la EEPROM mediante el servidor
FTP. Es de suma importancia verificar que el archivo creado no exceda un tamaño de
32 Kbytes (Rajbharti, 2006). La creación y el tamaño total se muestran en la figura 4.5
127
Capitulo 4. Aplicación 128
____________________________________________________________________________
Figura 4.6 Uso del servidor FTP para carga del sitio Web a la EEPROM
128
Capitulo 4. Aplicación 129
____________________________________________________________________________
4.3.1 APPSERV
• Apache.
• PHP.
• MySQL.
• phpMyAdmin.
129
Capitulo 4. Aplicación 130
____________________________________________________________________________
• 2.5.x es una versión estable para todos los usuarios, esta versión usa PHP 5.x
debido a que trabaja bien con el antiguo código PHP.
• 2.6.x provee lo nuevo y experimental de Apache, PHP y MySQL.
130
Capitulo 4. Aplicación 131
____________________________________________________________________________
131
Capitulo 4. Aplicación 132
____________________________________________________________________________
nemesis_cidm@hotmail.com
• HTTP Port: Se especifica el puerto HTTP de escucha para el Servidor Web
Apache, en este caso por comodidad se usa el puerto 8088.
132
Capitulo 4. Aplicación 133
____________________________________________________________________________
De esta manera ya esta lista la configuración inicial del programa AppServ, solo resta
hacer clic en Install. Una vez finalizada la instalación se pide iniciar Apache y MySQL
para completar la configuración de AppServ, de esta manera ya estará trabajando el
Servidor Web en la computadora. Para ello se hace clic en el botón Finish como se
observa en la figura 4.11.
133
Capitulo 4. Aplicación 134
____________________________________________________________________________
De igual manera en la figura 4.12 se muestra la página “Index” del servidor con página
Web “index.php”, que da por defecto el programa al escribir la ruta anterior. Sin
embargo esta puede ser cambiada o modificada de acuerdo a distintas necesidades
(AppServNetwork, 2009).
134
Capitulo 4. Aplicación 135
____________________________________________________________________________
Por último solo queda afinar el servidor, para ello se abre el archivo “httpd.conf”. Se
buscan los módulos mostrados en la tabla x y establecen los valores correspondientes
(Castán, 2008).
Los valores son los recomendados para el uso de Apache en Windows por distintos
desarrolles y Web Masters (ibídem).
136
Capitulo 4. Aplicación 137
____________________________________________________________________________
Requerimientos de sistema.
137
Capitulo 4. Aplicación 138
____________________________________________________________________________
Figura 4.14 Pantalla de instalación y selección directorio destino del programa Active WebCam
El folder del programa contiene todos los archivos necesarios para usar Active
WebCam y los sub folders organizan los archivos de acuerdo a su uso (PY Software,
2008).
138
Capitulo 4. Aplicación 139
____________________________________________________________________________
• \Gallery: Contiene imágenes capturadas, las cuales son creadas con el comando
take a picture.
• \Help: Contiene los archivos de ayuda.
• \Images: Es usado en el método de publicación Web Cam HTTP server.
• \Logs: Contiene los archivos de registro.
• \NetCams Models: Contiene los archivos de configuración de varios tipos de
cámaras IP.
• \Page Templates: Contiene plantillas para Web Page Creation Wizard.
Los dispositivos primordiales son las cámaras USB debido a su bajo costo y
accesibilidad. Para conectar una o más cámaras USB en una computadora:
139
Capitulo 4. Aplicación 140
____________________________________________________________________________
Figura 4.15 Pantalla de bienvenida del programa con la opción de buscar cámaras seleccionada
Para otro tipo de dispositivos tales como cámaras IP, DVR’s, VCR’s o tarjetas de
adquisición consultar el manual de Active WebCam.
140
Capitulo 4. Aplicación 141
____________________________________________________________________________
El área de trabajo del programa contiene paneles que se pueden mostrar u ocultar, los
siguientes componentes son los más usados.
• La ventana de las cámaras es usada para control y vista previa de las cámaras.
• La vista previa de las cámaras es usada para seleccionar una cámara y
mostrarla u ocultarla.
• El panel de información muestra información útil acerca del estado de las
cámaras.
• El panel de registro muestra un historial de los eventos y errores, es de ayuda
para la resolución de problemas en un proceso de broadcast. Puede ser impreso
o guardado en un archivo.
• El panel de visitantes muestra un historial de las direcciones IP de los visitantes.
• El panel de la galería muestra pequeñas imágenes de archivos guardados y
capturas.
141
Capitulo 4. Aplicación 142
____________________________________________________________________________
142
Capitulo 4. Aplicación 143
____________________________________________________________________________
143
Capitulo 4. Aplicación 144
____________________________________________________________________________
144
Capitulo 4. Aplicación 145
____________________________________________________________________________
145
Capitulo 4. Aplicación 146
____________________________________________________________________________
146
Capitulo 4. Aplicación 147
____________________________________________________________________________
Una vez activado se selecciona Crear Página Web en el menú Herramientas, lo cual
dará como resultado la pantalla mostrada en la figura 4.26 en la cual se seleccionan las
cámaras que van a ser transmitidas vía Web.
Una vez realizada la selección se hace clic en siguiente, de esta manera se muestra la
pantalla de selección de Método de Emisión. Para poder usar el servidor instalado en la
computadora se selecciona la primera opción.
147
Capitulo 4. Aplicación 148
____________________________________________________________________________
148
Capitulo 4. Aplicación 149
____________________________________________________________________________
149
Capitulo 4. Aplicación 150
____________________________________________________________________________
150
Capitulo 4. Aplicación 151
____________________________________________________________________________
Ahora solo resta salvar la sesión, para ello se abre el menú Archivo, se selecciona
Salvar Sesión y se especifica la ruta y el nombre de la sesión.
151
Capitulo 4. Aplicación 152
____________________________________________________________________________
152
Capitulo 4. Aplicación 153
____________________________________________________________________________
El servicio que se utiliza es el de host dinámico, por lo tanto se selecciona Add Dynamic
DNS Host.
153
Capitulo 4. Aplicación 154
____________________________________________________________________________
Para finalizar se hace clic en el botón Add Host como se muestra en la figura 4.37.
Ahora se activa el dominio recién creado, lo cual asocia por el momento el nombre de
dominio a la dirección IP del router. Más sin embargo, debido a que los proveedores de
servicio de internet (ISP por sus siglas en ingles) asignan direcciones IP dinámicas a los
usuarios, es necesario establecer una forma de mantener constantemente actualizada
la asociación del nombre de dominio a la IP del router, cuando se realice el cambio de
IP. Un método es mediante hardware, en la cual un router con soporte para la función
de DDNS envía la dirección IP por sí mismo, actualizando la base de datos de DynDNS.
Así de esta manera, cualquiera que escriba la dirección del dominio creado
anteriormente será reenviado a la IP de la computadora. Más sin embargo no todos los
routers soportan esta función, así que por facilidad se selecciona otro método de
actualizar la IP. Este método es mediante un software, que es proporcionado por el
proveedor del servicio de DDNS y que realiza la misma función que la forma detallada
anteriormente. El programa es descargado e instalado en una computadora bajo el
mismo router al que se quiere que tenga presencia en internet, en este caso la
computadora que tiene instalado el servidor (DynDNS, 2009).
154
Capitulo 4. Aplicación 155
____________________________________________________________________________
155
Capitulo 4. Aplicación 156
____________________________________________________________________________
156
Capitulo 4. Aplicación 157
____________________________________________________________________________
157
Capitulo 4. Aplicación 158
____________________________________________________________________________
158
Capitulo 4. Aplicación 159
____________________________________________________________________________
Ahora se asignan las reglas de direccionamiento al dispositivo, para ello se hace clic en
el hipervínculo Agregar una nueva aplicación definida por el usuario.
159
Capitulo 4. Aplicación 160
____________________________________________________________________________
Por último se hace clic en el botón agregar definición, con lo cual queda establecida la
regla de direccionamiento para la aplicación del servidor.
160
Capitulo 4. Aplicación 161
____________________________________________________________________________
Ahora para la aplicación de vigilancia de Active WebCam, se repiten los mismos pasos,
pero ingresando los siguientes valores para dos aplicaciones:
A continuación se asigna otra aplicación la cual será usada por la aplicación del
Sistema de Adquisición y Transmisión de Datos vía Ethernet, los valores son los
siguientes:
161
Capitulo 4. Aplicación 162
____________________________________________________________________________
162
Capitulo 4. Aplicación 163
____________________________________________________________________________
Para asegurar que lo anterior se realizó con éxito, se hace clic en el hipervínculo
resumen, luego en la pantalla resultante se hace clic en el botón VER DETALLES
(Figura 4.50), lo que mostrará los detalles del bloqueo de intrusos. En esta pantalla
observa una tabla que muestra los dispositivos de la LAN que contienen reglas de
direccionamiento, las aplicaciones permitidas del dispositivo, el tipo de protocolo, el
número de puerto asignado a la aplicación y la dirección IP pública.
163
Capitulo 4. Aplicación 164
____________________________________________________________________________
El propósito de crear el sitio Web externo es hacer uso pleno del Servidor Web externo.
Esto es haciendo uso de la capacidad de almacenamiento del equipo de cómputo en
donde está alojado el servidor y de otros enlaces Web. De esta manera se pueden
mostrar las posibilidades de una mayor expansión del Sistema de Adquisición y
Transmisión de Datos vía Ethernet. El diseño del sitio Web externo se basa en su
correcto manejo, para unir streaming de video, el sitio Web interno y algunos extras que
se deseen agregar, todo en un solo entorno agradable y de fácil uso para el cliente.
Las páginas Web que integrarán el sitio utilizaran elementos comunes que se pueden
encontrar actualmente en muchos sitios Web, tal como: El uso de Scripts de Java, CSS,
Frames, Iframes, objetos Flash, Etc. De igual manera el sitio se diseña para una
resolución de pantalla estándar de 1024 x 768 pixeles y para una navegación con
Internet Explorer 7 o superior.
La página principal que es donde se comienza la navegación del sitio Web externo
debe contener el nombre “index.html”, que es el nombre por defecto recomendado para
que un servidor reconozca la página principal. La página “index.html” hará uso de
frames para la navegación del sitio Web entero, esto significa que se debe de crear un
encabezado y un pie de página con su respectiva página Web.
• Portada.
• El documento electrónico de la presente tesis.
• La aplicación del Sistema de Adquisición y Transmisión de Datos vía Ethernet.
• El streaming de video.
• Documentos anexos con vínculos de almacenamiento externo.
164
Capitulo 4. Aplicación 165
____________________________________________________________________________
Index.html
Contiene la interfaz de navegación del sitio Web y es la página principal usada por el
Servidor Web Externo. Es compuesta por los frames encabezado, pie y main.
Encabezado.html
Contiene la información que se desee mostrar, en este caso solo se muestra texto, más
sin embargo se puede usar otro tipo de contenido (Objetos de control, estadísticas,
vínculos, etc.).
165
Capitulo 4. Aplicación 166
____________________________________________________________________________
Portada.html
Es la presentación del sitio Web que se muestra al cliente, el resultado en pantalla del
código se muestra en la figura 4.53.
Tesis.html
166
Capitulo 4. Aplicación 167
____________________________________________________________________________
Aplicación.html
El iframe 1 muestra la navegación del sitio del servidor Web interno y los iframes 2 y 3
muestran a visualización de las cámaras #1 y #2 del streaming de video. La
visualización es controlada mediante el uso de contenido dinámico generado por css,
los comandos utilizados son “encender” y “apagar”. Para el comando “apagar” se hace
uso de una página auxiliar “nada.html”.
167
Capitulo 4. Aplicación 168
____________________________________________________________________________
Nada.html
Vigilancia.html
Documentos.html
168
Capitulo 4. Aplicación 169
____________________________________________________________________________
169
Capitulo 4. Aplicación 170
____________________________________________________________________________
170
Capitulo 4. Aplicación 171
____________________________________________________________________________
171
Capitulo 4. Aplicación 172
____________________________________________________________________________
172
Capitulo 4. Aplicación 173
____________________________________________________________________________
• Automatización Industrial
o Control industrial
o Monitoreo de suministro de energía
o Monitoreo del servidor de red
o Monitoreo y control ambiental
• Automatización en construcciones
o Seguridad y control de incendios
o Control de acceso
o Paneles de seguridad
o Control de iluminación
o Intercomunicación VoIP
• Control casero
o Seguridad
o Electrodomésticos de red
• Control comercial
o Aparatos de cocina
o Dispensadores de bebidas
o Minibares de hoteles
o Terminales de punto de venta.
173
Capitulo 4. Aplicación 174
____________________________________________________________________________
Figura 4.63 Relación con otras tecnologías y herramientas y posibles aplicaciones futuras
Así de esta manera se dejan abiertas las posibilidades de la aplicación futura del
presente trabajo.
174
Conclusiones 174
____________________________________________________________________________
CONCLUSIONES
Además se deja el sistema abierto para futuros trabajos que integren todas las
cualidades y beneficios del sistema para el hogar o la industria.
174
Glosario 175
____________________________________________________________________________
GLOSARIO
10Base2: Estándar de cableado para Ethernet que utiliza cable coaxial fino como
medio de transmisión. La longitud de cada segmento de la red no puede superar los
185 m. Los dispositivos se pueden conectar directamente en serie a la LAN.
10Base5: Estándar de cableado para Ethernet que utiliza cable coaxial grueso de doble
pantalla como medio de transmisión. La longitud de cada segmento de la red no puede
superar los 500 m. El cable va conectado a una unidad MAU (Medium Attachment Unit)
para que los dispositivos se puedan comunicar a través de un puerto AUI (Attachment
Unit Interface) situado en el dispositivo Ethernet.
10BaseFL: Estándar de cableado para Ethernet que utiliza cable de fibra óptica como
medio de transmisión. El cable 10BaseFL ofrece una velocidad de transmisión de 10
Mbits/s.
10BaseT: Estándar de cableado para Ethernet que utiliza dos pares trenzados de hilo
de cobre como medio de transmisión. La distancia máxima permitida entre los
dispositivos o a un hub o un switch de red es de 100 m. Los dispositivos Ethernet se
conectan con un conector de tipo RJ-45. El cable 10BaseT ofrece una velocidad de
transmisión de 10 Mbits/s, mientras que la del cable 100BaseT es de 100 Mbits/s.
175
Glosario 176
____________________________________________________________________________
APACHE: El servidor HTTP APACHE es un servidor web HTTP de código abierto para
plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa
el protocolo HTTP y la noción de sitio virtual.
176
Glosario 177
____________________________________________________________________________
servidores HTTP o Web. CGI es ejecutado en tiempo real, lo que brinda información
dinámica entre un explorador Web y un servidor.
Colisión: Se produce cuando dos o más dispositivos intentan transmitir datos al mismo
tiempo por la misma red. Los datos que colisionan se corrompen.
DNS: Domain Name System (Servicio de Nombres de Dominio). Este servicio traduce
los nombres de dominio a una dirección IP numérica asociada con equipo de red para
el propósito de localizar dispositivos o páginas Web en cualquier lugar del mundo
177
Glosario 178
____________________________________________________________________________
DOM: Document Object Model (Modelo de Objetos del Documento). El DOM es una
estructura de objetos que representa absolutamente todos los elementos que
componen una página Web, y mediante él se puede acceder a información de la página
Web, añadir nuevos elementos, modificarlos, etc.
Firewall: Es una parte de un sistema o una red que está diseñado para bloquear el
acceso no autorizado, permitiendo al mismo tiempo autorizado de comunicaciones. Se
178
Glosario 179
____________________________________________________________________________
Frames: Los frames (marcos o cuadros) permiten dividir la ventana en varias más
pequeñas, de modo que en cada una de ellas se cargua una página html distinta.
179
Glosario 180
____________________________________________________________________________
Hub: Dispositivo sencillo que permite conectar segmentos de red. Cuando se recibe un
paquete en un puerto, se envía a todos los puertos del hub.
180
Glosario 181
____________________________________________________________________________
iFrames: Es una etiqueta HTML que permite crear un frame interno dentro de un
documento HTML. El frame interno puede contener un documento HTML (página web)
y presenta un mayor control que los frames tradicionales.
IP: El Internet Protocol (protocolo de Internet) transporta los paquetes de un nodo a otro
sin tener en cuenta su contenido. IP envía cada paquete en función de una dirección de
destino de cuatro bytes (la dirección IP).
181
Glosario 182
____________________________________________________________________________
LAN: Una red de área local es un grupo de ordenadores o dispositivos Ethernet que
comparte una estructura de comunicaciones. El tamaño de las redes LAN oscila entre
un par de dispositivos y varios cientos.
Microfiltro Son pequeños dispositivos que reducen las interferencias entre la señal
ADSL y la señal telefónica. Estos aparatos le permitirán utilizar equipos telefónicos
(teléfonos, módems analógicos, fax, etc.) en la misma línea y simultáneamente al
servicio ADSL. Por ello debe instalar uno sobre cada equipo telefónico del que vaya a
hacer uso.
182
Glosario 183
____________________________________________________________________________
NIC: Chip de la tarjeta de red que se encarga de servir como interfaz de Ethernet entre
el medio físico (por ejemplo un cable coaxial) y el equipo (por ejemplo un ordenador
personal o una impresora). Es un chip usado en computadoras o periféricos tales como
las tarjetas de red, impresoras de red o sistemas embebidos para conectar dos o más
dispositivos entre sí a través de algún medio, ya sea conexión inalámbrica , cable UTP,
cable coaxial, fibra óptica, etcétera.
NTP: Network Time Protocol (protocolo de tiempo de red). Estándar de Internet que
garantiza la sincronización horaria de los relojes instalados en los dispositivos Ethernet
con una precisión del orden de un milisegundo. El protocolo se basa en TCP/IP.
183
Glosario 184
____________________________________________________________________________
OPC: Open Process Control (Control de procesos Abierto). Estándar abierto que
permite a los dispositivos comunicarse entre sí de forma totalmente abierta con
independencia de quién haya fabricado cada uno de ellos.
PPP: Point to Point Protocol (Protocolo Punto a Punto). Protocolo de comunicación que
permite al PC conectarse a cualquier dispositivo Ethernet adicional a través de un
enlace serie y comunicarse con él.
R
184
Glosario 185
____________________________________________________________________________
185
Glosario 186
____________________________________________________________________________
SSL: Secure Sockets Layer (Protocolo de Capa de Conexión Segura). Son protocolos
criptográficos que proporcionan comunicaciones seguras por una red, comúnmente
Internet.
Subred: Sección identificable de una red más grande. Por ejemplo, puede consistir en
todos los dispositivos de un edificio o una zona de procesamiento.
Switch: Dispositivo Ethernet que filtra y transmite paquetes entre segmentos de la LAN.
El switch opera en el nivel de enlace de datos (nivel 2) y ocasionalmente en el nivel de
red (nivel 3). Los paquetes que llegan a un puerto se analizan para determinar si tienen
errores y sólo se envían al puerto que tiene una conexión con el dispositivo de destino.
186
Glosario 187
____________________________________________________________________________
Trama: Una trama es un conjunto de datos que se transmite entre dos dispositivos
Ethernet como una unidad completa con información de direccionamiento y control de
protocolo. La información se transmite en serie, bit a bit.
187
Apéndice A. Código fuente .C 188
____________________________________________________________________________
APÉNDICE A
CÓDIGO FUENTE .C
A.1 MAIN.C
#define THIS_IS_STACK_APPLICATION
#define VERSION "v3.75" // Versión del Stack TCP/IP
#define BAUD_RATE (19200) // bps
#if defined(STACK_USE_HTTP_SERVER)
#include "..\Include\HTTP.h"
#endif
188
Apéndice A. Código fuente .C 189
____________________________________________________________________________
#include "..\Include\FTP.h"
#endif
#if defined(STACK_USE_ANNOUNCE)
#include "..\Include\Announce.h"
#endif
#if defined(MPFS_USE_EEPROM)
#include "..\Include\XEEPROM.h"
#endif
#if defined(STACK_USE_NBNS)
#include "..\Include\NBNS.h"
#endif
#if defined(STACK_USE_DNS)
#include "..\Include\DNS.h"
#endif
#if defined(STACK_USE_GENERIC_TCP_EXAMPLE)
#include "..\Include\GenericTCPClient.h"
#endif
#define USART_USE_BRGH_LOW
#if defined(USART_USE_BRGH_LOW)
#define SPBRG_VAL ( ((INSTR_FREQ/BAUD_RATE)/16) - 1)
#else
#define SPBRG_VAL ( ((INSTR_FREQ/BAUD_RATE)/4) - 1)
#endif
189
Apéndice A. Código fuente .C 190
____________________________________________________________________________
{MY_DEFAULT_GATE_BYTE1, MY_DEFAULT_GATE_BYTE2,
MY_DEFAULT_GATE_BYTE3, MY_DEFAULT_GATE_BYTE4},
{MY_DEFAULT_DNS_BYTE1, MY_DEFAULT_DNS_BYTE2,
MY_DEFAULT_DNS_BYTE3, MY_DEFAULT_DNS_BYTE4},
{0b00000001}, // Banderas, activan el DHCP
};
BYTE myDHCPBindCount = 0;
#if defined(STACK_USE_DHCP)
extern BYTE DHCPBindCount;
#else
#define DHCPBindCount (0xFF)
#endif
190
Apéndice A. Código fuente .C 191
____________________________________________________________________________
191
Apéndice A. Código fuente .C 192
____________________________________________________________________________
#endif
#if defined(STACK_USE_SLIP)
MACISR();
#endif
}
#if defined(__18CXX) && !defined(HI_TECH_C)
#pragma code highVector=0x08
void HighVector (void)
{
_asm goto HighISR _endasm
}
#pragma code // Regresa a la sección de código establecida.
#endif
ROM char NewIP[] = "New IP Address: ";
ROM char CRLF[] = "\r\n";
// Aplicación principal entrada de puntos.
#ifdef __C30__
int main(void)
#else
void main(void)
#endif
{
static TICK t = 0;
#ifdef USE_LCD
// Inicializa y muestra la versión de stack en la LCD
LCDInit();
DelayMs(100);
strcpypgm2ram(LCDText, "TCPStack " VERSION " "
" ");
LCDUpdate();
#endif
192
Apéndice A. Código fuente .C 193
____________________________________________________________________________
memcpypgm2ram(AppConfig.NetBIOSName, (ROM
void*)MY_DEFAULT_HOST_NAME, 16);
FormatNetBIOSName(AppConfig.NetBIOSName);
193
Apéndice A. Código fuente .C 194
____________________________________________________________________________
LED0_IO ^= 1;
}
}
}
static void DisplayIPValue(IP_ADDR *IPVal)
{
194
Apéndice A. Código fuente .C 195
____________________________________________________________________________
itoa(IPVal->v[1], IPDigit);
putsUART(IPDigit);
#ifdef USE_LCD
for(i=0; i < strlen(IPDigit); i++)
{
LCDText[LCDPos++] = IPDigit[i];
}
LCDText[LCDPos++] = '.';
#endif
while(BusyUART());
WriteUART('.');
itoa(IPVal->v[2], IPDigit);
putsUART(IPDigit);
#ifdef USE_LCD
for(i=0; i < strlen(IPDigit); i++)
{
LCDText[LCDPos++] = IPDigit[i];
}
LCDText[LCDPos++] = '.';
#endif
while(BusyUART());
WriteUART('.');
itoa(IPVal->v[3], IPDigit);
putsUART(IPDigit);
#ifdef USE_LCD
for(i=0; i < strlen(IPDigit); i++)
195
Apéndice A. Código fuente .C 196
____________________________________________________________________________
{
LCDText[LCDPos++] = IPDigit[i];
}
196
Apéndice A. Código fuente .C 197
____________________________________________________________________________
197
Apéndice A. Código fuente .C 198
____________________________________________________________________________
switch(command)
{
case CGI_CMD_DIGOUT:
var = argv[1][0] - '0';
switch(var)
{
case CMD_LED1:
LED1_IO ^= 1;
break;
case CMD_LED2:
LED2_IO ^= 1;
break;
}
memcpypgm2ram((void*)argv[0], (ROM
void*)COMMANDS_OK_PAGE, COMMANDS_OK_PAGE_LEN);
break;
#if defined(USE_LCD)
case CGI_CMD_LCDOUT:
if(argc > 2)
{
if(strlen(argv[2]) < 32)
{
memset(LCDText, ' ', 32);
strcpy(LCDText, argv[2]);
}
else
{
memcpy(LCDText, (void*)argv[2], 32);
}
LCDUpdate();
}
else
{
198
Apéndice A. Código fuente .C 199
____________________________________________________________________________
LCDErase();
}
memcpypgm2ram((void*)argv[0], (ROM
void*)COMMANDS_OK_PAGE, COMMANDS_OK_PAGE_LEN);
break;
#endif
#if ENABLE_REMOTE_CONFIG
// HTTP
case CGI_CMD_RECONFIG:
CurrentArg = 1;
while(argc > CurrentArg)
{
TmpWord.byte.MSB = argv[CurrentArg][0];
TmpWord.byte.LSB = argv[CurrentArg++][1];
var = hexatob(TmpWord);
switch(var)
{
case VAR_SERIAL_NUMBER:
AppConfig.SerialNumber.Val =
atoi(argv[CurrentArg]);
AppConfig.MyMACAddr.v[4] =
AppConfig.SerialNumber.byte.MSB;
AppConfig.MyMACAddr.v[5] =
AppConfig.SerialNumber.byte.LSB;
break;
case VAR_IP_ADDRESS:
case VAR_SUBNET_MASK:
case VAR_GATEWAY_ADDRESS:
{
DWORD TmpAddr;
if(!StringToIPAddress(argv[CurrentArg],
(IP_ADDR*)&TmpAddr))
break;
if(var == VAR_IP_ADDRESS)
{
if(TmpAddr !=
*(DWORD*)&AppConfig.MyIPAddr)
DHCPBindCount++;
memcpy((void*)&AppConfig.MyIPAddr,
(void*)&TmpAddr, sizeof(AppConfig.MyIPAddr));
}
else if(var == VAR_SUBNET_MASK)
199
Apéndice A. Código fuente .C 200
____________________________________________________________________________
memcpy((void*)&AppConfig.MyMask,
(void*)&TmpAddr, sizeof(AppConfig.MyMask));
else if(var == VAR_SUBNET_MASK)
memcpy((void*)&AppConfig.MyGateway,
(void*)&TmpAddr, sizeof(AppConfig.MyGateway));
}
break;
case VAR_DHCP:
if(AppConfig.Flags.bIsDHCPEnabled)
{
if(!(argv[CurrentArg][0]-'0'))
{
AppConfig.Flags.bIsDHCPEnabled = FALSE;
}
}
else
{
if(argv[CurrentArg][0]-'0')
{
AppConfig.MyIPAddr.Val = 0x00000000ul;
AppConfig.Flags.bIsDHCPEnabled = TRUE;
AppConfig.Flags.bInConfigMode = TRUE;
DHCPReset();
}
}
break;
}
CurrentArg++;
}
SaveAppConfig();
memcpypgm2ram((void*)argv[0],
(ROM void*)CONFIG_UPDATE_PAGE,
CONFIG_UPDATE_PAGE_LEN);
break;
#endif
default:
memcpypgm2ram((void*)argv[0], (ROM
void*)COMMANDS_OK_PAGE, COMMANDS_OK_PAGE_LEN);
break;
}
}
#endif
#if defined(STACK_USE_HTTP_SERVER)
WORD HTTPGetVar(BYTE var, WORD ref, BYTE* val)
{
200
Apéndice A. Código fuente .C 201
____________________________________________________________________________
case VAR_DIGIN0:
*val = BUTTON0_IO ? '1':'0';
break;
case VAR_DIGIN1:
*val = BUTTON1_IO ? '1':'0';
break;
201
Apéndice A. Código fuente .C 202
____________________________________________________________________________
case VAR_DIGIN2:
*val = BUTTON2_IO ? '1':'0';
break;
case VAR_DIGIN3:
*val = BUTTON3_IO ? '1':'0';
break;
case VAR_STACK_VERSION:
if(ref == HTTP_START_OF_VAR)
{
strcpypgm2ram(VarString, VERSION);
}
*val = VarString[(BYTE)ref];
if(VarString[(BYTE)ref] == '\0')
return HTTP_END_OF_VAR;
else if(VarString[(BYTE)++ref] == '\0' )
return HTTP_END_OF_VAR;
return ref;
case VAR_STACK_DATE:
if(ref == HTTP_START_OF_VAR)
{
strcpypgm2ram(VarString, __DATE__ " " __TIME__);
}
*val = VarString[(BYTE)ref];
if(VarString[(BYTE)ref] == '\0')
return HTTP_END_OF_VAR;
else if(VarString[(BYTE)++ref] == '\0' )
return HTTP_END_OF_VAR;
return ref;
#if ENABLE_REMOTE_CONFIG
case VAR_MAC_ADDRESS:
if ( ref == HTTP_START_OF_VAR )
{
VarStringLen = 2*6+5;
i = 0;
VarStringPtr = VarString;
while(1)
{
*VarStringPtr++ =
btohexa_high(AppConfig.MyMACAddr.v[i]);
*VarStringPtr++ =
btohexa_low(AppConfig.MyMACAddr.v[i]);
if(++i == 6)
break;
*VarStringPtr++ = '-';
}
}
202
Apéndice A. Código fuente .C 203
____________________________________________________________________________
*val = VarString[(BYTE)ref];
if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;
case VAR_SERIAL_NUMBER:
if ( ref == HTTP_START_OF_VAR )
{
itoa(AppConfig.SerialNumber.Val, VarString);
VarStringLen = strlen(VarString);
}
*val = VarString[(BYTE)ref];
if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;
case VAR_IP_ADDRESS:
case VAR_SUBNET_MASK:
case VAR_GATEWAY_ADDRESS:
if ( ref == HTTP_START_OF_VAR )
{
if(var == VAR_IP_ADDRESS)
DataSource = (BYTE*)&AppConfig.MyIPAddr;
else if(var == VAR_SUBNET_MASK)
DataSource = (BYTE*)&AppConfig.MyMask;
else if(var == VAR_GATEWAY_ADDRESS)
DataSource = (BYTE*)&AppConfig.MyGateway;
VarStringPtr = VarString;
i = 0;
while(1)
{
itoa((WORD)*DataSource++, VarStringPtr);
VarStringPtr += strlen(VarStringPtr);
if(++i == 4)
break;
*VarStringPtr++ = '.';
}
VarStringLen = strlen(VarString);
}
*val = VarString[(BYTE)ref];
if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;
203
Apéndice A. Código fuente .C 204
____________________________________________________________________________
case VAR_DHCP_TRUE:
case VAR_DHCP_FALSE:
if ( ref == HTTP_START_OF_VAR )
{
if((var == VAR_DHCP_TRUE) ^
AppConfig.Flags.bIsDHCPEnabled)
return HTTP_END_OF_VAR;
VarStringLen = 7;
memcpypgm2ram(VarString, (rom void *)"checked";
}
*val = VarString[(BYTE)ref];
if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;
#endif
}
return HTTP_END_OF_VAR;
}
#endif
#if defined(STACK_USE_FTP_SERVER) && defined(MPFS_USE_EEPROM)
ROM char FTP_USER_NAME[] = "ftp";
ROM char FTP_USER_PASS[] = "microchip";
#undef FTP_USER_NAME_LEN
#define FTP_USER_NAME_LEN (sizeof(FTP_USER_NAME)-1)
#define FTP_USER_PASS_LEN (sizeof(FTP_USER_PASS)-1)
BOOL FTPVerify(char *login, char *password)
{
if ( !memcmppgm2ram(login, (ROM void*)FTP_USER_NAME,
FTP_USER_NAME_LEN) )
{
if ( !memcmppgm2ram(password, (ROM void*)FTP_USER_PASS,
FTP_USER_PASS_LEN) )
return TRUE;
}
return FALSE;
}
#endif
static void InitializeBoard(void)
{
LED0_TRIS = 0;
LED1_TRIS = 0;
LED2_TRIS = 0;
LED3_TRIS = 0;
LED4_TRIS = 0;
LED5_TRIS = 0;
LED6_TRIS = 0;
#if !defined(EXPLORER_16)
204
Apéndice A. Código fuente .C 205
____________________________________________________________________________
LED7_TRIS = 0;
#endif
LED0_IO = 0;
LED1_IO = 0;
LED2_IO = 0;
LED3_IO = 0;
LED4_IO = 0;
LED5_IO = 0;
LED6_IO = 0;
LED7_IO = 0;
#ifdef __C30__
#if defined(__dsPIC33F__) || defined(__PIC24H__)
PLLFBD = 39; CLKDIV = 0x0000;
205
Apéndice A. Código fuente .C 206
____________________________________________________________________________
INTCON2bits.RBPU = 0;
TXSTA = 0b00100000;
RCSTA = 0b10010000;
SPBRG = SPBRG_VAL;
T0CON = 0;
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;
#if defined(__18F87J10) || defined(__18F86J15) ||
defined(__18F86J10) || defined(__18F85J15) || defined(__18F85J10)
|| defined(__18F67J10) || defined(__18F66J15) ||
defined(__18F66J10) || defined(__18F65J15) || defined(__18F65J10)
|| defined(__18F97J60) || defined(__18F96J65) ||
defined(__18F96J60) || defined(__18F87J60) || defined(__18F86J65)
|| defined(__18F86J60) || defined(__18F67J60) ||
defined(__18F66J65) || defined(__18F66J60)
ADCON0bits.ADCAL = 1;
ADCON0bits.GO = 1;
while(ADCON0bits.GO);
ADCON0bits.ADCAL = 0;
#endif
#endif
#if defined(DSPICDEM11)
LCDCTRL_CS_TRIS = 0;
LCDCTRL_CS_IO = 1;
CODEC_RST_TRIS = 0;
CODEC_RST_IO = 0;
#endif
}
static void InitAppConfig(void)
{
#if defined(MPFS_USE_EEPROM)
BYTE c;
BYTE *p;
#endif
#if defined(MPFS_USE_EEPROM)
p = (BYTE*)&AppConfig;
XEEBeginRead(EEPROM_CONTROL, 0x00);
c = XEERead();
206
Apéndice A. Código fuente .C 207
____________________________________________________________________________
XEEEndRead();
if(c == 0x55)
{
XEEBeginRead(EEPROM_CONTROL, 0x01);
for ( c = 0; c < sizeof(AppConfig); c++ )
*p++ = XEERead();
XEEEndRead();
}
else
SaveAppConfig();
#endif
}
#if defined(MPFS_USE_EEPROM)
static void SaveAppConfig(void)
{
BYTE c;
BYTE *p;
p = (BYTE*)&AppConfig;
XEEBeginWrite(EEPROM_CONTROL, 0x00);
XEEWrite(0x55);
for ( c = 0; c < sizeof(AppConfig); c++ )
{
XEEWrite(*p++);
}
XEEEndWrite();
}
#endif
ROM char menu[] =
"\r\n\r\n\rMicrochip TCP/IP Config Application ("VERSION", "
__DATE__ ")\r\n\r\n"
"\t1: Change Board serial number.\r\n"
"\t2: Change Board Host Name.\r\n"
"\t3: Change default IP address.\r\n"
"\t4: Change default gateway address.\r\n"
"\t5: Change default subnet mask.\r\n"
"\t6: Change default DNS server address.\r\n"
"\t7: Enable DHCP & IP Gleaning.\r\n"
"\t8: Disable DHCP & IP Gleaning.\r\n"
"\t9: Download MPFS image.\r\n"
"\t0: Save & Quit.\r\n"
"\r\n"
"Enter a menu choice (1-0): ";
typedef enum _MENU_CMD
{
MENU_CMD_SERIAL_NUMBER = '1',
MENU_CMD_HOST_NAME,
MENU_CMD_IP_ADDRESS,
207
Apéndice A. Código fuente .C 208
____________________________________________________________________________
MENU_CMD_GATEWAY_ADDRESS,
MENU_CMD_SUBNET_MASK,
MENU_CMD_DNS_ADDRESS,
MENU_CMD_ENABLE_AUTO_CONFIG,
MENU_CMD_DISABLE_AUTO_CONFIG,
MENU_CMD_DOWNLOAD_MPFS,
MENU_CMD_QUIT = '0',
MENU_CMD_INVALID = MENU_CMD_DOWNLOAD_MPFS
+ 1
} MENU_CMD;
temp = str;
byteIndex = 0;
while( v = *str )
{
if ( v == '.' )
{
*str++ = '\0';
buffer->v[byteIndex++] = atoi(temp);
temp = str;
}
else if ( v < '0' || v > '9' )
return FALSE;
208
Apéndice A. Código fuente .C 209
____________________________________________________________________________
str++;
}
buffer->v[byteIndex] = atoi(temp);
while(BUTTON0_IO == 0)
{
if(TickGet() - StartTime > 4*TICK_SECOND)
{
XEEBeginWrite(EEPROM_CONTROL, 0x00);
XEEWrite(0x00);
XEEEndWrite();
putrsUART("\r\n\r\nBUTTON0 held for more
than 4 seconds. EEPROM contents erased.\r\n\r\n");
break;
}
}
}
#endif
}
c = ReadUART();
if ( c >= '0' && c < MENU_CMD_INVALID )
return c;
else
return MENU_CMD_INVALID;
}
#define MAX_USER_RESPONSE_LEN (20)
void ExecuteMenuChoice(MENU_CMD choice)
{
char response[MAX_USER_RESPONSE_LEN];
IP_ADDR tempIPValue;
IP_ADDR *destIPValue;
putrsUART(CRLF);
putrsUART(menuCommandPrompt[choice-'0']);
209
Apéndice A. Código fuente .C 210
____________________________________________________________________________
switch(choice)
{
case MENU_CMD_SERIAL_NUMBER:
itoa(AppConfig.SerialNumber.Val, response);
putsUART(response);
putrsUART("): ");
if(ReadStringUART(response, sizeof(response)))
{
AppConfig.SerialNumber.Val = atoi(response);
AppConfig.MyMACAddr.v[4] =
AppConfig.SerialNumber.v[1];
AppConfig.MyMACAddr.v[5] = AppConfig.SerialNumber.v[0];
}
break;
case MENU_CMD_HOST_NAME:
putsUART(AppConfig.NetBIOSName);
putrsUART("): ");
ReadStringUART(response, sizeof(response) >
sizeof(AppConfig.NetBIOSName) ? sizeof(AppConfig.NetBIOSName) :
sizeof(response));
if(response[0] != '\0')
{
memcpy(AppConfig.NetBIOSName, (void*)response,
sizeof(AppConfig.NetBIOSName));
FormatNetBIOSName(AppConfig.NetBIOSName);
}
break;
case MENU_CMD_IP_ADDRESS:
destIPValue = &AppConfig.MyIPAddr;
goto ReadIPConfig;
case MENU_CMD_GATEWAY_ADDRESS:
destIPValue = &AppConfig.MyGateway;
goto ReadIPConfig;
case MENU_CMD_SUBNET_MASK:
destIPValue = &AppConfig.MyMask;
goto ReadIPConfig;
case MENU_CMD_DNS_ADDRESS:
destIPValue = &AppConfig.PrimaryDNSServer;
ReadIPConfig:
DisplayIPValue(destIPValue);
putrsUART("): ");
ReadStringUART(response, sizeof(response));
if ( !StringToIPAddress(response, &tempIPValue) )
{
putrsUART(InvalidInputMsg);
while(!DataRdyUART());
ReadUART();
210
Apéndice A. Código fuente .C 211
____________________________________________________________________________
}
else
{
destIPValue->Val = tempIPValue.Val;
}
break;
case MENU_CMD_ENABLE_AUTO_CONFIG:
AppConfig.Flags.bIsDHCPEnabled = TRUE;
break;
case MENU_CMD_DISABLE_AUTO_CONFIG:
AppConfig.Flags.bIsDHCPEnabled = FALSE;
break;
case MENU_CMD_DOWNLOAD_MPFS:
#if defined(MPFS_USE_EEPROM)
DownloadMPFS();
#endif
break;
case MENU_CMD_QUIT:
#if defined(MPFS_USE_EEPROM)
SaveAppConfig();
#endif
break;
}
}
static void SetConfig(void)
{
MENU_CMD choice;
do
{
putrsUART(menu);
choice = GetMenuChoice();
if ( choice != MENU_CMD_INVALID )
ExecuteMenuChoice(choice);
} while(choice != MENU_CMD_QUIT);
}
#if defined(MPFS_USE_EEPROM)
#define XMODEM_SOH 0x01
#define XMODEM_EOT 0x04
#define XMODEM_ACK 0x06
#define XMODEM_NAK 0x15
#define XMODEM_CAN 0x18
#define XMODEM_BLOCK_LEN 128
static BOOL DownloadMPFS(void)
{
enum SM_MPFS
211
Apéndice A. Código fuente .C 212
____________________________________________________________________________
{
SM_MPFS_SOH,
SM_MPFS_BLOCK,
SM_MPFS_BLOCK_CMP,
SM_MPFS_DATA,
} state;
BYTE c;
MPFS handle;
BOOL lbDone;
BYTE blockLen;
BYTE lResult;
BYTE tempData[XMODEM_BLOCK_LEN];
TICK lastTick;
TICK currentTick;
state = SM_MPFS_SOH;
lbDone = FALSE;
handle = MPFSFormat();
lastTick = TickGet();
do
{
currentTick = TickGet();
if ( TickGetDiff(currentTick, lastTick) >=
(TICK_SECOND/2) )
{
lastTick = TickGet();
while(BusyUART());
WriteUART(XMODEM_NAK);
LED6_IO ^= 1;
}
} while(!DataRdyUART());
while(!lbDone)
{
if(DataRdyUART())
{
LED6_IO ^= 1;
c = ReadUART();
}
else
{
continue;
}
switch(state)
{
default:
if ( c == XMODEM_SOH )
212
Apéndice A. Código fuente .C 213
____________________________________________________________________________
{
state = SM_MPFS_BLOCK;
}
else if ( c == XMODEM_EOT )
{
LED6_IO = 1;
MPFSClose();
while(BusyUART());
WriteUART(XMODEM_ACK);
lbDone = TRUE;
}
else
{
while(BusyUART());
WriteUART(XMODEM_NAK);
}
break;
case SM_MPFS_BLOCK:
lResult = XMODEM_ACK;
blockLen = 0;
state = SM_MPFS_BLOCK_CMP;
break;
case SM_MPFS_BLOCK_CMP:
state = SM_MPFS_DATA;
break;
case SM_MPFS_DATA:
tempData[blockLen++] = c;
if ( blockLen > XMODEM_BLOCK_LEN )
{
MPFSPutBegin(handle);
lResult = XMODEM_ACK;
for ( c = 0; c < XMODEM_BLOCK_LEN; c++ )
MPFSPut(tempData[c]);
handle = MPFSPutEnd();
while(BusyUART());
WriteUART(lResult);
state = SM_MPFS_SOH;
}
break;
}
}
#if defined(STACK_USE_SLIP)
{
BYTE i = 255;
while(i--);
213
Apéndice A. Código fuente .C 214
____________________________________________________________________________
}
#endif
return TRUE;
}
#endif
static void FormatNetBIOSName(BYTE Name[16])
{
BYTE i;
Name[15] = '\0';
strupr(Name);
i = 0;
while(i < 15)
{
if(Name[i] == '\0')
{
while(i < 15)
{
Name[i++] = ' ';
}
break;
}
i++;
}
}
214
Apéndice B. Código fuente HTML 215
____________________________________________________________________________
APÉNDICE B
En este apéndice se muestra el código fuente HTML utilizado para la aplicación del
Sistema de Adquisición y Transmisión de Datos por PIC vía Ethernet.
B.1 INDEX.HTM
<html>
<head>
<title>Microchip TCP/IP Stack</title>
<script language="JavaScript">
var xmlHttp;
var ObjArray = new Array; //array de ayuda
function GetXmlHttpObject(handler)
{
var objXmlHttp = null;
if(navigator.userAgent.indexOf("MSIE")>=0)
{
var ClassName = "Msxml2.XMLHTTP";
if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
ClassName = "Microsoft.XMLHTTP";
}
try
{
objXmlHttp = new ActiveXObject(ClassName);
objXmlHttp.onreadystatechange = handler;
return objXmlHttp;
}
catch(e)
215
Apéndice B. Código fuente HTML 216
____________________________________________________________________________
{
alert("Error: ActiveX scripting may be disabled.");
return;
}
}
else
{
try
{
objXmlHttp = new XMLHttpRequest();
objXmlHttp.onload = handler;
objXmlHttp.onerror = handler;
return objXmlHttp;
}
catch(e)
{
alert("Error: Browser may not be supported or browser
security
restrictions are too high. XMLHttpRequest() support is
required.");
}
}
}
function StateChanged()
{
if(xmlHttp.readyState == 4 || xmlHttp.readyState ==
"complete")
{
document.getElementById("txtAutoUpdateStatus").innerHTML
=xmlHttp.responseText;
xmlHttp = null;
UpdateStatus();
216
Apéndice B. Código fuente HTML 217
____________________________________________________________________________
}
}
function UpdateStatus()
{
xmlHttp = GetXmlHttpObject(StateChanged);
xmlHttp.open("GET", "Status.cgi" , true);
xmlHttp.send(null);
}
function GetServerFile(FileName, AssignTo)
{
var NiftyObj = new Object();
NiftyObj.XMLDevice = new GetXmlHttpObject(StateChanged2);
NiftyObj.XMLDevice.open("GET", FileName, true);
NiftyObj.XMLDevice.send(null);
NiftyObj.Text = AssignTo;
ObjArray.push(NiftyObj);
}
function StateChanged2()
{
for(i in ObjArray)
{
if(ObjArray[i].XMLDevice.readyState == 4 ||
ObjArray[i].XMLDevice.readyState == "complete")
{
if(ObjArray[i].Text != "")
{
document.getElementById(ObjArray[i].Text).innerHTML=
ObjArray[i].XMLDevice.responseText;
}
if(ObjArray[i].Text == "txtAutoUpdateStatus")
{
GetServerFile("Status.cgi", "txtAutoUpdateStatus");
217
Apéndice B. Código fuente HTML 218
____________________________________________________________________________
}
delete ObjArray[i].XMLDevice;
delete ObjArray[i];
}
}
}
</script>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="white" onLoad="UpdateStatus();
GetServerFile('Version.cgi','txtStackVersion');
GetServerFile('BuildDate.cgi','txtBuildDate');">
<table border="0" cellpadding="0" cellspacing="0"
width="100%" fgcolor="white">
<tr bgcolor="#FF0000" fgcolor="white">
<td width="25%">
<font color="#FFFFFF">
<b>Index</b>
</font>
</td>
<td width="25%">
<a href="Features.htm">
<font color="#FFFFFF">
<b>Caracteristicas</b>
</font>
</a>
</td>
<td width="25%">
<a href="Arch.htm">
<font color="#FFFFFF">
<b>Arquitectura</b>
</font>
218
Apéndice B. Código fuente HTML 219
____________________________________________________________________________
</a>
</td>
<td width="25%">
<a href="Footprnt.htm">
<font color="#FFFFFF">
<b>Stack Footprint</b>
</font>
</a>
</td>
</tr>
</table>
<br>
<b>¡Bienvenido!</b>
<br>
Stack version: <span id="txtStackVersion">Unknown</span>
Build date: <span id="txtBuildDate">Unknown</span><br>
<p>
En este sito se muestra la capacidad de un servidor web
embebido,
el cual es potenciado por un Microcontrolador PIC que
ejecuta un
Stack TCP/IP de Microchip. Todo lo que se puede apreciar es
manejado a traves de un controlador de Ethernet ENC28J60
10Base-T
y del modulo PIC18F97J60 de la familia de Ethernet de
Microchip.
<br><br>
La siguiente seccion de la pagina muestra el control de la
aplicación en tiempo real:
La seccion "Acciones" contiene comandos para
realizar
219
Apéndice B. Código fuente HTML 220
____________________________________________________________________________
distintas funciones.
La seccion "Status" es actualizada con
informacion del
"Sistema de Adquisición y Transmisión de Datos por PIC
vía
Ethernet" periodicamente usando JavaScript.
</p>
<table cellpadding="1">
<form>
<tr>
<td width="101">
<b>Acciones</b>
</td>
</tr> <tr>
<td>Alternar:</td>
<td width="100">
<input type="button" value="LED2" onClick=
"GetServerFile('0?1=LED2','')"></input>
</td>
<td width="90">
<input type="button" value="LED1" onClick=
"GetServerFile('0?0=LED1','')"></input>
</td>
</tr>
<tr>
<td>Mensaje a LCD:</td>
<td>
<input type="text" name="3" id="LCDText"
size="16"></input>
</td>
<td>
<input type="button" value="Write" onClick=
220
Apéndice B. Código fuente HTML 221
____________________________________________________________________________
"GetServerFile('1?3='+document.getElementById
('LCDText').value,'')"></input>
</td>
</tr>
</form>
<tr>
<td>
<b>Status</b>
</td> <td></td><td></td>
<td width="28">
</td>
<td align="justify" width="487">
Si el navegador no soporta AJAX, puede ir a <a
href="Index.cgi">
esta pagina</a> para una instantánea estatica
actualizable
del estado de la aplicacion con opciones de control.
</td>
</tr>
</table>
<span id="txtAutoUpdateStatus">Loading...</span>
</body>
</html>
B.2 FEATURES.HTM
<html>
<head>
<title>Microchip TCP/IP Stack Features</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="#FFFFFF">
221
Apéndice B. Código fuente HTML 222
____________________________________________________________________________
222
Apéndice B. Código fuente HTML 223
____________________________________________________________________________
223
Apéndice B. Código fuente HTML 224
____________________________________________________________________________
</body>
</html>
B.3 ARCH.HTM
<html>
<head>
<title>Microchip TCP/IP Stack Architecture</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="#FFFFFF">
<table border="0" cellpadding="0" cellspacing="0" width="100%"
fgcolor="white">
<tr bgcolor="#FF0000" fgcolor="white">
<td width="25%">
<a href="Index.htm"> <font color="#FFFFFF"> <b>Index</b>
</font> </a> </td>
<td width="25%">
<font color="#FFFFFF"> <b>Caracteristicas</b> </font> </td>
<td width="25%">
<a href="Arch.htm"> <font color="#FFFFFF">
<b>Arquitectura</b>
</font> </a> </td>
<td width="25%">
<a href="Footprnt.htm"> <font color="#FFFFFF">
<b>Stack Footprint</b> </font> </a> </td>
</tr>
</table> <br>
<p>El controlador Ethernet de Microchip incorpora eficazmente
todo los bloques necesarios para una interfaz Etherner completa.
Solo unos pocos componentes son requeridos, como se muestra a
continuacion.</p>
<img src="ENC28J60Connect.png">
<p> El Stack TCP/IP de Microchip usa un método cooperativo
multitarea para separarse a si mismo de la aplicación principal
para un mejor funcionamiento. Es decir todos los componentes
principales están en fuentes separadas de archivos.
</p>
</body>
</html>
224
Apéndice B. Código fuente HTML 225
____________________________________________________________________________
B.4 FOOTPRNT.HTM
<html>
<head>
<title>Microchip TCP/IP Stack Footprint</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="#FFFFFF">
<table border="0" cellpadding="0" cellspacing="0" width="100%"
fgcolor="white">
<tr bgcolor="#FF0000" fgcolor="white">
<td width="25%">
<a href="Index.htm"> <font color="#FFFFFF"> <b>Index</b>
</font> </a> </td>
<td width="25%">
<font color="#FFFFFF"> <b>Caracteristicas</b> </font> </td>
<td width="25%">
<a href="Arch.htm"> <font color="#FFFFFF">
<b>Arquitectura</b>
</font> </a> </td>
<td width="25%">
<a href="Footprnt.htm"> <font color="#FFFFFF">
<b>Stack Footprint</b> </font> </a> </td>
</tr>
</table> <br>
<table border="1" cellpadding="0" cellspacing="0" width="100%"
bordercolor="#000000">
<tr>
<td width="20%" bgcolor="#FFFF00"><strong>Capa</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>Componente
</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>ROM (Words)
</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>RAM (bytes)
</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>Info</strong></td>
</tr> <tr>
<td rowspan="2" width="20%" bgcolor="#D1D1D1">Fisica</td>
<td width="20%" bgcolor="#D1D1D1">Ethernet</td>
<td width="20%" bgcolor="#D1D1D1">1358</td>
<td width="20%" bgcolor="#D1D1D1">55</td>
225
Apéndice B. Código fuente HTML 226
____________________________________________________________________________
226
Apéndice B. Código fuente HTML 227
____________________________________________________________________________
</tr> <tr>
<td bgcolor="#D1D1D1">DHCP</td>
<td bgcolor="#D1D1D1">738</td>
<td bgcolor="#D1D1D1">26</td>
<td bgcolor="#D1D1D1">Debe incluir UDP</td>
</tr> <tr>
<td bgcolor="#D1D1D1">SNMP</td>
<td bgcolor="#D1D1D1">2819</td>
<td bgcolor="#D1D1D1">28</td>
<td bgcolor="#D1D1D1">Debe incluir UDP, MPFS</td>
</tr> <tr>
<td bgcolor="#D1D1D1">FTP Server</td>
<td bgcolor="#D1D1D1">637</td>
<td bgcolor="#D1D1D1">35</td>
<td bgcolor="#D1D1D1">Debe incluir TCP, MPFS</td>
</tr> <tr>
<td bgcolor="#D1D1D1">IP Gleaning</td>
<td bgcolor="#D1D1D1">20</td>
<td bgcolor="#D1D1D1">1</td>
<td bgcolor="#D1D1D1">Tamaño aproximado - Parte del Stack
Manager</td>
</tr> <tr>
<td bgcolor="#D1D1D1">Announce</td>
<td bgcolor="#D1D1D1">187</td>
<td bgcolor="#D1D1D1">0</td>
<td bgcolor="#D1D1D1"> </td>
</tr> <tr>
<td rowspan=5>Otra</td><td>File System (MPFS)</td>
<td>276</td><td>5</td>
<td>Programa de almacenamiento de memoria interna</td>
</tr> <tr>
<td>Stack Manager</td><td>297</td><td>12 + ICMP Buffer</td>
<td>Tamaño de buffer ICMP definido por el usuario</td>
</tr> <tr>
<td>Tick Manager</td><td>33</td><td>2</td>
<td>El usuario puede personalizar el Tick Manager</td>
</tr> <tr>
<td>Helper/Common functions</td><td>660</td>
<td>0</td><td>Ninguno</td>
</tr> <tr>
<td>SPI EEPROM Storage Routines</td>
227
Apéndice B. Código fuente HTML 228
____________________________________________________________________________
B.5 INDEX.HTML
B.6 ENCABEZADO.HTML
228
Apéndice B. Código fuente HTML 229
____________________________________________________________________________
229
Apéndice B. Código fuente HTML 230
____________________________________________________________________________
230
Apéndice B. Código fuente HTML 231
____________________________________________________________________________
B.7 PIE.HTML
B.8 PORTADA.HTML
232
Apéndice B. Código fuente HTML 233
____________________________________________________________________________
B.9 TESIS.HTML
233
Apéndice B. Código fuente HTML 234
____________________________________________________________________________
pluginspage="http://www.macromedia.com/go/getflashplayer"
play="true" loop="true" scale="showall" wmode="opaque"
devicefont="false" bgcolor="#ffffff"
name="doc_76490124131346_object" menu="true"
allowfullscreen="true" allowscriptaccess="always" salign=""
type="application/x-shockwave-flash" align="middle" mode="list"
height="500" width="450"></embed> </object>
<div style="margin: 6px auto 3px auto; font-family:
Helvetica,Arial,Sans-serif; font-style: normal; font-variant:
normal; font-weight: normal; font-size: 12px; line-height:
normal; font-size-adjust: none; font-stretch: normal; -x-system-
font: none; display: block;">
</div>
</center>
</body>
</html>
B.10 APLICACION.HTML
234
Apéndice B. Código fuente HTML 235
____________________________________________________________________________
<title>Aplicacion</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
<p align="center">
<iframe name="iframe1" height="400" align="center" width="100%"
frameborder="0" src="http://tesis-pic.dyndns.org
" scrolling="si">iframe</iframe>
<br />
Camara 1:
<a href='AppletWin1.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'"> Apagar <
/a>
 
; &nbs
p; &nb
sp;
Camara 2:
<a href='AppletWin2.html' target="iframe3" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe3" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'"> Apagar <
/a>
<br />
<iframe name="iframe2" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
<iframe name="iframe3" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
</p>
</body>
</html>
235
Apéndice B. Código fuente HTML 236
____________________________________________________________________________
B.11 NADA.HTML
B.12 VIGILANCIA.HTML
236
Apéndice B. Código fuente HTML 237
____________________________________________________________________________
<p align="center">
<strong>En esta pagina se muestran unicamente las camaras de
la aplicación para vigilancia.</strong><br />
Seleccione la camara deseada:</p>
<p align="center">
Camara 1:
<a href='AppletWin1.html' target="iframe1" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe1" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'"> Apagar <
/a>
 
; &nbs
p; &nb
sp;
Camara 2:
<a href='AppletWin2.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'"> Apagar <
/a>
</p>
<p align="center">
<iframe name="iframe1" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
<iframe name="iframe2" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
</p>
</body>
</html>
B.13 DOCUMENTOS.HTML
237
Apéndice B. Código fuente HTML 238
____________________________________________________________________________
238
Apéndice B. Código fuente HTML 239
____________________________________________________________________________
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/ENC28J60%20Datasheet%20-%2039662b.pdf"></iframe></td>
</tr>
<tr>
<td>Datasheet Microcontrolador PIC18F97J60:</td>
<td><iframe scrolling="No" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/PIC18F97J60%20Family%20Datasheet%20-
%2039762b.pdf"></iframe></td>
</tr>
<tr>
<td>Códigos fuente de la tarjeta PICDEM.net.2</td>
<td><iframe scrolling="no" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/codigos%20fuente.rar"></iframe></td>
</tr>
<tr>
<td>Documento electronico PDF de la presente tesis:</td>
<td><iframe scrolling="no" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/Tesis%20SATDPVE.pdf"></iframe></td>
</tr> </table>
</body>
</html>
239
Referencias 240
____________________________________________________________________________
REFERENCIAS
Adobe (2008). Uso de Adobe® Dreamweaver® CS4 para Windows® y Mac OS. 2008.
Manual del usuario. Adobe Systems Incorporated.
240
Referencias 241
____________________________________________________________________________
DynDNS (2008). Routers and Port Forwarding. Dynamic Network Services Inc.
Documento electrónico.
http://www.dyndns.com/support/kb/routers_and_port_forwarding.html
DynDNS (2009). DynDNS Free. Dynamic Network Services Inc. Página Web:
http://www.dyndns.com/services/dns/dyndns/
Groth, D. (2005). “Guía del estudio de redes”. Cuarta Edición. Sybex, Inc. ISBN 0-7821-
4406-3.
Guzman, D. (2006). AJAX definition and quick tutorial for JSP applications. White Paper.
241
Referencias 242
____________________________________________________________________________
McQuerry, S. (2008). Interconecting Cisco Network Devices, Part 1 (ICND 1). Segunda
Edición, Editorial CISCO.
Microchip (2007). Microchip, The embedded control solutions company. Data Book,
Microchip Technology Inc.
Module for hosting (2009). What is Apache HTTP Server?. Página Web:
http://www.modulehosting.com/apache.html
Mozilla Developer Center (2009). About JavaScript. Mozilla Organization. Página Web:
https://developer.mozilla.org/en/about_javascript.
NCSA (2009). The Common Gateway Interface (CGI). National Center for
Supercomputing Aplications, Universidad de Illinois. Página Web:
http://hoohoo.ncsa.illinois.edu/cgi/
242
Referencias 243
____________________________________________________________________________
Peatman, J. (2003). Desing whit microcontroller. New York, USA, Editorial McGraw Hill.
Telmex (2007). Tutoriales Telmex para la instalación de Prodigy Infinitum. Página Web:
http://www.telmex.com/mx/seccion/video/tutoriales/insta_paqinfini.html
243
Referencias 244
____________________________________________________________________________
244