Вы находитесь на странице: 1из 197

Control de mdem GSM desde microcontrolador.

TITULACIN: Ingeniera Tcnica Industrial en Electrnica Industrial









AUTOR: Christian Paniagua Martn
DIRECTOR: J os Lus Ramirez Falo


FECHA: J unio del 2008.

I
ndice


1 MEMORIA DESCRIPTIVA. ...................................................................................................... 1
1.1 OBJ ETO DEL PROYECTO. ........................................................................................................ 1
1.2 ANTECEDENTES..................................................................................................................... 1
1.3 POSIBLES SOLUCIONES Y SOLUCIN ADOPTADA. ................................................................... 1
1.3.1 Eleccin del Microcontrolador. .................................................................................. 1
1.3.2 Mdem GSM................................................................................................................ 3
1.3.3 Entorno PC.................................................................................................................. 5
1.3.4 Lenguaje de Programacin. ........................................................................................ 5
1.3.5 Interfaz PC-Dispositivo. .............................................................................................. 5
1.3.6 Interfaz PC-Modem. .................................................................................................... 6
1.3.7 Dispositivo visualizador. ............................................................................................. 6
1.3.8 Alimentacin................................................................................................................ 7
1.4 COMUNICACIONES SERIE. ...................................................................................................... 7
1.4.1 La interfaz RS-232....................................................................................................... 8
1.4.2 El Bus Serie Universal (USB). .................................................................................... 8
1.4.2.1 Conceptos bsicos.................................................................................................................. 12
1.4.2.2 Proceso de deteccin y enumeracin del dispositivo............................................................. 12
1.5 COMUNICACIONES MVILES GSM....................................................................................... 16
1.5.1 Antecedentes.............................................................................................................. 16
1.5.2 Red GSM. .................................................................................................................. 16
1.5.2.1 Arquitectura de una red GSM................................................................................................ 16
1.5.2.2 Transmisin de datos por GSM. ............................................................................................ 17
1.5.3 Servicio de Mensajes Cortos SMS. ............................................................................ 18
1.5.3.1 Introduccin al SMS.............................................................................................................. 18
1.5.3.2 Funcionamiento del sistema SMS.......................................................................................... 18
1.6 COMANDOS AT. .................................................................................................................. 19
1.6.1 Introduccin. ............................................................................................................. 19
1.6.2 Tipos de Comandos AT.............................................................................................. 20
1.6.3 Listado de comandos utilizados................................................................................. 20
1.6.3.1 Configuracin comunicacin serie......................................................................................... 20
1.6.3.2 Cdigos de acceso. ................................................................................................................ 20
1.6.3.3 Lectura del Nmero del Centro de Mensajes......................................................................... 21
1.6.3.4 Configuracin tipo SMS........................................................................................................ 21
1.6.3.5 Configuracin aviso SMS...................................................................................................... 21
1.6.3.6 Borrado de SMS. ................................................................................................................... 21
1.6.3.7 Envo de SMS........................................................................................................................ 22
1.6.3.8 Lectura de SMS recibido. ...................................................................................................... 22
1.7 PSEUDOCOMANDOS DE COMUNICACIN ENTRE PC Y MICROCONTROLADOR. ...................... 23
1.7.1 Envo de datos. .......................................................................................................... 23
1.7.2 Solicitud de datos. ..................................................................................................... 23
1.8 MAPA DE DIRECCIONES DE LOS DATOS ALMACENADOS EN EEPROM. ................................ 24
1.9 DESCRIPCIN GENERAL DEL EQUIPO................................................................................... 25
1.9.1 Esquema global. ........................................................................................................ 25
1.9.2 Composicin del sistema. .......................................................................................... 26
1.9.2.1 Circuito del microcontrolador PIC......................................................................................... 26
1.9.2.2 Comunicacin entre circuito y PC. ........................................................................................ 26
1.9.2.3 Interfaz en el PC. ................................................................................................................... 26
1.10 ESPECIFICACIONES TCNICAS.............................................................................................. 27
1.10.1 Entorno PC................................................................................................................ 27
1.10.2 Alimentacin del circuito. ......................................................................................... 27
1.10.3 Microcontrolador. ..................................................................................................... 27
1.11 ENTORNO DE TRABAJ O. ....................................................................................................... 28
1.11.1 Programa del microcontrolador. .............................................................................. 28
1.11.1.1 Compilador.......................................................................................................................... 28
1.11.1.2 Software de grabacin. ........................................................................................................ 30

II
1.11.1.3 Hardware de grabacin........................................................................................................ 31
1.11.2 Programa del PC. ..................................................................................................... 31
2 MEMORIA DE CLCULO. ..................................................................................................... 33
2.1 ALIMENTACIN REQUERIDA................................................................................................ 33
2.2 CORRIENTE EN LOS LED...................................................................................................... 33
2.3 CORRIENTE DEL DISPOSITIVO............................................................................................... 33
2.4 INICIALIZACIN DEL PIC..................................................................................................... 34
2.4.1 Configuracin del oscilador...................................................................................... 36
2.4.2 Configuracin del mdulo USB................................................................................. 37
2.5 INICIALIZACIN DEL MDEM GSM...................................................................................... 37
3 DISEO DEL HARDWARE. ................................................................................................... 39
3.1 ALIMENTACIN DEL SISTEMA.............................................................................................. 39
3.2 OSCILADOR. ........................................................................................................................ 39
3.3 PULSADORES. ...................................................................................................................... 41
3.4 DIODOS ELECTROLUMINISCENTES, LEDS............................................................................ 42
4 DISEO DEL FIRMWARE. .................................................................................................... 43
4.1 DIAGRAMAS DEL SISTEMA................................................................................................... 43
4.1.1 Diagrama general. .................................................................................................... 43
4.1.2 Diagramas de manejo de datos ................................................................................. 44
4.1.2.1 Diagrama de lectura de datos en memoria del PIC. ............................................................... 44
4.1.2.2 Diagrama de lectura de datos enviados desde el PC. ............................................................. 45
4.1.2.3 Diagrama de envo de datos hacia el PC................................................................................ 46
4.1.3 Diagramas de comunicacin con mdem.................................................................. 47
4.1.3.1 Diagrama de configuracin del mdem................................................................................. 47
4.1.3.1.1 Diagrama de comando AT+IPR. ................................................................................... 48
4.1.3.1.2 Diagrama de comando AT+CPIN. ................................................................................ 49
4.1.3.1.3 Diagrama de comando AT+CSCA................................................................................ 50
4.1.3.1.4 Diagrama de comando AT+CMGF. .............................................................................. 51
4.1.3.1.5 Diagrama de comando AT+CNMI................................................................................ 52
4.1.3.1.6 Diagrama de comando AT+CMGD............................................................................... 53
4.1.3.2 Diagrama de envo de SMS, comando AT+CMGS. .............................................................. 54
4.1.3.3 Diagrama de lectura de SMS, comando AT+CMGR............................................................. 55
4.2 PROGRAMACIN DE LA APLICACIN DEL PIC...................................................................... 56
4.2.1 Compilador y libreras. ............................................................................................. 56
4.2.2 Funciones de la comunicacin USB.......................................................................... 56
5 DISEO DEL SOFTWARE...................................................................................................... 58
5.1 PROGRAMACIN DEL SOFTWARE PARA EL PC...................................................................... 58
5.1.1 Compilador y libreras. ............................................................................................. 58
5.1.2 Funciones comunicacin USB................................................................................... 58
5.1.3 Instalacin software y drivers. .................................................................................. 61
5.1.4 Software versin SUPERVISOR................................................................................ 62
5.1.5 Software versin simple............................................................................................. 63
5.2 CREACIN DEL ARCHIVO INSTALABLE................................................................................. 63
6 PRESUPUESTO. ........................................................................................................................ 64
6.1 COSTE DE RECURSOS HARDWARE........................................................................................ 64
6.2 COSTE DE RECURSOS SOFTWARE......................................................................................... 64
6.3 COSTE DE COMPONENTES. ................................................................................................... 65
6.4 COSTE DE RECURSOS HUMANOS........................................................................................... 66
6.5 COSTE TOTAL DEL PROYECTO.............................................................................................. 67
7 BIBLIOGRAFA. ....................................................................................................................... 68
8 ANEXOS. .................................................................................................................................... 69
8.1 MANUAL DE USUARIO.......................................................................................................... 69
8.1.1 Instalacin................................................................................................................. 69
8.1.1.1 Instalacin de la aplicacin y de los drivers........................................................................... 69

III
8.1.1.2 Instalacin del dispositivo. .................................................................................................... 69
8.1.2 Uso de la aplicacin en su versin SUPERVISOR.................................................... 70
8.1.3 Uso de la aplicacin en su versin bsica. ............................................................... 74
8.1.4 Uso del dispositivo. ................................................................................................... 76
8.2 CDIGO FUENTE DEL PROGRAMA EN PIC............................................................................. 78
8.2.1 picmodem.c................................................................................................................ 78
8.3 CDIGO FUENTE DEL SOFTWARE EN PC, VERSIN SUPERVISOR. ................................... 109
8.3.1 Picmodem.cs............................................................................................................ 109
8.3.2 Picmodem.Designer.cs ............................................................................................ 140
8.4 CDIGO FUENTE DEL SOFTWARE EN PC, VERSIN BSICA.............................................. 154
8.4.1 Picmodem.cs............................................................................................................ 154
8.4.2 Picmodem.Designer.cs ............................................................................................ 179
8.5 CDIGO FUENTE DE LA API COMN PARA LAS DOS VERSIONES......................................... 189
8.5.1 PicmodemAPI.cs ..................................................................................................... 189
8.6 CDIGO DEL ARCHIVO PICMODEM.INF. .............................................................................. 191


























IV
ndice figuras

FIGURA 1.1 EJ EMPLO DE ESQUEMA INTERNO DE UN MICROCONTROLADOR........................................................ 2
FIGURA 1.2 PIC 18F2550.................................................................................................................................... 2
FIGURA 1.3 PINS DEL MICROCONTROLADOR PIC 18F2550................................................................................. 3
FIGURA 1.4 MODEM GSM SIEMENS TC35I........................................................................................................ 4
FIGURA 1.5 ANTENA GSM CONECTADA AL MDEM.......................................................................................... 4
FIGURA 1.6 LED 5MM TRICOLOR....................................................................................................................... 7
FIGURA 1.7 TOPOLOGA DE UNA CONEXIN USB............................................................................................. 10
FIGURA 1.8 SECCIN DEL CABLE USB. ............................................................................................................ 11
FIGURA 1.10 DIAGRAMA DE ESTADOS DEL PERIFRICO.................................................................................... 14
FIGURA 1.13 ESQUEMA GLOBAL DEL CONEXIONADO. ...................................................................................... 25
FIGURA 1.14 ESQUEMA ELECTRNICO DEL CIRCUITO....................................................................................... 26
FIGURA 1.15 VISTA DEL EDITOR DE CDIGO. ................................................................................................... 29
FIGURA 1.16 VISTA DEL RESULTADO DE LA COMPILACIN............................................................................... 29
FIGURA 1.17 SOFTWARE DE GRABACIN WINPIC800...................................................................................... 30
FIGURA 1.18 GRABACIN FINALIZADA............................................................................................................. 31
FIGURA 1.19 PROGRAMADOR TE-20................................................................................................................ 31
FIGURA 1.20 VISTA DEL ASISTENTE PARA CREAR UN NUEVO PROYECTO.......................................................... 32
FIGURA 1.21 VISTA DEL PROYECTO PICMODEM DE VISUAL C#........................................................................ 32
FIGURA 2.1 MDULO DEL OSCILADOR. ............................................................................................................ 36
FIGURA 2.2 REGULADOR DE TENSIN DEL MDULO USB. ............................................................................... 37
FIGURA 3.1 CONECTOR USB TIPO B................................................................................................................. 39
FIGURA 3.2 CONEXIONADO ALIMENTACIN USB AL PIC. ............................................................................... 39
FIGURA 3.3 MODOS DE FUNCIONAMIENTO DEL OSCILADOR. ............................................................................ 40
FIGURA 3.4 CONEXIN CRISTAL OSCILADOR.................................................................................................... 41
FIGURA 3.5 PULSADOR DE ENVO DE SMS. ...................................................................................................... 41
FIGURA 3.6 CONEXIN PULSADOR RESET. ..................................................................................................... 42
FIGURA 3.7 CONEXIN PULSADORES ENVO DE SMS....................................................................................... 42
FIGURA 4.1 DIAGRAMA GENERAL DE FUNCIONAMIENTO.................................................................................. 43
FIGURA 4.2 DIAGRAMA LECTURA EEPROM.................................................................................................... 44
FIGURA 4.3 DIAGRAMA DE COMANDO DE ENVO DE DATOS DESDE EL PC. ....................................................... 45
FIGURA 4.4 DIAGRAMA DE COMANDO DE PETICIN DE DATOS......................................................................... 46
FIGURA 4.5 DIAGRAMA DE CONFIGURACIN DEL MDEM................................................................................ 47
FIGURA 4.6 DIAGRAMA CONFIGURACIN BAUDIOS.......................................................................................... 48
FIGURA 4.7 DIAGRAMA DE INTRODUCCIN DEL CDIGO PIN........................................................................... 49
FIGURA 4.8 DIAGRAMA DE LECTURA DEL CENTRO DE MENSAJ ES.................................................................... 50
FIGURA 4.9 DIAGRAMA DE CONFIGURACIN SMS EN MODO TEXTO. ............................................................... 51
FIGURA 4.10 DIAGRAMA DE CONFIGURACIN AVISO PARA SMS ENTRANTES.................................................. 52

V
FIGURA 4.11 DIAGRAMA DE BORRADO DE MENSAJ ES EN MEMORIA.................................................................. 53
FIGURA 4.12 DIAGRAMA DE ENVO DE MENSAJ ES SMS.................................................................................... 54
FIGURA 4.13 DIAGRAMA DE LECTURA DE MENSAJ ES SMS............................................................................... 55
FIGURA 5.1 LOGOTIPOS USB. .......................................................................................................................... 58
FIGURA 5.2 PANTALLA PRINCIPAL INSTALABLE. .............................................................................................. 63
FIGURA 8.1 PANEL ADMINISTRADOR DE DISPOSITIVOS.................................................................................... 69
FIGURA 8.2 PROPIEDADES DEL DISPOSITIVO..................................................................................................... 70
FIGURA 8.3 MENSAJ E DE ERROR DE DISPOSITIVO NO CONECTADO. .................................................................. 70
FIGURA 8.4 MENSAJ E DE ERROR DE DISPOSITIVO DESCONECTADO................................................................... 71
FIGURA 8.5 VISTA DEL SOFTWARE CON EL DISPOSITIVO ONLINE................................................................... 71
FIGURA 8.6 MENSAJ E INFORMACIN PARMETROS.......................................................................................... 72
FIGURA 8.7 VISTA DEL SOFTWARE DESPUS DE LEER LOS DATOS DEL PIC....................................................... 72
FIGURA 8.8 VISTA DEL BOTN CARGAR PARMETROS EN EL MODEM................................................. 73
FIGURA 8.9 VISTA DEL CONMUTADOR Y DEL CONECTOR PARA COMUNICACIONES SERIE DESDE EL PC............ 74
FIGURA 8.10 DETALLE DE LA BARRA DE PROGRESO......................................................................................... 74
FIGURA 8.11 VISTA DEL SOFTWARE EN PROCESO DE OBTENCIN DE DATOS DESDE EL PIC.............................. 75
FIGURA 8.12 VISTA DEL SOFTWARE DESPUS DE RECIBIR LOS DATOS.............................................................. 75
FIGURA 8.13 DETALLE DE LOS ELEMENTOS NOMBRADOS DEL CIRCUITO.......................................................... 77



ndice tablas

TABLA 1.1 DIRECCIONES DE LOS VALORES ALMACENADOS. ............................................................................ 24
TABLA 3.1 CORRESPONDENCIA PINS CONECTOR USB...................................................................................... 39
TABLA 3.2 CAPACIDADES PARA EL OSCILADOR. .............................................................................................. 41
TABLA 6.1 COSTE RECURSOS HARDWARE. ....................................................................................................... 64
TABLA 6.2 COSTE RECURSOS SOFTWARE. ........................................................................................................ 65
TABLA 6.3 COSTE COMPONENTES ELECTRNICOS............................................................................................ 66
TABLA 6.4 COSTE DE RECURSOS HUMANOS...................................................................................................... 66
TABLA 6.5 COSTE TOTAL DEL PROYECTO......................................................................................................... 67
TABLA 6.6 COSTE DE EXPLOTACIN DEL DISPOSITIVO. .................................................................................... 67

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
1
1 Memoria Descriptiva.
1.1 Objeto del proyecto.
El objeto del presente proyecto es disear y montar un circuito que controle un
MODEM GSM con el fin de enviar mensajes cortos (SMS) a un terminal GSM externo, as
como recibir mensajes SMS y actuar segn proceda. El circuito se basar en un sistema
controlado por un microcontrolador de la serie PIC, que gestionar un mdem GSM y las
comunicaciones necesarias con el PC. El prototipo incluir dos LEDs para mostrar al
usuario el estado de las comunicaciones con el PC y con el MODEM. Para dar un uso
alternativo, se programar el microcontrolador para controlar sus mltiples E/S,
activndolas o desactivndolas mediante un SMS enviado desde cualquier telfono mvil
en cualquier parte del mundo.

1.2 Antecedentes.
Existen aplicaciones que requieren comunicarse con un terminal remoto para
visualizar y controlar el sistema. Un ejemplo de aplicacin podra ser un dispositivo
conectado a un sistema automtico cualquiera, que avisara al usuario de una incidencia
grave y le permitiera a ste tomar una decisin y actuar a distancia.
Dado que, segn un estudio del Ministerio de Industria de 2006, el 98% del
territorio poblado tiene cobertura GSM, resulta interesante aprovechar la red de telefona
mvil para nuestras comunicaciones.

1.3 Posibles soluciones y solucin adoptada.
1.3.1 Eleccin del Microcontrolador.
Los microcontroladores son circuitos integrados que incluyen como mnimo una
CPU, unidades E/S y memoria de programa, adems de una serie de componentes que
dotan al microcontrolador de diversas funcionalidades.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
2

Figura 1.1 Ejemplo de esquema interno de un microcontrolador.
De los microcontroladores existentes, es con los PIC de MICROCHIP con los que
estoy ms familiarizado. Por lo tanto, siendo los PIC unos microcontroladores suficientes
para la tarea a llevar a cabo y poseyendo varias unidades, se decide hacer uso de ellos.
Por requisitos de diseo, se necesita un microcontrolador con conectividad USB y
un puerto de E/S, por lo que con el PIC18F2550, un microcontrolador de 28 patas
satisfaceremos nuestras expectativas.

Figura 1.2 Pic 18F2550.

Las funciones y caractersticas que han sido utilizadas son las siguientes:

Memoria FLASH =32 KBytes, 16384 Instrucciones
EEPROM =256 Bytes
PINS I/O =24 con 3 interrupciones externas
USART
Timers 8/16bits =1/3, 4 timers en total
Modos de oscilador:
o Externo hasta 48MHz
o Externo auxiliar, para mdulo USB
o Interno con RC
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
3
o Interno programable de 31kHz hasta 8MHz
Rango de voltaje desde 2V hasta 5.5V.
USB V2.0: Baja Velocidad (1.5 Mb/s) y Velocidad Completa (12 Mb/s).
Interrupciones: 3 interrupciones de entradas externas, interrupcin de
cambio de estado en el portB, interrupciones de los Timers, interrupcin de
la UART al enviar y al recibir, interrupcin de final de conversin A/D,
interrupcin del USB, etc...


Figura 1.3 Pins del microcontrolador PIC 18F2550.

Adems de las funcionalidades de que dispone este PIC, una ventaja sobre la serie
16F es el juego de instrucciones y el sistema de memoria lineal.
La familia 18F dispone de 77 instrucciones sobre las 35 de la familia 16F. El hecho
que ms puede facilitar la programacin es la estructura de la memoria interna, tanto la
memoria de datos como la de programa. Los PIC de las familias inferiores a la 18F slo
pueden acceder a direcciones de 8 bits.
Los PIC 18F disponen de memoria lineal y pueden direccionarla toda, esto resulta
cmodo para manejar buffers lineales. En realidad esto no nos perjudica ni nos beneficia,
puesto que programaremos el firmware del PIC en lenguaje C.

1.3.2 Mdem GSM.
El mdem GSM es la parte que se comunicar con el mundo exterior. En la
eleccin del mdem, pese a ser lo ms importante, no ha hecho falta tener en cuenta
muchos parmetros, ya que todos los mdems GSM cumplen los mismos requisitos
mnimos necesarios.
El mdem GSM elegido es del fabricante Siemens, modelo TC35i, dotado de
interfaz RS-232, conector de antena tipo jack J ME, soporte de tarjeta SIM, LED indicador
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
4
de estado y alimentacin mediante un adaptador 220V AC-12V DC. Se ha elegido este
modelo porque ya dispona de l, conozco su funcionamiento y cumple con los requisitos
necesarios para el desarrollo de este proyecto

Figura 1.4 Modem GSM Siemens TC35i.

Las caractersticas tcnicas del mdem son las siguientes:

Banda Dual 900/1800 MHz GSM.
Comunicaciones serie a 2.4, 4.8, 9.6 y 14.4 kbps.
GSM Clase 1 y Clase 2 Grupo 3 Fax
Short Message Services (SMS)
Zcalo para tarjeta SIM.
Compatible con los comandos AT.

Se deber conectar una antena GSM a la salida del mdem. En caso de no hacerlo
no se garantizara conectarse a la red con la suficiente calidad.

Figura 1.5 Antena GSM conectada al Mdem.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
5
1.3.3 Entorno PC.
Existen diferentes entornos para la interfaz de usuario, LINUX, UNIX, MS-DOS,
WINDOWS, etc. De los distintos entornos, es el de Microsoft WINDOWS con el que
estoy ms familiarizado, adems de ser el ms popular.
El entorno MS-DOS es un entorno conocido por su robustez y sencillez, pero tiene
el inconveniente de ser un entorno poco amigable para el usuario final, adems que no nos
permitira realizar comunicaciones por el puerto USB del PC.
Por lo tanto, el entorno elegido es Microsoft Windows, trabajando con la versin
XP Service Pack 2, ya que es un entorno conocido por la inmensa mayora de usuarios y
dispone adems de un gran abanico de posibilidades de desarrollo del software.

1.3.4 Lenguaje de Programacin.
Existen muchos lenguajes de programacin de tipo visual (programacin orientada
a objetos): Visual Basic, Visual C++, Visual C#, Delphi, J ava, etc...
Siendo el lenguaje C el ms utilizado a lo largo de la carrera y teniendo nulos
conocimientos de cualquier lenguaje de programacin visual, se decide adoptar el software
de programacin Microsoft Visual C#por su gran similitud con el lenguaje C, que ya
conozco, y por ser de libre distribucin en su versin Express.

1.3.5 Interfaz PC-Dispositivo.
Los ordenadores PC disponen de un gran surtido de conexiones con el exterior, son
las siguientes:
Puertos PS/2: usados para conectar teclado y ratn.
Puerto paralelo: usado para conectar impresoras y escneres, aunque cada
vez se utiliza menos este puerto debido a la gran versatilidad del puerto
USB. Ancho de banda de 8 a 16 Mbps.
Puertos COM: son puertos serie RS-232. Al igual que el paralelo, cada vez
se usan menos. Suele predominar su uso en aplicaciones industriales ms
que en domsticas. Las comunicaciones RS-232 suelen establecerse a: 9600
bps, 19200 bps, 38400 bps, 57600 bps y 115200 bps.
Puerto IEEE 1394: conocido como FireWire, es un puerto serie de alta
velocidad, usado sobretodo en aplicaciones de edicin de video. Su ancho
de banda es de entre 400 Mbps y 800 Mbps, dependiendo si es la versin 1
o 2 respectivamente.
Puerto USB: actualmente se usa para conectar teclados, ratones, impresoras,
escneres, telfonos mviles, adaptadores IrDA y Bluetooth, memorias flash
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
6
externas, etc En su versin 2.0 se dispone de un ancho de banda de 480
Mbps.
IrDA: es un tipo de conexin inalmbrica que funciona por infrarrojos; es de
muy corto alcance, se suele utilizar para comunicar dispositivos mviles
como ordenadores de bolsillo o telfonos celulares con el PC. Su ancho de
banda oscila entre 9600 bps y 4 Mbps.
Bluetooth: es otro tipo de conexin inalmbrica, ste funciona por RF; tiene
una cobertura tpica de 10 metros alrededor del emisor. Es utilizado para
comunicar dispositivos mviles entre ellos y con el PC, teniendo un ancho
de banda de entre 1 y 3 Mbits/s.
La solucin adoptada es utilizar el puerto USB, porque es un puerto muy extendido,
fcil y cmodo de usar. Solo es necesario conectar el dispositivo y el sistema operativo
(Windows XP o superior) lo reconocer. Esto es una buena idea para nuestro lector, ya que
dar ms facilidad de utilizacin. Para nuestra aplicacin su gran ancho de banda no es
necesario, apenas transferiremos unas centenas de Bytes.

1.3.6 Interfaz PC-Modem.
El MODEM GSM elegido tiene integrada una interfaz para puerto serie RS-232,
por lo que se implementar, mediante la UART del PIC, una comunicacin serie con el
MODEM.
Los parmetros elegidos para esta comunicacin sern los siguientes:
9600 bps.
8 bits.
Sin paridad.
1 bit de stop.

1.3.7 Dispositivo visualizador.
En nuestro circuito se hace necesaria la visualizacin del estado del PIC, del
MODEM y de la comunicacin entre PIC y PC. A travs de la versin SUPERVISOR del
software, se visualizan todas las tramas enviadas y recibidas por el PIC, el MODEM y el
PC, adems de un flag que indica en qu posicin crtica se encuentra la ejecucin del
programa interno del PIC.
Una vez el circuito est configurado, puede funcionar independientemente del
software, por lo que es aqu cuando nos interesa visualizar su correcto funcionamiento.
De las mltiples opciones que existen, las ms apropiadas seran las de instalar un
display de cristal lquido (LCD) y la de utilizar diodos electroluminiscentes (LED).
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
7
Para simplificar el circuito, debido a su mnimo espacio y a las suficientes
posibilidades que nos ofrecen, haremos uso de los LED, en su versin de dos colores. Estos
LED se conocen como tricolores porque iluminan en verde, rojo y la suma de los dos
genera el mbar.
Utilizaremos dos LED tricolores, VERDE, ROJ O y AMBAR, con un encapsulado
de 5mm de dimetro.

Figura 1.6 LED 5mm tricolor.

1.3.8 Alimentacin.
Teniendo en cuenta que nuestro MODEM se alimentar desde la red elctrica y que
el circuito deber conectarse al PC en ocasiones, para transferir los datos necesarios para
su funcionamiento, se opta por aprovechar la tensin de 5V y hasta 500mA de corriente
que suministra el host USB del PC.
Alternativas posibles seran:
Conexin a la red elctrica va transformador, rectificador, filtros,
estabilizador, etc.
Uso de bateras recargables.
Uso de pilas.
La solucin ptima sera la alimentacin del dispositivo desde la red elctrica, pero
para demostrar el funcionamiento del USB se decide alimentar desde ste. Por otro lado, de
esta manera se ahorra espacio y medios en la regulacin de la tensin y en el uso de pilas o
bateras.

1.4 Comunicaciones serie.
La conexin a travs de esta interfaz es muy importante debido a su gran
flexibilidad. En los ordenadores personales la interfaz serie se utiliza para conectar
mltiples dispositivos como plotters, mdems, ratones, impresoras...
En la transmisin serie se van transfiriendo los bits de informacin de uno en uno a
travs de una lnea de datos.
En las transferencias asncronas, tanto el receptor como el transmisor deben trabajar
a la misma velocidad. En este caso se enva tambin informacin de sincronizacin a
travs de la lnea de datos, que se corresponde con un bit de comienzo (bit de start), que
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
8
indica el comienzo de una unidad de datos, un bit de fin (bit de stop) indicando su
finalizacin y, opcionalmente, un bit de paridad para controlar los posibles errores. El bit
de paridad lo generan los controladores serie de forma automtica, pudiendo configurarse
entre las opciones de: sin paridad, paridad par (odd) o paridad impar (even).
Las tasas de transferencia de datos se miden en baudios. Los baudios indican el
nmero de veces que puede cambiar una seal en la lnea de transmisin por segundo. En
una interfaz serie, las seales cambian siempre a la misma frecuencia y se realiza una
codificacin binaria de la informacin de forma que cuando se quiere enviar un 1 se pone
la lnea a nivel alto y cuando se quiere enviar un 0 se pone la lnea a nivel bajo. En este
caso los baudios coinciden con el nmero de bits por segundo transferidos si se incluyen
tambin los bits de comienzo, de fin y de paridad.

1.4.1 La interfaz RS-232.
Este estndar lo incorporan todos los ordenadores personales, a excepcin de
algunos ordenadores porttiles, y est definido por la EIA (Electronic Industries
Association) aunque en Europa se le conoce como el estndar V.24 definido por la CCITT
(Consultative Committee for Internacional Telephone and Telegraph). En l se definen
todas las caractersticas mecnicas, elctricas y la norma de facto necesarios para conectar
un equipo terminal de datos (DTE- Data Terminal Equipment) con un equipo transmisor
de datos (DCE Data Carrier Equipment). Inicialmente se defini para realizar la
comunicacin entre un ordenador personal y un mdem, aunque actualmente se utiliza con
muchos otros propsitos para enviar datos de forma serializada.
El estndar define voltajes que oscilan entre +[3-15]V para el nivel alto y [3-15]V
para el nivel bajo.
Si se utiliza este estndar para conectar otros perifricos diferentes de los mdems,
stos se comportan como dispositivos DTE y, por lo tanto, las seales cambian de
significado. [10]

1.4.2 El Bus Serie Universal (USB).
El USB es un estndar creado en 1995 que define un bus utilizado para conectar
perifricos al ordenador. La principal caracterstica que tiene es que la conexin es muy
sencilla, ya que utiliza un nico conector para conectar a travs de un bus serie todos los
dispositivos. En l se definen los conectores y los cables, una topologa especial tipo
estrella para conectar hasta 127 dispositivos y protocolos que permiten la deteccin y
configuracin automtica de los dispositivos conectados. USB 1.0 soporta dos tasas de
transferencia diferentes, una baja de 1,5 Mbps para la conexin de dispositivos lentos de
bajo coste (joysticks, ratones) y otra alta de hasta 12 Mbps para la conexin de dispositivos
que requieren un mayor ancho de banda (discos o CDROMS).
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
9
La especificacin de este estndar ha sido respaldada por las empresas lderes
mundiales en el campo de la informtica: Intel, IBM, DEC, Microsoft, Compaq, NEC y
Northem Telecom, empresas que garantizan su continuidad y utilizacin.
A mediados del ao 2000 aparece la versin 2.0, que fue creada por el conjunto de
compaas arriba mencionadas, a las cuales se unieron Hewlett Packard, Lucent y Philips.
USB 2.0 multiplica la velocidad del bus por un factor de 30 o 40, llegando a alcanzar una
velocidad de 480 Mbps, con una diferencia de coste casi inapreciable. Es compatible con la
versin anterior y utiliza los mismos cables y conectores, nicamente se necesitan nuevos
hubs que soporten la versin 2.0. Estos hubs son algo ms complejos que los anteriores, ya
que tienen que manejar el trfico de datos de tres velocidades distintas sin ser excluyentes
entre ellas.
Cabe tambin destacar que USB 2.0 nunca llegar a reemplazar completamente a
USB 1.0, ya que existen algunos tipos de dispositivos, como los HID (teclados,
ratones,), que no requieren las altas velocidades que alcanza esta nueva versin y que
nicamente encareceran el dispositivo.
Anteriormente los perifricos se conectaban mapeados directamente en direcciones
de E/S, se les asignaba una direccin especfica y en algunos casos un canal DMA. Esta
situacin conduca a tener conflictos en la asignacin de estos recursos, puesto que siempre
han estado bastante limitados en el ordenador. Adems cada dispositivo tena su propio
puerto de conexin y utilizaba sus cables especficos, lo que daba lugar a un incremento de
los costes. Debido a que a cada dispositivo se le tenan que asignar unos recursos
especficos la deteccin del mismo deba hacerse a la hora de arrancar el sistema y nunca
se poda incorporar un nuevo dispositivo cuando el sistema estaba en marcha.
Los dos aspectos fundamentales que motivaron la realizacin de este estndar
fueron la necesidad de configurar de forma sencilla los perifricos conectados al ordenador
y la necesidad de aumentar el nmero de puertos disponibles.
Este estndar define una topologa de conexin en estrella, tal como se muestra en
la figura 2.1, por medio de la incorporacin de varios concentradores conectados en serie.
Cada concentrador se conecta por un lado al ordenador, que contiene una o dos interfaces
de este tipo en la placa base, o a otro concentrador y, por otro lado, se conecta a varios
dispositivos o incluso a otro concentrador. De este modo pueden existir perifricos que
vengan ya preparados con nuevos conectores USB para incorporar nuevos dispositivos,
hasta un total de 127, todos ellos funcionando simultneamente.
Los hubs tienen la misin de ampliar el nmero de dispositivos que se pueden
conectar al bus. Son concentradores cableados que permiten la conexin simultnea de
mltiples dispositivos y lo ms importante es que se pueden concatenar entre s ampliando
la cantidad de puertos disponibles para los perifricos. El concentrador detecta cundo un
perifrico es conectado o desconectado a/de uno de sus puertos, notificndolo de inmediato
al controlador de USB. Tambin realiza funciones de acoplamiento de las velocidades de
los dispositivos ms lentos.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
10

Figura 1.7 Topologa de una conexin USB.
Existe una gran variedad de dispositivos USB que se conectan todos al mismo bus.
La caracterstica ms importante es que todos ellos utilizan el mismo tipo de cable y de
conector y se conectan de la misma forma. El host decide qu dispositivo puede acceder al
bus, utilizando un protocolo parecido al de paso de testigo. Este protocolo se caracteriza
porque entre los diferentes dispositivos se va pasando un identificador a lo largo del tiempo
que permite la utilizacin del bus.
El host USB tiene las funciones de:
Detectar la conexin/desconexin de dispositivos y configurarlos.
Controlar las transferencias de datos y de control que tienen lugar en el bus.
Realizacin de auditorias sobre la actividad del sistema.
Servir como fuente de alimentacin a los dispositivos.

El USB define dos lneas para transmitir datos y otras dos para transmitir potencia
(vase la figura 1.8). Los datos de transmiten de forma balanceada a velocidades entre 1,5
Mbps y 12 Mbps. La seal se transmite codificada en un cdigo autoreloj de no retorno a
cero invertido (NRZI) para poder incluir junto con los datos informacin de
sincronizacin. Las lneas de alimentacin (Vbus y GND) evitan la necesidad de utilizar
fuentes de alimentacin externas. Tiene una tensin de 5 V y la corriente se limita a un
mximo de 500 mA, siendo el consumo y la configuracin elctrica totalmente
transparente al usuario. La distancia entre dos perifricos conectados al mismo cable no
debe ser superior a 5 metros para evitar problemas de cadas de tensin.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
11

Figura 1.8 Seccin del cable USB.
El computador identifica automticamente el dispositivo que se conecta mientras
opera y lo configura sin tener que instalar drivers especficos del fabricante. Al comienzo
se detectan los dispositivos conectados midiendo los niveles de voltaje de las lneas. Si un
dispositivo est conectado, entonces el dispositivo enva informacin sobre el tipo o la
clase a la que pertenece, qu modo de transferencia utilizar y cules son sus necesidades
de ancho de banda. El host reconocer el dispositivo buscando en la lista de drivers del
sistema operativo y teniendo en cuenta los dems dispositivos conectados le asignar un
ancho de banda determinado. De la misma forma tambin se pueden desconectar los
dispositivos del sistema.
El controlador USB del host asigna un nmero diferente de dispositivo a cada uno
de los perifricos que se conectan a este bus. Para empezar la transferencia, ste enva un
paquete que identifica al dispositivo objeto de la transferencia.

El protocolo soporta cuatro tipos de transferencias:

Control. Son transferencias que se utilizan para leer informacin de los
descriptores en los registros de los dispositivos (llamados endpoints),
interpretarla y poder configurarlos.
Interrupcin. Usadas en los perifricos del tipo de los controladores de
juegos, teclados y ratones, cuya comunicacin es unidireccional y poco
frecuente.
Masiva. Son transferencias no peridicas que precisan de todo el ancho de
banda disponible. Utilizadas por las impresoras y los scanners.
Iscrona. Dedicadas a las transferencias de telecomunicaciones, como voz
o vdeo, que garantiza unas tasas de transferencia constantes. Se
caracterizan porque el nmero de pulsos de reloj que transcurren entre la
transmisin de dos caracteres es constante, por lo tanto, se est enviando
informacin constantemente entre el host y el dispositivo. [11, 12]




PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
12
1.4.2.1 Conceptos bsicos.
Para comprender las comunicaciones USB tenemos que conocer los siguientes
conceptos bsicos:

HC Controller (HC), que es el encargado de desencadenar todas las
comunicaciones.

Funcin que se define como una utilidad exclusiva de las que dispone un
perifrico. As pues, un componente o perifrico puede tener una o varias
funciones. Por ejemplo un teclado tiene una funcin para comunicar la tecla
pulsada y una diferente para iluminar el led indicando la seleccin de
maysculas u otras selecciones.

Hub que es un componente destinado a encadenar puertos de salida para
otros componentes que pueden ser ms perifricos u otros hubs. stos han
de tener los componentes necesarios para realizar funciones tales como
identificarse, transmitir rdenes o alimentar otros componentes, entre otras.
Algunas veces se puede distinguir entre componente y perifrico, as por
ejemplo un componente puede estar formado por un perifrico y se le
pueden incluir funciones de Hub, lo cual a nivel de USB se le otorgaran dos
direcciones diferentes.

Endpoint se podra definir como destino. ste, como dice su propia
traduccin, es el final y origen de toda comunicacin en el bus. Cada
dispositivo dispone de un mnimo de un endpoint de control ms los que
sean necesarios para la propia finalidad de la aplicacin.

Finalmente aclararemos el concepto de puerto en este contexto. Hasta ahora
relacionbamos el trmino puerto con una direccin (sentido) especfica con
su direccin, forma y camino exclusivo para la informacin. No obstante en
el entorno del USB, cada perifrico est situado en un puerto exclusivo pero
a diferencia del anterior solo tenemos el HC (HC Controller) con una
direccin de memoria, lo que implica que todos los perifricos, a pesar de
tener su conexin y cables propios, comparten el tiempo y espacio en
memoria de comunicacin y slo uno de los perifricos o el HC puede
enviar informacin en cada instante.

1.4.2.2 Proceso de deteccin y enumeracin del dispositivo.
Cuando se conecta un dispositivo al Hub USB, el Host Controller (HC) designa una
direccin para el perifrico y le reclama informacin para saber ms sobre este sistema.
Todas las transmisiones se realizan en 1 milisegundo, esto quiere decir que en este
espacio todos los perifricos tienen un margen asignado por el HC para recibir y enviar
informacin. Durante el proceso de enumeracin cada perifrico informa al HC del ancho
de banda que necesita para comunicaciones con ancho de banda garantizado (como pueden
ser equipos de msica que necesiten recibir informacin de forma continuada y de forma
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
13
ininterrumpida). Si el ancho de banda que requiere el perifrico no est disponible para la
saturacin del sistema se deniega al perifrico el uso del bus. Es entonces cuando el driver
puede pedir un ancho de banda inferior o esperar que ste est disponible para poder
funcionar.
Otra responsabilidad del HC consiste en controlar la informacin para poder
determinar si han habido errores en la comunicacin. De esta manera puede aadir
informacin para que sta sea enviada de forma redundante o bien enviar bits para
controlar errores. En caso que existan errores, se procede al reenvo de la informacin. De
todas maneras existe la posibilidad de enviar informacin evitando que sta se vea
sometida a controles de paridad o de errores de forma que se garantice una cantidad de
datos transmitidos cuando no es necesario o no se puede perder tiempo en mirar si existen
errores.
Tambin es trabajo del HC detectar cuando un perifrico tiene problemas en la
recepcin o transmisin de informacin, en este caso avisa al driver que a la vez avisa a la
aplicacin que tendr que tomar las medidas correspondientes para solucionar el problema.
Finalmente destacaremos como una ltima funcin del HC alimentar los perifricos
siempre que stos lo pidan y que cumplan unas condiciones (consumo mximo limitado,
posibilidad de entrar en estado de Suspensin reduciendo al mnimo el consumo pero con
atencin al canal de comunicaciones para despertar cuando sea necesario).
Un perifrico nunca puede comenzar una comunicacin de forma espontnea con el
HC, de esta manera ha de esperar y responder a peticiones por parte de ste, ya sea por
polling o por respuesta a peticiones.
El controlador USB o interfaz que incorpora cada perifrico controla en gran parte
las comunicaciones con el HC, de todas maneras dependiendo de este controlador veremos
hasta qu punto tenemos que programar en el dispositivo esclavo de la interfaz parte de las
respuestas.
Cada perifrico controla en todo momento las comunicaciones que se realizan en el
sistema, y ste tiene que estar preparado para responder cuando la direccin a la que est
dirigida la comunicacin sea la que tiene asignada como propia, que ha determinado el HC
con anterioridad.
Al igual que el HC enva bits de paridad, el perifrico tiene que tomar las medidas
pertinentes cuando detecta un error que en su caso equivale a validar la informacin o
ignorarla cuando detecte un error.
Si el perifrico est alimentado por el propio bus, ha de cumplir unas condiciones
necesarias para respetar las limitaciones de ste. Estas limitaciones son consumir no ms
de 500 mA en funcionamiento estndar, no consumir ms de 100 mA durante el proceso de
enumeracin o consumir un mximo de entre 0.5 i 2.5 mA dependiendo de la
configuracin en estado de StandBy.
Si consideramos un driver como un programa de software especfico que utilizamos
para comunicarnos con un dispositivo de hardware, lo primero que tenemos que hacer es
especificar cual es el driver que nuestro perifrico utilizar para relacionarse con el sistema
y en concreto con nuestra aplicacin.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
14
Lo que el sistema operativo debe hacer es detectar e instalar el Hardware DD o
Device Driver. ste podra ser creado especficamente para un perifrico en cuestin como
en nuestro caso, que se utilizarn los drivers realizados por Microchip para los
microcontroladores PIC con USB 2.0.
Los pasos a seguir son los siguientes: en primer lugar conectaremos el dispositivo,
Windows en este punto comienza automticamente el proceso de enumeracin a partir del
cual, y una vez obtenidas las tablas descriptoras del dispositivo, las compara con los
archivos de descripciones *.INF de donde obtiene los drivers necesarios que pueda
necesitar cada uno de los dispositivos que componen la base de datos de histricos con
dispositivos conectados con anterioridad.

Grficamente los estados por los que pasa el perifrico son representados en el
grfico que vemos a continuacin. Destacaremos que por definicin del estndar, cualquier
dispositivo que, configurado o no, no detecte actividad en el bus durante un periodo de 3
ms ha de pasar a la posicin de suspensin.

Figura 1.9 Diagrama de estados del perifrico.
Queda reflejado en el grfico anterior las situaciones que pueden hacer que un
dispositivo pase de un estado a otro.

1. El primer paso consiste en conectar el dispositivo al puerto USB, al encontrarse
conectado y por el hecho de tener el Hub configurado, el dispositivo pasa
directamente al estado de alimentado.

2. En este momento el Hub al cual se haya conectado el perifrico detecta la presencia
de un perifrico y su velocidad de comunicacin (alta velocidad 12 Mbs o baja
velocidad 1.5 Mbs). Fsicamente el Hub dispone de dos resistencias entre las dos
lneas de datos y masa mientras que el dispositivo tiene una entre la lnea de
alimentacin y una de las lneas de datos.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
15
Si sta es la D+se trata de un dispositivo de alta velocidad mientras que si sta est
conectada a la lnea de datos D- se trata de un dispositivo de baja velocidad. El Hub
es responsable de hacer llegar la novedad de que un perifrico se acaba de conectar
al HC. En este momento el perifrico an no est en condiciones de recibir
informacin.

3. A partir de este momento el HC sabe que alguna cosa pasa en uno de los Hubs y
enva el comando Get_Port_Status para determinar qu ha pasado en el puerto en
concreto, de esta manera ahora es el HC que ya tiene conocimiento de la anexin de
un nuevo perifrico.

4. Lo que hace despus el HC es ordenar al Hub que haga un reset al perifrico con la
instruccin propia de los Hubs, Set_Port_Feature, exclusiva para uno de los
puertos en concreto de los que disponga el Hub. De esta manera otros perifricos
que puedan estar conectados en el mismo Hub no tienen conocimiento de lo que
pasa en el otro puerto.

5. Al finalizar este reset nuestro perifrico se encuentra en el estado Defecto o Default
State. En este momento el perifrico no puede consumir ms de 100 mA, es el
nico de los perifricos que en este momento puede responder a las instrucciones
que el HC enva a la direccin por defecto que es la 0H y tiene establecido un canal
o pipe de comunicacin con el Endpoint 0 (nombramos Endpoint0 al conjunto
formado por el Endpoint 0 In y el Endpoint 0 Out). A partir de este momento el
dispositivo est en condiciones de responder a los comandos de control.

6. En alguno de estos momentos, antes o despus del Reset, siempre dependiendo de
cada Hub, se detecta la velocidad del perifrico, pero no es hasta este momento que
el HC recibe esta informacin a travs del comando Get_Port_Status.

7. A continuacin el HC se pone en contacto con el perifrico con la instruccin de
control Get_Descriptor. Esta instruccin se dirige a la direccin 0 Endpoint 0.

Slo un perifrico puede responder ya que solo un perifrico se puede numerar cada
vez (el HC es responsable que as sea). El perifrico responde con una de las tablas
de que dispone en la memoria del dispositivo, el cual describe entre otras cosas la
capacidad mxima del Endpoint 0.

8. El siguiente paso que realiza el HC es asignar una direccin que ser nica para
nuestro perifrico mediante el comando de control Set_Address. Esta direccin
puede variar cada vez que el perifrico se conecta, pero una vez conectado y
numerado sta ser inalterable. Tenemos en este punto el perifrico Direccionado.

9. El HC a partir de este momento enva otra vez el comando de control
Get_Descriptor a la nueva direccin asignada al perifrico con la finalidad de
comprobar que ste est donde debera estar y compara la respuesta obtenida con la
obtenida en el paso 7 para verificar que es el mismo dispositivo. Una vez verificado
el correcto funcionamiento hasta este punto se solicita el resto de informacin de
los descriptores o tablas que almacena el dispositivo. Esto incluye informacin
sobre Endpoints, posibles configuraciones, consumo, fabricante y tambin la clase
a la que pertenece el dispositivo.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
16

10. A partir de la informacin obtenida de los descriptores del perifrico y comparando
el fabricante, producto y clase a la que pertenece ste, el sistema compara la
informacin con la almacenada en los archivos de sistema .INF comentados
anteriormente y selecciona en este momento el driver a cargar para las
comunicaciones. Finalizando en este momento el proceso de numeracin y dejando
el dispositivo listo para ser utilizado por las aplicaciones que se puedan ejecutar en
el ordenador.

Son finalmente estos drivers los que seleccionan alguna de las configuraciones
posibles, si es que ms de una est disponible basndose en disponibilidad del sistema,
eleccin del propio usuario u otros. A partir de este momento el proceso finaliza y ya
tenemos el perifrico configurado y listo para funcionar y responder a las peticiones para
enviar y recibir informacin que hagan las aplicaciones del usuario.


1.5 Comunicaciones mviles GSM.
1.5.1 Antecedentes.
Actualmente en Espaa existe un ndice de penetracin de la telefona mvil de un
100%. Este ndice no indica un valor real de usuarios, puesto que se contabilizan las lneas
de prepago y las de uso ocasional, pero s nos indica que realmente el uso del telfono
mvil est muy extendido. Adems, el 98% del territorio poblado espaol cuenta con
cobertura GSM. Teniendo en cuenta el fcil manejo, el bajo coste y el gran nmero de
usuarios de telfonos mviles, se hace idneo para un proyecto de control y/o supervisin a
distancia. [13, 14]

1.5.2 Red GSM.
El sistema GSM es el sistema de comunicacin de mviles digital de 2 generacin
basado en clulas de radio. Apareci para dar respuestas a los problemas de los sistemas
analgicos.
Fue diseado para la transmisin de voz por lo que se basa en la conmutacin de
circuitos, aspecto en el que se diferencia del sistema GPRS. Al realizar la transmisin
mediante conmutacin de circuitos los recursos quedan ocupados durante toda la
comunicacin y la tarificacin es por tiempo.

1.5.2.1 Arquitectura de una red GSM.
Todas las redes GSM se pueden dividir en cuatro partes fundamentales y bien
diferenciadas:
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
17

1. La Estacin Mvil o Mobile Station (MS): Consta a su vez de dos elementos
bsicos que debemos conocer, por un lado el terminal o equipo mvil y por otro
lado la tarjeta SIM. La diferencia que existe entre unos terminales y otros radica
fundamentalmente en la potencia que tienen que va desde los 20 W (generalmente
instalados en vehculos) hasta los 2 W de los telfonos comunes.

Una tarjeta SIM (acrnimo de Subscriber Identity Module, Mdulo de
Identificacin del Suscriptor) es una tarjeta inteligente desmontable usada en
telfonos mviles que almacena de forma segura la clave de servicio del suscriptor
usada para identificarse ante la red, de forma que sea posible cambiar la lnea de un
terminal a otro simplemente cambiando la tarjeta.


2. El Subsistema de Conmutacin y Red o Network and Switching Subsystem (NSS):
Este sistema se encarga de administrar las comunicaciones que se realizan entre los
diferentes usuarios de la red.


3. La Estacin Base o Base Station Subsystem (BSS): Sirve para conectar a las
estaciones mviles con los NSS, adems de ser los encargados de la transmisin y
recepcin. Como los MS tambin constan de dos elementos diferenciados: La Base
Transceiver Station (BTS) o Base Station y la Base Station Controller (BSC). La
BTS consta de transceivers y antenas usadas en cada clula de la red y que suelen
estar situadas en el centro de la clula, generalmente su potencia de transmisin
determinan el tamao de la clula.


4. Los Subsistemas de soporte y Operacin o Operation and Support Subsystem
(OSS): Los OSS se conectan a diferentes NSS y BSC para controlar y monitorizar
toda la red GSM. La tendencia actual en estos sistemas es que, dado que el nmero
de BSS se est incrementando se pretende delegar funciones que actualmente se
encarga de hacerlas el subsistema OSS en los BTS de modo que se reduzcan los
costes de mantenimiento del sistema.

1.5.2.2 Transmisin de datos por GSM.
Las redes GSM tienen ciertas limitaciones para la transmisin de datos:

Velocidad de transferencia de 9,6 Kbps.
Tiempo de establecimiento de conexin, de 15 a 30 segundos.
Pago por tiempo de conexin.
Problemas para mantener la conectividad en itinerancia (Roaming).

Las tradicionales redes GSM no se adaptan adecuadamente a las necesidades de
transmisin de datos con terminales mviles. Por ello surge una nueva tecnologa
portadora denominada GPRS (General Packet Radio Service) que unifica el protocolo de
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
18
internet IP con la telefona mvil, crendose toda una red paralela a la red GSM y
orientada exclusivamente a la transmisin de datos.
Al sistema GPRS se le conoce tambin como GSM-IP ya que usa la tecnologa IP
(Internet Protocol) para acceder directamente a los proveedores de contenidos de Internet.
Debido al pequeo volumen de informacin que debemos enviar, que ser inferior a
100 caracteres, y a que los envos se producirn en ocasiones puntuales, cuando el usuario
presione alguno de los pulsadores del dispositivo, se utilizar la tecnologa GSM mediante
los mensajes cortos SMS.
En el caso de necesitar enviar un volumen ms grande y continuo, la solucin
adecuada sera usar la tecnologa GPRS, facturando por datos enviados y no por mensaje
enviado.

1.5.3 Servicio de Mensajes Cortos SMS.
1.5.3.1 Introduccin al SMS.
El servicio de mensajes cortos SMS (Short Message Service) permite enviar o
recibir mensajes breves de texto (mximo de 160 caracteres), desde un telfono GSM o
Centro de Informacin a otro telfono GSM. Los mensajes sern visualizados directamente
en la pantalla del telfono o del dispositivo que se encuentre conectado al mdem GSM. Al
recibir el mensaje, adems del texto, se obtiene una serie de datos como es el remitente, la
hora y la fecha de recepcin.
Para el envo de un SMS, es necesario que el dispositivo GSM tenga configurado el
nmero telefnico del Centro de Mensajes propio del operador. Por defecto el mdem
utiliza el nmero que viene almacenado en la propia tarjeta SIM. Se deber redactar el
texto a enviar y finalmente se deber introducir el nmero telefnico del destinatario. Una
vez enviado, el SMS es transmitido desde la red hacia el telfono destino. Si ste
permanece apagado o fuera de cobertura, la red reintentar enviar el mensaje durante 48
horas, superadas las cuales ste ya no se entregar. En ocasiones el mensaje enviado no es
recibido por el destinatario debido a que su buzn de entrada se encuentra saturado, por eso
es importante controlar que no se llene el buzn del telfono.

1.5.3.2 Funcionamiento del sistema SMS.
En el standard GSM hay especificados dos tipos diferentes de SMS:

SMS Point to Point (SMS/PP)
SMS Cell Broadcast (SMS/CB)
El primer tipo permite enviar un mensaje de texto de un telfono GSM a otro,
mientras que el tipo SMS/CB permite enviar uno o ms mensajes simultneamente
(broadcast) a todos los telfonos que estn dentro de una determinada zona de cobertura de
uno o ms emisores de seal de radio.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
19
El SMS usa un protocolo sin conexin, ya que cuando se transmite un mensaje no
se produce ninguna conexin directa entre el terminal que enva y el que recibe, como
sucede, por ejemplo, en el caso de las llamadas de voz, datos o fax.
El envo de un SMS/PP desde un telfono GSM a otro, tiene que ser considerado
como la concatenacin de dos operaciones diferentes: la transmisin del mensaje desde el
telfono mvil a una entidad especial de la red, llamada SMSC (Short Message Service
Center), y luego desde el SMSC hasta el telfono receptor. La primera operacin se
denomina SMS-MO (SMS Mobile Originated), mientras que la segunda se conoce como
SMS-MT (SMS Mobile Terminated).
Los mensajes de texto SMS pueden ser de dos formatos diferentes, uno es el modo
texto y el otro es como datos binarios a 8 bits (modo PDU).
Utilizando la transmisin binaria, el telfono ya no visualizar ningn mensaje en la
pantalla y se harn necesarios un hardware y una aplicacin software capaces de saber leer
las informaciones binarias. De esta forma es posible introducir fcilmente una compresin
de datos para aumentar la capacidad de cada uno de los mensajes breves o aprovechar este
tipo de transmisin para otras aplicaciones. La capacidad mxima con los datos a 8 bit es
de 140 bytes (1120 bit), pero utilizando los mensajes normales de texto (codificacin a 7
bit), la capacidad mxima posible, es de 160 caracteres (7 x 160 =1120).
Dado que el SMS es un protocolo sin conexin, porque el terminal transmisor y el
receptor no estn conectados directamente como sucede durante una llamada, el tiempo
que transcurre entre la transmisin del mensaje desde un terminal mvil y la recepcin del
mismo por parte de otro terminal no es estndar.
El envo de un mensaje entre un telfono y el SMSC, sin importar en qu direccin
se realiza, emplea un tiempo de 3 a 5 segundos. Dado que el envo de un mensaje de un
telfono a otro es la concatenacin de dos operaciones de transmisin, el retraso total
alcanza de los 6 a los 10 segundos. En la prctica, sin embargo, el retraso puede ser
notablemente superior. De hecho, los mensajes SMS son transmitidos a travs de canales
de control, y la velocidad de transferencia de los mensajes se ve considerablemente
influida por el trfico generado por todas las dems seales que comparten el mismo canal
de control, como, por ejemplo, informaciones relativas a la radioconexin, control de la
potencia, actualizacin de la posicin, etc.

1.6 Comandos AT.
1.6.1 Introduccin.
El control del mdem GSM a travs del microcontrolador se basa en el uso de
comandos denominados Hayes o AT, de los que exponemos brevemente algunas
referencias.
Hayes es el nombre de una empresa que en los orgenes de la comunicacin por
mdem defini una serie de comandos u rdenes para que el software de comunicaciones
pudiera comunicarse con el mdem, pudiendo controlar este ltimo.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
20
Estos comandos tuvieron tanto xito que se convirtieron en el virtual estndar de
comunicaciones, y los mdems que los comprenden (la mayora de los mdems modernos)
se denominan compatibles Hayes.
Todos los comandos de este protocolo comienzan por AT y acaban por el carcter
<CR>(ascii 13) (aunque este ltimo carcter es configurable).
Las respuestas del mdem tienen el siguiente formato:
<CR><LF>(texto respuesta)<CR><LF>. En adelante solo mostraremos el texto de
la respuesta, obviando los caracteres <CR>y <LF>.

1.6.2 Tipos de Comandos AT.
Existen dos tipos principales de comandos:
Comandos que ejecutan acciones inmediatas (ATD marcacin, ATA contestacin o
ATH desconexin)

Comandos que cambian algn parmetro del mdem (ATS2=43 configuracin del
carcter de escape).

1.6.3 Listado de comandos utilizados.
A continuacin presentamos un listado de comandos AT utilizados en este proyecto
as como las respuestas que retorna el mdem al recibir dichos comandos.
El listado completo de comandos AT soportados por el MODEM Siemens TC35i lo
podremos encontrar en el TC35i_AT_Command_Set, disponible en la web del
fabricante.
1.6.3.1 Configuracin comunicacin serie.
Para comprobar que el MODEM responde y adems configurarlo a 9600 baudios,
se utiliza el comando AT+IPR.
Se enva AT+IPR=9600<cr> y se recibe un OK .
1.6.3.2 Cdigos de acceso.
Para consultar o introducir el cdigo de acceso, se utiliza el comando AT+CPIN.
Primero debe consultarse el estado del cdigo de acceso, enviamos AT+CPIN? y
podemos recibir las siguientes respuestas:
+CPIN: SIM PIN: se requiere el cdigo PIN.
+CPIN: READY: el PIN ya se ha introducido con anterioridad.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
21
+CPIN: SIM PUK: se requiere el cdigo de desbloqueo PUK.
En todos los casos, se recibe un OK a continuacin.
Se envia AT+CPIN=1234 y se recibe un OK o un ERROR dependiendo si es
correcto o no.

1.6.3.3 Lectura del Nmero del Centro de Mensajes.
El comando AT+CSCA? solicita al mdem el nmero de telfono del Centro de
Mensajes. Responde con la siguiente trama:
+CSCA: "+34656000311",145 seguido de un OK.
Este parmetro no lo necesitamos para el funcionamiento del dispositivo,
simplemente lo leemos para almacenarlo en la memoria de datos del PIC y mostrarlo en la
casilla correspondiente del software.

1.6.3.4 Configuracin tipo SMS.
El comando AT+CMGF configura el tipo de SMS que se va a manejar. Hay dos
opciones, modo TEXT y modo PDU. El modo PDU codifica el mensaje recibido, creando
una trama ilegible directamente. Por ello, para facilitar la tarea, lo configuramos en Text
Mode.
Se enva AT+CMGF=1 y se recibe un OK.

1.6.3.5 Configuracin aviso SMS.
Para que el mdem enve un mensaje cuando reciba un nuevo SMS, debemos
configurarlo con el comando AT+CNMI.
Se enva AT+CNMI=3,1,0,0 y se recibe un OK.
Donde 3 es el valor que permite la recepcin de un aviso sin solicitarlo, el 1
solicita que se enve adems la posicin en memoria donde se ha almacenado el mensaje
recibido y los dos 0 corresponden a funciones que no vamos a manejar.
Al recibir un nuevo SMS, la trama que nos enva el mdem es la siguiente:
+CMTI: "SM",1, donde SM indica que el mensaje se ha almacenado en la
memoria de la tarjeta SIM y el 1 indica que en la primera posicin.
1.6.3.6 Borrado de SMS.
Cada vez que se recibe y se trata un SMS, ste es borrado con el fin de asegurar que
cualquier SMS recibido tenga sitio en la memoria para ser almacenado.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
22
El comando utilizado es AT+CGMD, y se utiliza as.
Se enva AT+CMGD=1 para borrar el mensaje 1 de la memoria y se recibe un OK.

1.6.3.7 Envo de SMS.
Para el envo de mensajes SMS el procedimiento a seguir es algo ms complejo. El
comando a usar es AT+CMGS, a continuacin explicamos su funcionamiento con un
ejemplo prctico:
Enviamos AT+CMGS=+34666777888,145, donde +34666777888 es el
nmero del telfono mvil destinatario y 145 indica que el nmero de telfono lo
insertamos en formato internacional, con prefijo.
Una vez se ha enviado el comando, el mdem responde con un carcter > que nos
indica que ya podemos introducir el cuerpo del mensaje. Una vez se haya introducido el
texto que se quiere enviar, se debe finalizar el texto con Ctrl-Z, que es el carcter ascii 26.
El mdem responder con la posicin donde se ha almacenado el mensaje enviado
+CMGS: 1 seguido de un OK.
Todo el proceso quedara de la siguiente forma:
AT+CMGS=+34666777888,145
>
mensaje de prueba<ctrl-z>
+CMGS: 1
OK

1.6.3.8 Lectura de SMS recibido.
Como se ha comentado anteriormente, cuando el mdem recibe un nuevo mensaje
SMS nos enva un aviso como este:
+CMTI: "SM",1, donde SM indica que el mensaje se ha almacenado en la
memoria de la tarjeta SIM y el 1 indica que en la primera posicin.
Una vez sabemos la posicin en la que se ha almacenado el SMS, en el caso del
ejemplo la 1, procedemos a enviar el comando AT de lectura AT+CMGR.
Se enva AT+CMGR=1 y se recibe la siguiente cadena:
+CMGR: "REC UNREAD","+34666777888",,"15/05/08,09:04:44+08"
Texto del mensaje
OK

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
23
De la respuesta obtenida, slo haremos uso del cuerpo del mensaje, no utilizaremos
ni el telfono del remitente ni la fecha ni la hora del envo. Solo almacenaremos el texto
del mensaje para su posterior tratamiento.

1.7 Pseudocomandos de comunicacin entre PC y microcontrolador.
Para enviar los parmetros necesarios al dispositivo, al igual que para recibirlos
para visualizarlos y modificarlos si es necesario, debemos crear unos comandos que
entiendan el software del PC y el firmware del microcontrolador PIC.
1.7.1 Envo de datos.
Los pseudocomandos para el envo de datos tienen el siguiente formato:
[valor funcin][dgitos parmetro a enviar][parmetro a enviar]
Donde:
[valor funcin] puede ser:
1 =Envo de cdigo PIN.
2 =Envo de nmero de telfono del destinatario 1.
3 =Envo de nmero de telfono del destinatario 2.
[dgitos parmetro a enviar] puede ser:
4, para el cdigo PIN.
9, para cada uno de los nmeros de telfono destinatarios, (se manejan
mviles nacionales)
Por ejemplo, para enviar el cdigo PIN 1234, el pseudocomando necesario es: 141234

1.7.2 Solicitud de datos.
Los pseudocomandos para la peticin de datos al dispositivo, para mostrarlos en la
ventana del software tienen el siguiente formato:
[valor funcin]
Donde:
[valor funcin] puede ser:
5 =Solicitud de cdigo PIN.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
24
6 =Solicitud del nmero de telfono del Centro de Mensajes.
7 =Solicitud del nmero de telfono del destinatario 1.
8 =Solicitud del nmero de telfono del destinatario 2.
91 =Solicitud del texto del SMS 1.
92 =Solicitud del texto del SMS 2.
93 =Solicitud del texto del SMS Consigna.
Cuando el PIC recibe como primer dato un 9, entiende que se est solicitando un
dato relativo a los SMS y vuelve a leer el siguiente byte para determinar qu mensaje se
est solicitando.
El carcter 4 como valor de funcin no se utiliza, se reserva para futuras
aplicaciones.

1.8 Mapa de direcciones de los datos almacenados en EEPROM.
En la memoria EEPROM interna del PIC es donde se almacenan los datos que
necesitamos para configurar y manejar el mdem GSM.
La capacidad de la memoria es de 256 bytes, y en todas las posiciones de sta se lee
por defecto un 0xFF.
La organizacin de la memoria es, en bytes, la siguiente:

Bytes
(inicio-fin)
Valor
0-3 Cdigo PIN
4-12
Nmero de telfono del
Centro de Mensajes
13-21
Nmero de telfono del
Destinatario 1
22-30
Nmero de telfono del
Destinatario 2
31-132 Texto del SMS 1
133-232 Texto del SMS 1
233-237 Texto del SMS Consigna
Tabla 1.1 Direcciones de los valores almacenados.
Se observa que las ltimas posiciones de la memoria (hasta la 255) estn libres, se
reservan por si fuera necesario ampliar el contenido del SMS Consigna.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
25
1.9 Descripcin General del Equipo.
1.9.1 Esquema global.
El presente proyecto consiste en el diseo y montaje de un circuito que controle un
MODEM GSM mediante un microcontrolador para que se enven mensajes cortos SMS a
unos destinatarios fijados por el usuario y, por otro lado, responda mediante unas acciones
preprogramadas al recibir un SMS determinado.
El usuario realiza una funcin imprescindible para el funcionamiento del circuito,
ya que se deben introducir una serie de datos a la memoria EEPROM de datos del PIC a
travs del software del PC. Una vez han sido introducidos los datos, el circuito funciona de
manera independiente, llevando a cabo sus tareas sin ms apoyo del PC que la
alimentacin que recibe de ste a travs del puerto USB. El circuito se comunica con el
MODEM mediante RS-232, va por la cual se transmiten los comandos AT, explicados
ms adelante.
Para un uso supervisor, se ha diseado una conexin RS-232 entre el circuito y el
PC, a travs de la que se vern reflejadas las comunicaciones serie que existan entre
circuito y MODEM.
A continuacin se muestra el esquema global de conexionado, mostrando en un
tono ms claro, la conexin opcional de supervisin.


Figura 1.10 Esquema global del conexionado.

Esta conexin de supervisin sirve para monitorizar las comunicaciones entre el
microcontrolador y el mdem. Ha sido imprescindible para la programacin del firmware y
es una opcin interesante para visualizar el funcionamiento del sistema desde el software
en su versin SUPERVISOR.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
26
1.9.2 Composicin del sistema.
1.9.2.1 Circuito del microcontrolador PIC.
A continuacin se muestra el esquema electrnico del circuito.

Figura 1.11 Esquema electrnico del circuito.
1.9.2.2 Comunicacin entre circuito y PC.
Los datos que el PIC necesita para la configuracin y el manejo del mdem GSM
los ha de introducir el usuario a travs del software diseado a tal efecto. Desde el
momento en que sean introducidos los datos, aunque se desconecte el circuito de la
alimentacin, al almacenarse los datos en la memoria EEPROM del PIC, el circuito
funcionar correctamente en posteriores encendidos. Adems, el PC mostrar los datos que
estn almacenados en la memoria EEPROM del PIC (si es el caso). Para transferir estos
datos lo haremos por el bus serie USB, aprovechando que el circuito est conectado a este
puerto del PC para su alimentacin.
Pese a transferir datos a muy baja velocidad, se ha implementado un handshaking
para asegurar la correcta lectura del dato desde el receptor. Este control de errores consiste
en devolver cada byte que se recibe, de tal manera que el emisor puede comprobar que el
dato se ha ledo correctamente y puede proceder al envo del siguiente.
1.9.2.3 Interfaz en el PC.
El software utilizado para interactuar con el usuario est creado con Visual C#de
Microsoft Visual Studio 2005. Visual C#es un lenguaje de programacin orientado a
objetos, con una sintaxis que se asemeja a la del C. Un factor importante es que se pueden
usar las funciones de las APIs suministradas por MICROCHIP.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
27
El aspecto visual del programa pretende ser simple e intuitivo, para que se pueda
utilizar sin apenas haber ledo el manual de usuario.

1.10 Especificaciones tcnicas.
1.10.1 Entorno PC.
El entorno en el cual se va a programar la aplicacin y donde posteriormente se
ejecutar, tiene las siguientes caractersticas:
El sistema operativo debe ser Windows con motor NT, se recomienda Microsoft
Windows XP.
Se debe disponer de las libreras estndar utilizadas por Visual C#, adems de la
versin 2.0.50727 de Microsoft .NET Framework, puesto que las funciones de
comunicacin serie vienen definidas en esta versin y no en anteriores.
La versin de los puertos USB debe ser la 2.0. En ordenadores antiguos que
solo manejen USB 1.0, las comunicaciones entre software y dispositivo no
funcionarn correctamente.

1.10.2 Alimentacin del circuito.
El circuito se alimentar del puerto USB del PC. ste suministra una tensin de 5V
y una corriente de hasta 500 mA, obteniendo una potencia mxima de 2.5W. Tal y como se
comprueba en la memoria de clculo, el circuito consume un pequeo porcentaje de la
intensidad mxima que ofrece el host USB.

1.10.3 Microcontrolador.
El microcontrolador elegido para este proyecto es el 18F2550 de Microchip, un
dispositivo de bajo consumo y de altas prestaciones que cuenta con conectividad USB.

Tensin de alimentacin: 5 V.
Corriente mxima de entrada: 250 mA.
Corriente mxima de salida por todos los pines: 200 mA.
Corriente mxima de entrada en un pin I/O: 25 mA.
Corriente mxima de salida en un pin I/O: 25 mA.
Temperatura ambiente Under bias: -40 C <T <+85 C
Temperatura de almacenamiento: -65 C <T <+150 C
Potencia disipada total: 1.0 W
Memoria FLASH: 32 kbytes
Memoria SRAM: 2048 bytes
Memoria EEPROM: 256 bytes
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
28
Dimensiones: 10,34 x 17,87 x 2,50 mm
Tipo de encapsulado: PDIP

1.11 Entorno de trabajo.
Una vez determinados los elementos que componen el sistema, se debe realizar la
programacin del firmware del microcontrolador y la grabacin del programa en la
memoria del PIC. Tambin se deber realiza la programacin del software del PC.
1.11.1 Programa del microcontrolador.
1.11.1.1 Compilador.
Los lenguajes ms extendidos son el ensamblador y el C. El lenguaje de
programacin elegido para este proyecto ha sido el C por su facilidad para la realizacin de
tareas complejas, simplificndolas notablemente. El inconveniente de este tipo de
programacin es el mayor nmero de instrucciones que genera en comparacin con el
ensamblador, aunque cada vez los compiladores de C estn mejor diseados y generan
cdigos similares en tamao a los desarrollados puramente en ASM.
Una vez determinado el lenguaje de programacin con el que se va a trabajar, en
este caso el C, el siguiente paso es seleccionar el compilador. Existen varios programas,
aunque los ms comunes son el C18 de Microchip y el PCWH de CCS. El compilador
elegido es el PCWH de CCS, por su facilidad de uso y el gran nmero de
microcontroladores que soporta.
A continuacin se detalla el procedimiento seguido para crear y compilar el cdigo.
Al ejecutar el software PCW C Compiler, en la pantalla principal, se crea un
nuevo archivo llamado Picmodem_07.C:
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
29

Figura 1.12 Vista del editor de cdigo.
Una vez se termin de escribir el cdigo, se procedi a la compilacin:

Figura 1.13 Vista del resultado de la compilacin.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
30
Durante la programacin del cdigo se fueron haciendo sucesivas compilaciones
para comprobar que no se estaban cometiendo errores, o para corregirlos. El compilador
PCWH indica la lnea donde se ha cometido un error facilitando as su modificacin.

1.11.1.2 Software de grabacin.
Una vez se ha compilado correctamente el cdigo creado con el software PCWH C
Compiler, se obtiene un archivo hexadecimal que es el que hay que grabar en el
microcontrolador.
El software de grabacin usado es el WinPIC800, debido a su gran difusin y su
libre distribucin a travs de internet. Este software admite gran variedad de
programadores por puerto serie, paralelo e incluso por puerto USB.


Figura 1.14 Software de grabacin WinPIC800.

En la anterior figura se observa la pantalla principal del software de grabacin con
el fichero .HEX cargado.
Al grabar el programa en el PIC, aparece una pantalla mostrando el progreso de la
programacin:

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
31

Figura 1.15 Grabacin finalizada.

1.11.1.3 Hardware de grabacin.
Para llevar a cabo la programacin del PIC, es necesario un hardware que sea
reconocido por el software de grabacin. En este caso usamos un programador clsico tipo
J DM modelo TE-20, que usa el puerto serie del PC.

Figura 1.16 Programador TE-20.

1.11.2 Programa del PC.
El lenguaje elegido es Visual C#2008 Express Edition de Microsoft, por su
facilidad de uso y el gran nmero de herramientas de ayuda que existen.
A continuacin se detalla el procedimiento seguido para crear y compilar el cdigo.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
32
Al ejecutar el software Visual C#2008 Express Edition, en la pantalla principal, se
crea un nuevo proyecto donde se irn agrupando todos los ficheros.
Se puede ejecutar el asistente para que nos facilite la tarea de crear el proyecto.

Figura 1.17 Vista del asistente para crear un nuevo proyecto.
Una vez se ha escrito el cdigo del programa y se ha diseado la interfaz grfica, se
proceder a la compilacin del proyecto. Si no ha habido ningn error, aparecer la interfaz
en pantalla y ya estar funcionando el software. En caso de haber cometido algn error,
Visual C#nos indicar en qu fichero y en qu lneas del cdigo est el fallo.

Figura 1.18 Vista del proyecto Picmodem de Visual C#.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
33
2 Memoria de Clculo.
2.1 Alimentacin requerida.
El circuito est compuesto por un microcontrolador, un circuito integrado
MAX232, dos LEDs y algunos componentes pasivos.
El circuito integrado MAX232 necesita una tensin dentro del rango de 4.5V y
5.5V. El microcontrolador abarca un mayor rango, desde 2V hasta 5.5V. La tensin
suministrada por el puerto serie es de 5V, valor ideal para nuestro diseo.
El mdem GSM se alimenta con su propio adaptador 220V AC 12V DC.

2.2 Corriente en los LED.
El circuito dispone de dos LED bicolor, cada led tiene tres patas, una para cada
color y una masa comn. Por lo tanto cada LED estar conectado a dos salidas del PIC.
La corriente que puede suministrar el microcontrolador a cada pin de entrada/salida
es de 25mA, por lo que se deber calcular una resistencia que proporcione un valor por
debajo de ste mximo.
Corriente LED 1: mA
k
V
I
LED
5
1
5
1
=

= (1)
Corriente LED 2: mA
k
V
I
LED
27 . 2
2 2
5
2
=

= (2)
Para obtener la misma luminosidad en ambos LEDs, se calcula una resistencia
mayor en el LED 2.
La corriente total a suministrar a los LED ser:
mA mA mA I I
LED LED
54 . 14 27 . 2 2 5 2 2 2
2 1
= + = + (3)

2.3 Corriente del dispositivo.
La corriente necesaria para el suministro del dispositivo ser la que consuma el
microcontrolador, el integrado MAX232 y los LED.
El microcontrolador tiene un consumo, en funcionamiento normal y a 5V, de entre
25 y 50 mA. Se deduce pues que el consumo mximo del microcontrolador ser el
equivalente a la suma de su consumo basal con el consumo de los LEDs, esto es un
consumo de 65mA aproximadamente.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
34
El otro componente relevante en el consumo total del circuito es el integrado
MAX232. Su consumo normal es de 22mA y el mximo es de 30mA.
Como se puede observar, en el caso ms desfavorable, el consumo que deber
suministrar el puerto USB del PC a nuestro dispositivo ser de 95mA.
La corriente que puede suministrar el host USB es de 500mA, por lo que le estamos
requiriendo un 20% de su capacidad.

2.4 Inicializacin del PIC.
Para la programacin del microcontrolador se utiliza el compilador de C CSS,
concretamente la versin 3.235 que incorpora bibliotecas para el uso de USB. Antes de
empezar a escribir nuestro programa hay que modificar algunas caractersticas de los
archivos que proporciona el compilador y que utilizaremos en el proyecto. Estos archivos
contienen la definicin de los registros y funciones USB.

Estos ficheros son:

18F2550.h: Fichero de cabecera estndar para dispositivos PIC18F2550.
pic18_usb.h: Capa hardware de los dispositivos PIC18Fxx5x.
USB.C: Manejador de peticiones USB estndar.
USB.H: Prototipos de funciones, definiciones y variables globales USB.

Al no ser el perifrico HID, habr que hacer un cambio en USB.H:

#ifndef USB_HID_DEVICE
#define USB_HID_DEVICE FALSE
#endif

Una vez hechas estas modificaciones, empezamos a desarrollar el programa que
ejecutar el microcontrolador. Lo primero ser establecer la palabra de configuracin
seleccionando las opciones adecuadas: oscilador en modo HSPLL con los valores de pre y
post-escala adecuados para obtener una frecuencia de 48 MHz en el mdulo USB,
habilitacin del regulador interno del mdulo USB y deshabilitacin del watchdog timer
que no vamos a utilizar en el proyecto. Por ltimo, para terminar con las definiciones, se
habilita el punto final 1 para que soporte transferencias de interrupcin de entrada.
Para configurar el microcontrolador desde el compilador, nos bastar con hacer uso
de los flags disponibles. A continuacin se muestran los flags utilizados y sus posibles
configuraciones:
NOPROTECT: Cdigo no protegido frente escritura. PROTECT
habilitara esta proteccin.

NOWDT: No Watch Dog Timer.
Configuraciones posibles:
o WDT1 Watch Dog Timer uses 1:1 Postscale
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
35
o WDT2 Watch Dog Timer uses 1:2 Postscale
o WDT4 Watch Dog Timer uses 1:4 Postscale
o WDT8 Watch Dog Timer uses 1:8 Postscale
o WDT16 Watch Dog Timer uses 1:16 Postscale
o WDT32 Watch Dog Timer uses 1:32 Postscale
o WDT64 Watch Dog Timer uses 1:64 Postscale
o WDT128 Watch Dog Timer uses 1:128 Postscale
o WDT Watch Dog Timer

NODEBUG: No modo Debug para ICD, DEBUG habilitara el uso
con ICD.

NOLVP: No Low Voltage Programming, LVP habilitara la
programacin a 5V.

HSPLL: High Speed Crystal/Resonator with PLL enabled
Configuraciones posibles:
o INTXT Internal Oscillator, XT used by USB
o INTHS Internal Oscillator, HS used by USB
o HS High speed Osc (>4mhz)

PLL3: Divide por 3 (entrada oscilador 12MHz)
Configuraciones posibles:
o PLL1 No PLL PreScaler
o PLL2 Divide por 2 (entrada oscilador 8MHz)
o PLL4 Divide por 4 (entrada oscilador 16MHz)
o PLL5 Divide por 5 (entrada oscilador 20MHz)
o PLL6 Divide por 6 (entrada oscilador 24MHz)
o PLL10 Divide por 10 (entrada oscilador 40MHz)
o PLL12 Divide por 12 (entrada oscilador 48MHz)

CPUDIV3: System Clock por 4
Configuraciones posibles:
o CPUDIV1 System Clock por 2
o CPUDIV2 System Clock por 3
o CPUDIV4 System Clock por 6

USBDIV USB Clock proveniente del PLL dividido por 2, la
otra opcin: NOUSBDIV: USB Clock proveniente del oscilador primario.

VREGEN USB regulador de tensin habilitado, NOVREGEN
deshabilita la regulacin.
Se ha creado tambin un fichero de cabecera (picUSB.h) que contiene los
descriptores del dispositivo USB siguiendo el esquema de la figura 28. Adems de estos se
han incluido dos descriptores de cadena que indican el fabricante del producto y su
descripcin.


PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
36
2.4.1 Configuracin del oscilador.
A continuacin se muestra el esquema del mdulo del oscilador indicando la fuente
utilizada (oscilador primario) y los valores que toman los distintos bits de estos registros
para conseguir, a partir de un cristal de 12 MHz, una velocidad en el mdulo USB de 48
MHz (USB 2.0).



Figura 2.1 Mdulo del oscilador.


En la figura anterior observamos los valores necesarios para conseguir las
frecuencias deseadas para el reloj del sistema y para el reloj del USB.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
37
2.4.2 Configuracin del mdulo USB.
El mdulo USB dispone de un regulador interno de 3,3 V para suministrar tensin
al transceiver interno. Esto se debe a que USB utiliza 3,3 V para las comunicaciones, por
lo tanto, mientras el resto del micro puede utilizar una alimentacin de 5 V, el transceiver
debe alimentarse de una fuente distinta (Vusb).
El regulador se controla a travs del flag VREGEN. Cuando est habilitado el
voltaje es visible en el pin Vusb. Si el regulador est deshabilitado, una tensin de 3,3 V
debe ser suministrada externamente a travs de Vusb. Hay que tener en cuenta que las
resistencias de pullup internas nicamente pueden utilizarse si el transceiver interno est
activo.



Figura 2.2 Regulador de tensin del mdulo USB.

2.5 Inicializacin del mdem GSM.
El mdem GSM, para comenzar a funcionar normalmente, necesita ser configurado
con una serie de parmetros.
Por defecto, el mdem GSM est configurado de la siguiente manera:
Autobaud
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
38
8 bits de datos
1 bit de stop
Sin paridad

En nuestro caso solo har falta modificar el parmetro autobaud fijndolo a 9600
bps.
Se necesitar introducir el cdigo de acceso PIN antes de poder realizar alguna
operacin con el mdem.
En el apartado 1.6.3 se detallan los comandos usados por el programa del PIC para
la inicializacin y normal funcionamiento del circuito.
Los comandos AT propios de la inicializacin son:
AT+IPR=9600
AT+CPIN=<pin>
AT+CMGF=1
AT+CNMI=3,1,0,0
AT+CMGD=1

























PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
39
3 Diseo del Hardware.
3.1 Alimentacin del sistema.
Como se ha comentado anteriormente, la alimentacin del dispositivo ser a travs
del bus USB, que suministra una tensin regulada de 5 V. En la siguiente figura se muestra
el conector USB tipo B utilizado. A continuacin, en la tabla, aparece la correspondencia
de los pines del conector.

Figura 3.1 Conector USB tipo B.

PIN Nombre Seal Color Cable
1 Vcc Rojo
2 Data - Blanco
3 Data + Verde
4 GND Negro
Tabla 3.1 Correspondencia pins conector USB.

Figura 3.2 Conexionado alimentacin USB al PIC.

3.2 Oscilador.
Como se ha comentado anteriormente, los microcontroladores de la familia 18F
utilizan dos fuentes de reloj. Para el mdulo USB se utiliza el oscilador primario, sin
embargo, el resto del micro puede utilizar cualquier otra fuente.
Dependiendo de si utilizamos USB de baja velocidad o de velocidad completa, la
seal de reloj del mdulo USB deber ser de 6 MHz o de 48 MHz, respectivamente.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
40
Pese a la poca velocidad necesaria, nuestro dispositivo trabajar a velocidad
completa, as que el reloj del mdulo USB deber ser de 48 MHz.
Se ha decidido usar la velocidad completa para tratar al circuito como un
dispositivo actual. De esta manera, si fyera necesario manejar un gran volumen de datos a
gran velocidad, solo sera necesario modificar el cdigo de los programas firmware y
software.
En la figura siguiente se muestran los modos posibles de funcionamiento del
oscilador del microcontrolador PIC:

Figura 3.3 Modos de funcionamiento del oscilador.
De los doce modos de funcionamiento del oscilador, slo los ocho primeros pueden
utilizarse para USB y de estos se ha optado por HSPLL, con un cristal de 12 MHz.
Necesitaremos el PLL para obtener, de los 12MHz del cristal oscilador, los 24MHz del
reloj del sistema. Al utilizar esta frecuencia el mdulo USB tendr un reloj de 48 MHz,
utilizando nicamente el oscilador primario.
En el apartado 2.4.1 se ha detallado como se han de configurar los flags para la
obtencin de las frecuencias de 24 y 48 MHz.
Segn el datasheet del microcontrolador, figura siguiente, los valores de los
condensadores que acompaan al cristal deben ser de entre 15 y 22 pF. Se instalan unos
condensadores de 15 pF.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
41

Tabla 3.2 Capacidades para el oscilador.


Figura 3.4 Conexin cristal oscilador.

3.3 Pulsadores.
El circuito utiliza tres pulsadores, uno pequeo para generar un RESET en el
sistema y dos pulsadores ms grandes para realizar el envo de mensajes SMS, uno para
cada uno de los dos destinatarios configurables posibles.

Figura 3.5 Pulsador de envo de SMS.

El esquema de conexionado del pulsador de RESET es el tpico para cualquier
microcontrolador PIC:

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
42

Figura 3.6 Conexin pulsador RESET.
Los pulsadores para el envo de mensajes SMS se han configurado de tal manera
que se detecte la pulsacin con un nivel bajo a la entrada de las patas RB3 y RB2.

Figura 3.7 Conexin pulsadores envo de SMS.

3.4 Diodos electroluminiscentes, LEDs.
La conexin de los dos LEDs de que dispone el circuito, se ha realizado a las patas
RB7, RB6, RB5 y RB4.
El nodo correspondiente al color verde del LED 1 se ha conectado a la pata RB7 y
el correspondiente al color rojo a la pata RB6.
En el LED 2 se ha conectado el nodo correspondiente al color verde a la pata RB4
y el correspondiente al color rojo a la pata RB5.
El LED 1 nos indicar el estado de la comunicacin con el MODEM, mientras que
el LED 2 nos indicar el estado de la conexin USB con el PC.


PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
43
4 Diseo del Firmware.
4.1 Diagramas del sistema.
Los diagramas de flujo son representaciones del flujo que siguen las instrucciones
de un programa y nos resultarn tiles para seguir la secuencia lgica de procesos
complejos, intercambiar entre estructuras de control, redireccionar el flujo, cambiar un
programa de un lenguaje a otro y esbozar fcilmente un procedimiento complejo.

4.1.1 Diagrama general.



















Figura 4.1 Diagrama general de funcionamiento.




INICIO
CONFIGURACIN
INTERRUPCIONES
USB
ENUMERADO?
NO SI
PROGRAMA
PRINCIPAL
MODEM
CONFIGURADO?
NO
SI
CONFIGURACIN
MODEM
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
44
INICIO
LECTURA BYTE 0
EEPROM
(1er carcter PIN)
LECTURA BYTE 13
EEPROM
(1er carcter DEST 1)
LECTURA BYTE 22
EEPROM
(1er carcter DEST 2)
LECTURA BYTE 31
EEPROM
(1er carcter SMS 1)
LECTURA BYTE 132
EEPROM
(1er carcter SMS 2)
LECTURA BYTE 233
EEPROM
(1er carcter SMSCON)
ESTOS BYTES
SON DISTINTOS
DE 0xFF?
PARAMETROS OK MEMORIA VACA
FIN
NO SI
4.1.2 Diagramas de manejo de datos
4.1.2.1 Diagrama de lectura de datos en memoria del PIC.



























Figura 4.2 Diagrama lectura EEPROM.



PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
45
4.1.2.2 Diagrama de lectura de datos enviados desde el PC.
































Figura 4.3 Diagrama de comando de envo de datos desde el PC.

RECEPCIN DE
COMANDO DE
ENVO DE DATOS
QU
COMANDO ES?
3
1
REBOTAR
BYTE
RECIBIDO
9
RECEPCIN 2
CARCTER
COMANDO
2
3
QU VALOR
ES? 1
2
REBOTAR BYTE
RECIBIDO
ENVO DE PIN
ENVO DE NUMERO
DE TELFONO DEL
DESTINATARIO 1
ENVO SMS 1
ENVO SMS 2
ENVO SMS
CONSIGNA
REBOTAR BYTE RECIBIDO
LEER BYTE DE DATOS
LECTURA DEL NUMERO DE CARACTERES
A RECIBIR
FIN
QUEDAN DATOS
POR RECIBIR?
i++
SI
NO
ENVO DE NUMERO
DE TELFONO DEL
DESTINATARIO 2
ALMACENAR EN MEMORIA
Escribir_eeprom(DIR+i)
REBOTAR BYTE RECIBIDO
REBOTAR
BYTE
RECIBIDO
LEER BYTE DE DATOS
ALMACENAR EN MEMORIA
Escribir_eeprom(DIR+i)
REBOTAR BYTE RECIBIDO
ES UN CARCTER
<CR>(13)?
i++
SI
NO
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
46
4.1.2.3 Diagrama de envo de datos hacia el PC.
































Figura 4.4 Diagrama de comando de peticin de datos.

RECEPCIN DE
COMANDO DE
SOLICITUD DE DATOS
QU
COMANDO ES?
7
5
REBOTAR BYTE
RECIBIDO
9
7
RECEPCIN 2
CARCTER
COMANDO
6 8
QU VALOR
ES? 5
6
REBOTAR BYTE
RECIBIDO
SOLICITUD DE PIN
SOLICITUD DE
NUMERO DE
CENTRO DE
MENSAJ ES
SOLICITUD DE
DESTINATARIO 1
SOLICITUD DE
DESTINATARIO 2
SOLICITUD SMS 1
SOLICITUD SMS 2
SOLICITUD SMS
CONSIGNA
ENVIAR BYTE DATO
LEER BYTE DEVUELTO
POR EL PC
LEER DATO MEMORIA
Leer_eeprom(DIR+i)
COINCIDE CON
EL ENVIADO?
FIN
NO QUEDAN DATOS
POR ENVIAR?
SI
i++
SI
NO
REBOTAR BYTE
RECIBIDO
LEER DATO MEMORIA
Leer_eeprom(DIR+i)
ES UN CARCTER
<CR>(13) O SE HAN
LEIDO TODOS LOS
CARACTERES?*
* 100 caracteres SMS1 y
SMS2.
5 caracteres SMS
consigna.
ENVIAR BYTE DATO
LEER BYTE DEVUELTO
POR EL PC
COINCIDE CON
EL ENVIADO?
SI
NO
SI
i++
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
47
INICIOCONFIGURACIN
ESCRIBIR PIN
AT+CPIN
LEER CENTRO DE
MENSAJ ES
AT+CSCA
ESTABLECER SMS
EN MODO TEXTO
AT+CMGF
RECIBIR AVISO
PARA NUEVOS SMS
RECIBIDOS
AT+CNMI
RECIBIR AVISO
PARA NUEVOS SMS
ENTRANTES
AT+CNMI
BORRAR PRIMER
MENSAJ E
AT+CMGD
FIN CONFIGURACIN
4.1.3 Diagramas de comunicacin con mdem.
4.1.3.1 Diagrama de configuracin del mdem.































Figura 4.5 Diagrama de configuracin del mdem.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
48
INICIO
ENVO DE
COMANDO
AT+IPR=9600
FIN
LECTURA DE LA
RESPUESTA DEL
MDEM
MODEM RESPONDE,
LED 1 COLOR AMBAR
MODEM NO RESPONDE,
LED 1 COLOR ROJ O
SI
NO
ESPERA DE 5
SEGUNDOS
ESPERA DE 5 00 ms
SE HA
RECIBIDO UN
OK?
HAN
PASADO 5
SEGS?
SI
NO
4.1.3.1.1 Diagrama de comando AT+IPR.
































Figura 4.6 Diagrama configuracin baudios.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
49
INICIO
ENVO DE COMANDO
AT+CPIN?
LEER
RESPUESTAS
MODEM
FIN
ENVO DE COMANDO
AT+CPIN=(PIN)
CPIN: SIM PUK
CPIN: SIM PIN
CPIN: READY
LECTURA CDIGO
PIN EN EEPROM
PIN=Leer_eeprom(DIR)
ESPERA DE 10
SEGUNDOS
ERROR, LED 1
COLOR ROJ O
PIN OK, LED 1
COLOR VERDE
SI
NO
LED 1 COLOR AMBAR
SE HA
RECIBIDO UN
OK?
HAN
PASADO 10
SEGS?
NO
SI
4.1.3.1.2 Diagrama de comando AT+CPIN.
































Figura 4.7 Diagrama de introduccin del cdigo PIN.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
50
INICIO
ENVO DE COMANDO
AT+CSCA?
FIN
NO
SI
GRABACIN CENTRO
SMS EN EEPROM
Escribir_eeprom(DIR)
ERROR, LED 1
COLOR ROJ O
SI
NO
LED 1 COLOR AMBAR
SE HA
RECIBIDO UN
OK?
HAN
PASADO 2
SEGS?
HAN
PASADO 5
SEGS?
SE HA
RECIBIDO EL
CSCA?
SI
NO
SI
NO
4.1.3.1.3 Diagrama de comando AT+CSCA.































Figura 4.8 Diagrama de lectura del Centro de Mensajes.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
51
INICIO
ENVO DE COMANDO
AT+CMGF=1
FIN
NO
ERROR, LED 1
COLOR ROJ O
SI
LED 1 COLOR VERDE
SE HA
RECIBIDO
UN OK?
HAN
PASADO 5
SEGS?
SI
NO
4.1.3.1.4 Diagrama de comando AT+CMGF.































Figura 4.9 Diagrama de configuracin SMS en modo texto.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
52
INICIO
ENVO DE COMANDO
AT+CNMI=3,1,0,0
FIN
NO
ERROR, LED 1
COLOR ROJ O
SI
LED 1 COLOR VERDE
SE HA
RECIBIDO
UN OK?
HAN
PASADO 5
SEGS?
SI
NO
4.1.3.1.5 Diagrama de comando AT+CNMI.
































Figura 4.10 Diagrama de configuracin aviso para SMS entrantes.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
53
INICIO
ENVO DE COMANDO
AT+CMGD=(INDICE)
FIN
NO
ERROR, LED 1
COLOR ROJ O
SI
LED 1 COLOR VERDE
ESPERA DE 1
SEGUNDO
SE HA
RECIBIDO
UN OK?
HAN
PASADO 5
SEGS?
NO
SI
4.1.3.1.6 Diagrama de comando AT+CMGD.
































Figura 4.11 Diagrama de borrado de mensajes en memoria.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
54
INICIO
FIN
NO
SI
LECTURA CARCTER
TEXTO SMS EN EEPROM
SMS=Leer_eeprom(DIR+i)
SE HA
RECIBIDO
UN OK?
ERROR, LED 1
COLOR ROJ O
SI
NO
LED 1 COLOR VERDE
LECTURA NMERO
DESTINATARIO EN
EEPROM
TELDEST=Leer_eeprom(DIR)
ENVO DE COMANDO
AT+CMGS=+34(TELDEST),145
SE HA RECIBIDO EL
SMBOLO >?
ENVIAMOS CARCTER
CTRL-Z (26)
ES UN CARCTER
<CR>(13) O SE HAN
LEIDO 100
CARACTERES?
i++
SI
NO
HAN
PASADO 15
SEGS?
SI
NO
4.1.3.2 Diagrama de envo de SMS, comando AT+CMGS.

































Figura 4.12 Diagrama de envo de mensajes SMS.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
55
INICIO
ENVO DE COMANDO
AT+CMGR=(INDICE)
FIN
NO
SI
LECTURA SMS CONSIGNA
EN EEPROM
Leer_eeprom(DIR)
SI
NO
HAN
PASADO 5
SEGS?
SE HA
RECIBIDO EL
TEXTO DEL
SMS?
SI
NO
SI
NO
COINCIDEN LOS 4
PRIMEROS
CARACTERES?
(CONTRASEA)
COINCIDE EL 5
CARACTER?
(VALOR)
SI
SECUENCIA LED 1:

APAGADO (500ms)
VERDE (500ms)
APAGADO (500ms)
AMBAR (500ms)
APAGADO (500ms)
ROJ O (500ms)
APAGADO (500ms)
SI ES UN
NMERO?
LED 1 PARPADEA EN
ROJ O n VECES.
NO
4.1.3.3 Diagrama de lectura de SMS, comando AT+CMGR.
































Figura 4.13 Diagrama de lectura de mensajes SMS.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
56
4.2 Programacin de la aplicacin del PIC.
4.2.1 Compilador y libreras.
El compilador utilizado para crear el programa en el PIC es el PCWH de la
compaa CCS.
En este apartado nos centramos en las libreras utilizadas para la correcta creacin
del programa.
Las libreras del programa del PIC son las siguientes:
18F2550.h : Librera con las direcciones de los pines del PIC 18F2550 y la
definicin de constantes esenciales para programar este microcontrolador.
pic18_usb.h : Librera que incluye las funciones y constantes necesarias para la
comunicacin USB con los microcontroladores de la familia 18Fxx5x.
PicModem.h : Librera con la configuracin del dispositivo USB y sus descriptores
que dan identidad personal al producto. Es el responsable de que salga el nombre
del producto por pantalla una vez conectado el lector al puerto USB.
usb.c : Otra librera con ms funciones generales sobre la comunicacin USB, esta
librera adems contiene la librera usb.h.

4.2.2 Funciones de la comunicacin USB.
Ahora detallamos las funciones necesarias para la comunicacin USB entre el PIC
y el PC.
Cada dispositivo USB est compuesto por unos puntos finales independientes y una
direccin nica asignada por el sistema en tiempo de conexin, de forma dinmica. A su
vez, cada punto final dispone de un identificador nico dentro del dispositivo (nmero de
endpoint) que viene asignado de fbrica, adems de una determinada orientacin del flujo
de datos. Cada punto final es por si solo una conexin simple, que soporta un flujo de datos
de entrada o de salida.
Un canal USB es una conexin lgica entre un punto final del perifrico y el
software del host, que permite intercambiar datos entre ellos. El canal que esta formado por
el punto final 0 se denomina canal de control por defecto. Este canal est siempre
disponible una vez se ha conectado el dispositivo y ha recibido un reset del bus. El resto de
canales aparecen despus de que se configure el dispositivo. El canal de control por
defecto es utilizado por el software USB del sistema para obtener la identificacin y para
configurar al perifrico.
De los diferentes endpoints que hay para establecer la comunicacin, se utiliza
siempre el endpoint0 (EP0) porque es el de control. Y para la transferencia de datos entre
el dispositivo y el host usaremos el endpoint 1, que es bidireccional y tiene tres modos de
comunicacin, el bulk, por interrupcin o iscrona. En nuestro caso, el modo de
comunicacin ms conveniente es el bulk, que nos permite hacer transferencias de
paquetes de datos de diferentes tamaos de una manera rpida.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
57
#def i ne USB_HI D_DEVI CE FALSE //deshabilitamos directivas HID

#def i ne USB_EP1_TX_ENABLE USB_ENABLE_BULK
//activa el EP1(EndPoint1) para transferencias de entrada bulk/interrupt

#def i ne USB_EP1_RX_ENABLE USB_ENABLE_BULK
//activa el EP1(EndPoint1) para transferencias de salida bulk/interrupt

#def i ne USB_EP1_TX_SI ZE 1
//tamao de informacin para reservar en el buffer de envo de datos del
endpoint 1(1 byte)

#def i ne USB_EP1_RX_SI ZE 1
//tamao de informacin para reservar en el buffer de recibir datos del
endpoint 1 (1 byte)

Las funciones para la inicializacin del dispositivo USB con el PC son las
siguientes:
usb_init(); Inicializa el stack USB, la periferia del USB y conecta la
unidad al bus USB. Tambin habilita las interrupciones, en general, inicializa el
USB.
usb_wait_for_enumeration(); Se mantiene en un bucle infinito hasta
que el dispositivo es enumerado.
usb_enumerated(); Esta funcin devuelve TRUE si el dispositivo ha sido
enumerado (configurado) por el HOST, y FALSE si no ha sido as. Se
recomienda no hacer uso de las funciones del USB hasta que no se haya
enumerado y configurado el dispositivo.
usb_kbhit(1); Devuelve TRUE si la salida (OUT) del endpoint contiene
datos del HOST, el 1 significa que se refiere al endpoint 1 (EP1).

Las funciones para el envo y recepcin de datos en el PC son las siguientes:
usb_get_packet(1, buffer, 1); Se coge el paquete de tamao 1 byte
del EP1 y se almacena en buffer.
usb_put_packet(1, buffer, 1, USB_DTS_TOGGLE); Se enva el
paquete de tamao 1 byte del EP1 almacenado en la variable buffer.












PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
58
5 Diseo del Software.
5.1 Programacin del software para el PC.
5.1.1 Compilador y libreras.
En este caso, el compilador utilizado para crear el programa en el PC es el Visual
C#2008 Express Edition, como se ha comentado con anterioridad.
Las libreras utilizadas han sido las propias del compilador, aunque para programar
la comunicacin USB, se han hecho servir funciones proporcionadas por MICROCHIP que
vienen en la libreria mpusbapi.dll. Las funciones utilizadas en el programa del PC se
pueden ver en el siguiente apartado, y el resto de las funciones y contenido de este archivo
se puede ver en los anexos.

5.1.2 Funciones comunicacin USB.
En el fichero del API llamado PicmodemAPI.cs, hay que definir el VID (Vendor
Identification) y el PID (Product Identification):
#r egi on Def i ni ci n de l os St r i ngs: EndPoi nt y VI D_PI D
st r i ng vi d_pi d_nor m= " vi d_04d8&pi d_0008" ; / / pi d_0008 por 08

Existen una serie de nmeros para uso personal, pero para realizar una aplicacin
real, los implementadores del USB te proporcionan unos valores nicos para tu producto,
despus de pasar una serie de pruebas para garantizar el correcto funcionamiento del
dispositivo USB, y as tu poder llevar el logo USB que garantice al consumidor que el
producto ha sido probado por USB-IF Inc (USB Implementers Forum Inc.).


Figura 5.1 Logotipos USB.
El perifrico que se va a desarrollar no pertenece a ninguna clase genrica, as que
habr que indicar el driver que se le quiere asignar. El driver que se utilizar ser un driver
USB de propsito general para Windows suministrado por Microchip (mchpusb.sys). Por
otro lado, Microchip proporciona un identificador de vendedor (0x04D8) que puede ser
utilizado en productos desarrollados con microcontroladores PIC. El identificador de
producto se ha definido como 0x0008, pero podra haberse elegido otro valor.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
59
Se ha de definir el endpoint por el que van a pasar los datos, que en este caso ser el
EP1:
st r i ng out _pi pe = " \ \ MCHP_EP1" ; / / de sal i da
st r i ng i n_pi pe = " \ \ MCHP_EP1" ; / / de ent r ada
#endr egi on

Una vez definida la ruta de paso de datos e identificado el producto, habr que
importar las funciones que necesitaremos para el proyecto. Estas funciones se importan de
la librera mpusbapi.dll y son las siguientes:

#r egi on
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]

pr i vat e st at i c ext er n DWORD _MPUSBGet DLLVer si on( ) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]

pr i vat e st at i c ext er n DWORD _MPUSBGet Devi ceCount ( st r i ng pVI D_PI D) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]

pr i vat e st at i c ext er n voi d* _MPUSBOpen( DWORD i nst ance, st r i ng
pVI D_PI D, st r i ng pEP, DWORD dwDi r , DWORD dwReser ved) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]

pr i vat e st at i c ext er n DWORD _MPUSBRead( voi d* handl e, voi d* pDat a,
DWORD dwLen, DWORD* pLengt h, DWORD dwMi l l i seconds) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]

pr i vat e st at i c ext er n DWORD _MPUSBWr i t e( voi d* handl e, voi d* pDat a,
DWORD dwLen, DWORD* pLengt h, DWORD dwMi l l i seconds) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]

pr i vat e st at i c ext er n DWORD _MPUSBReadI nt ( voi d* handl e, DWORD*
pDat a, DWORD dwLen, DWORD* pLengt h, DWORD dwMi l l i seconds) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]

pr i vat e st at i c ext er n bool _MPUSBCl ose( voi d* handl e) ;
#endr egi on

Estas funciones son las que se usarn luego en el programa para crear la
comunicacin USB entre el PC y el microcontrolador. Estas funciones sirven para abrir o
cerrar los canales de entrada o salida y para enviar o recibir paquetes de datos.
Son las siguientes:
voi d* myOut Pi pe;
voi d* myI nPi pe;

publ i c voi d OpenPi pes( )
{
DWORD sel ect i on = 0;
myOut Pi pe = _MPUSBOpen( sel ect i on, vi d_pi d_nor m, out _pi pe, 0, 0) ;
myI nPi pe = _MPUSBOpen( sel ect i on, vi d_pi d_nor m, i n_pi pe, 1, 0) ;
}


PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
60
publ i c voi d Cl osePi pes( )
{
_MPUSBCl ose( myOut Pi pe) ;
_MPUSBCl ose( myI nPi pe) ;
}

pr i vat e voi d SendPacket ( byt e* SendDat a, DWORD SendLengt h)
{
ui nt SendDel ay = 20;
DWORD Sent Dat aLengt h;
OpenPi pes( ) ;
_MPUSBWr i t e( myOut Pi pe, ( voi d*) SendDat a, SendLengt h,
&Sent Dat aLengt h, SendDel ay) ;
Cl osePi pes( ) ;
}

pr i vat e voi d Recei vePacket ( byt e* Recei veDat a, DWORD* Recei veLengt h)
{
ui nt Recei veDel ay = 20;
DWORD Expect edRecei veLengt h = *Recei veLengt h;
OpenPi pes( ) ;
_MPUSBRead( myI nPi pe, ( voi d*) Recei veDat a, Expect edRecei veLengt h,
Recei veLengt h, Recei veDel ay) ;
Cl osePi pes( ) ;
}

Existe otra funcin _MPUSBGet Devi ceCount ( vi d_04d8&pi d_0008) que nos
indica si el dispositivo con ese VID y PID est conectado al host USB.
Para aplicar las funciones anteriores se crea una funcin para el envo y otra para la
recepcin de datos.
La funcin de enviar es la siguiente:
publ i c voi d envi aUSB( ui nt val or )
{
byt e* send_buf = st ackal l oc byt e[ 1] ;
send_buf [ 1] = ( byt e) val or ;
SendPacket ( send_buf , 1) ;
}

Para leer el puerto USB, utilizamos la siguiente funcin:

publ i c ui nt r eci beUSB( )
{
ui nt r x=0;
byt e* r ecei ve_buf = st ackal l oc byt e[ 1] ;

DWORD RecvLengt h = 1;

Recei vePacket ( r ecei ve_buf , &RecvLengt h) ;
r x = ( ui nt ) r ecei ve_buf [ 0] ;
r et ur n r x;
}


PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
61
5.1.3 Instalacin software y drivers.
Cuando el sistema operativo detecta un nuevo perifrico USB, intenta determinar
qu driver debe utilizar y cargarlo. Esto lo realiza el Administrador de Dispositivos, que
utiliza instaladores de clase y dispositivo y archivos INF para encontrar el driver adecuado
para cada dispositivo. El Administrador de Dispositivos adems de ser el responsable de
instalar, configurar y desinstalar dispositivos, tambin se encarga de aadir informacin
sobre cada dispositivo en el registro del sistema, el cual contiene informacin sobre el
hardware y el software instalados.
Los instaladores de clase y dispositivo son DLLs. Windows tiene una serie de
instaladores por defecto que el Administrador de Dispositivos utiliza para localizar y
cargar los drivers para dispositivos pertenecientes a clases soportadas por el sistema
operativo. El archivo INF es un fichero de texto que contiene informacin que ayuda a
Windows a identificar el dispositivo. Este archivo indica al sistema operativo qu drivers
debe utilizar y qu informacin debe almacenar en el registro.
El dispositivo desarrollado no pertenece a una de las clases USB por defecto que
soporta el sistema operativo as que tanto el instalador de clase como el archivo INF habr
que crearlos.
Cuando se conecta el dispositivo al ordenador, Windows muestra el mensaje Nuevo
Hardware Encontrado. Si el perifrico nunca ha sido enumerado en el sistema, el sistema
operativo necesita localizar un driver para l. Al ser la primera vez que se conecta el
dispositivo y no ser de una clase genrica, Windows no encontrar un archivo INF que
pueda utilizar para asignarle un driver y lanzar el Asistente para Agregar Nuevo
Hardware donde se puede indicar la localizacin del archivo INF necesario para la
instalacin del perifrico. Una vez localizado, se carga el driver indicado, se aade el
perifrico en el Administrador de Dispositivos y se indica al usuario que la instalacin del
dispositivo ha finalizado de forma correcta. En el Administrador de Dispositivos se puede
ver tambin la descripcin del dispositivo y el fabricante, obtenidos del archivo INF.
El ejecutable, adems de instalar el software, copia los drivers en sus
correspondientes directorios. Se copia el fichero INF (picmodem.inf) en el directorio
\windows\inf, el driver (mchpusb.sys) en \windows\system32\drivers y el instalador de clase
(mpusbci.dll) en \windows\system32. De esta manera, la prxima vez que se conecte el
dispositivo, el ordenador lo reconocer sin necesidad de indicar ningn dato.
La informacin en un archivo INF est dividida en secciones. Cada seccin puede
ser identificada porque su nombre est entre corchetes. Las principales secciones son:
Versin: Especifica el sistema operativo para el que est destinado el
fichero INF. Indica el nombre de la clase de los dispositivos instalados con
este fichero as como un identificador de clase que es utilizado por el
registro del sistema para identificar a los dispositivos pertenecientes a esta
clase.
ClassInstall: En esta seccin se indica si se ha de instalar una nueva clase.
El Administrador de Dispositivos nicamente procesa la seccin si una clase
de dispositivo an no est instalada en el sistema. Aqu ser donde
indicaremos el icono, el nombre y la descripcin de la clase as como el
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
62
nombre del archivo DLL (picmodemci.dll) que instalar la nueva clase en el
Administrador de Dispositivos.
Manufacturer: Contiene el identificador de vendedor y producto
(USB\VID_04D8&PID_0008). Cuando el Administrador de Dispositivo
encuentra una coincidencia entre estos valores y los identificadores
obtenidos del dispositivo durante la enumeracin, sabe que ha encontrado el
archivo INF correcto.
DestinationDirs: Indica el directorio o directorios donde se copiarn los
ficheros.
Strings: Define las cadenas referenciadas en las otras secciones. El
contenido del fichero INF creado (picmodem.inf) puede verse en el anexo.

5.1.4 Software versin SUPERVISOR.
El software creado inicialmente muestra por pantalla todos los datos que se
transmiten por el puerto RS-232 y por el USB, tanto los enviados como los recibidos. Esto
ha servido para la depuracin del firmware y puede ser til para observar lo que el mdem
GSM nos est comunicando en todo momento.
El programa consta de una sola ventana donde estn todos los controles necesarios
para la comunicacin entre el dispositivo y el PC. Se muestra en la barra inferior si el
dispositivo se encuentra conectado ONLINE o desconectado OFFLINE.
En la regin superior izquierda hay tres cuadros de texto en los que se reflejan los
bytes enviados por USB desde el PC al PIC, los bytes recibidos desde el PIC y un cuadro
que muestra mensajes informativos sobre el proceso. Hay adems un cuadro de texto en el
que se pueden escribir comandos para enviarlos al PIC o al mdem directamente.
En la regin superior derecha hay un cuadro de texto en el que se pueden leer los
comandos AT enviados desde el PIC como las respuestas enviadas desde el mdem, a
travs del puerto RS-232.
En la regin inferior aparecen todos los cuadros de texto de parmetros, tales como
cdigo PIN, nmero de telfono del Centro de Mensajes y operador, nmero de telfono
del destinatario 1, nmero de telfono del destinatario 2, texto del mensaje SMS 1, texto
del mensaje SMS 2 y texto del mensaje de consigna compuesto por una contrasea y un
valor determinado.
En el manual de usuario incluido en el anexo se detalla su funcionamiento.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
63
5.1.5 Software versin simple.
Para un uso sencillo y cmodo, se ha simplificado el software eliminando las
casillas relativas a comunicaciones. En esta versin nicamente aparecen los cuadros de
texto de los parmetros, para visualizar los existentes en el PIC o introducirlos desde el PC.
Esta versin tambin dispone de la barra de estado inferior.
En el manual de usuario incluido en el anexo se detalla su funcionamiento.

5.2 Creacin del archivo instalable.
Mediante el software MEP Installer 2 se genera un fichero .exe que contiene los
drivers y las dos versiones del software desarrollado, as como la actualizacin de .NET
Framework necesaria para su funcionamiento.
Los drivers los copia en las carpetas correspondientes y el software lo instala por
defecto en el directorio \Archivos de Programa\PicModem aunque el usuario lo puede
instalar donde desee.


Figura 5.2 Pantalla principal instalable.
El proceso de instalacin, pese a ser en ingls el software instalador, es muy
intuitivo y fcil de completar.



PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
64
6 Presupuesto.
6.1 Coste de recursos Hardware.
El hardware de desarrollo del sistema consta de un ordenador personal de
sobremesa de las siguientes caractersticas:
Procesador AMD Athlon 64 3200+de doble ncleo.
Memoria RAM de 2GB.
Disco duro de 300GB.
Monitor Samsung LCD de 19.

Adems del PC, se ha hecho uso de un voltmetro digital, el programador TE-20,
una estacin soldadora y un cable de dos metros USB tipo B para la conexin del circuito
al ordenador.
Para calcular el importe proporcional al uso dado, teniendo en cuenta el periodo de
amortizacin de los recursos hardware utilizados, se establece un periodo medio de
amortizacin de 60 meses para cada uno de los tems.

CONCEPTO PRECIO / MES MESES IMPORTE
PC AMD Athlon 3200+ 1500 25 6 150
Programador TE-20 25 0,42 6 2,5
Estacin de soldar 30 0,5 6 3
Multmetro digital 30 0,5 6 3
TOTAL 158,5

Tabla 6.1 Coste recursos hardware.

6.2 Coste de recursos Software.
El software utilizado en el desarrollo del proyecto consta de:
Sistema operativo: Microsoft Windows XP Pro SP2.
Compilador de C: PCWH 3.235 de CCS.
Grabador PIC: WinPic800.
Software desarrollo aplicaciones: Visual C#2008 Express Edition.
Software diseo circuitos: Eagle Professional 4.16
Software creacin ejecutable: MEP Installer 2.1.3
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
65
Como sistema operativo se ha utilizado Microsoft Windows XP Professional SP2.
La actualizacin Service Pack 2 es imprescindible para la programacin del software.
El software Visual C#2008 Express Edition, el WinPic800 y el MEP Installer 2.1.3
son gratuitos, o bien ofrecen un periodo de demostracin, por lo que su uso no repercute en
el presupuesto.
Para calcular el importe proporcional de los componentes software, tambin se
establece un periodo de amortizacin de 60 meses.

CONCEPTO PRECIO / MES MESES IMPORTE
Microsoft Windows XP Professional SP2 125 2,08 6 12,5
Eagle Professional 4.16 180 3 6 18
Compilador PCWH 3.235 335 5,58 6 33,5
TOTAL 64,0
Tabla 6.2 Coste recursos software.

6.3 Coste de componentes.
A continuacin se detalla el precio, en euros, y la cantidad de cada componente
utilizado:

CONCEPTO
PRECIO
UNIDAD
UDS.
PRECIO
TOTAL
Resistencia 0,25W 1k 0,03 2 0,06
Resistencia 0,25W 100 0,03 1 0,03
Resistencia 0,25W 4k7 0,04 1 0,04
Resistencia 0,25W 2k2 0,04 3 0,12
Resistencia 0,25W 3k3 0,04 2 0,08
Condensador electroltico 47uF 0,18 1 0,18
Condensador electroltico 4,7uF 0,18 1 0,18
Condensador electroltico 1uF 0,18 3 0,54
Condensador poliester 100nF 0,11 1 0,11
Condensador cermico 15pF 0,03 2 0,06
Diodo 1N4148 0,05 2 0,10
Pulsador 6x6mm 0,26 2 0,52
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
66
CONCEPTO
PRECIO
UNIDAD
UDS.
PRECIO
TOTAL
Conector USB tipo B hembra 1,25 1 1,25
Conector RS232 DB9 2,45 2 4,90
CI MAX232 2,50 1 2,50
Diodo Led 5mm tricolor 0,37 2 0,74
Cristal oscilador de cuarzo 12MHz 0,91 1 0,91
Conmutador 2 circuitos 1,35 1 1,35
Zcalo de 28 pines 0,27 1 0,27
Zcalo de 16 pines 0,27 1 0,27
Placa de prototipos 2,85 1 2,85
Microcontrolador PIC 18F2550 5,30 1 5,30
Cable USB A macho-B macho 2,95 1 2,95
Mdem GSM Siemens TC35i 82,50 1 82,50
TOTAL 107,87

Tabla 6.3 Coste componentes electrnicos.

6.4 Coste de recursos humanos.
Las tareas realizadas son el anlisis de requisitos, diseo, implementacin y
experimentacin.
A continuacin se muestra el tiempo dedicado a cada una de las tareas y el importe
resultante aplicando un precio de 30/hora:

CONCEPTO UDS. IMPORTE
Anlisis de requisitos 40 1.200
Diseo 150 4.500
Implementacin 230 6.900
Experimentacin 60 1.800
TOTAL 14.400

Tabla 6.4 Coste de recursos humanos.

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
67
6.5 Coste total del proyecto.
Los precios mostrados en todo el presupuesto incluyen el 16% de IVA. A
continuacin se muestra el coste total del proyecto:

CONCEPTO IMPORTE
Recursos Hardware 158,5
Recursos Software 64
Componentes 107,87
Recursos Humanos 14.400
TOTAL 14.730,37

Tabla 6.5 Coste total del proyecto.
El coste total del proyecto asciende a CATORCE MIL SETECIENTOS TREINTA
euros con TREINTA Y SIETE cntimos.

6.6 Coste de explotacin del dispositivo.
Para una posible explotacin comercial del producto, se ha realizado un clculo del
precio final para una cantidad hipottica de 1000 unidades. El coste de recursos humanos
para el desarrollo de este proyecto de 14.400 . Para una venta de 1000 unidades, se
obtiene un importe de amortizacin de 14,4.
El precio correspondiente al montaje realizado por un tcnico, es de 8 / hora. El
tiempo que se utilizar en el montaje de cada unidad ser de hora. Se realiza un
descuento de un 20% en los costes de componentes, por compra en grandes cantidades.

CONCEPTO IMPORTE
Mano de obra, montaje. 4
Componentes 86,30
Amortizacin proyecto 14,40
TOTAL PRODUCTO 104,70

Tabla 6.6 Coste de explotacin del dispositivo.
El precio de venta de cada producto sera de 104,70, IVA incluido.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
68
7 Bibliografa.

1. Peter Wright, Beginning Visual C# 2005 Express Edition, Apress, 1 edicin, 2006.

2. Andrs Cnovas Lpez, Manual de usuario del compilador PCW de CCS. 2006.

3. J os Mara Angulo Usategui, Eugenio Martn Cuenca, Ignacio Angulo Martnez,
Microcontroladores PIC, la solucin en un chip. Ed. Thomson, 2000.

4. Adela M. Rodriguez Zaragoz, PFC Desarrollo de una estacin meteorolgica
USB. Universitat de Valncia, ETSE, 2006

5. Pgina oficial de MICROCHIP, http://www.microchip.com, 2008

6. Pgina oficial de Siemens, especificaciones mdem TC35i.
https://pia.khe.siemens.com/index.aspx?nr=14278, 2008

7. Foro sobre microcontroladores PIC, http://www.todopic.net/foros, 2008

8. Pgina personal de RedRaven, http://picmania.garcia-cuervo.com, 2008

9. Pgina oficial del creador de WinPic800, http://www.winpic800.com, 2008

10. Consulta RS-232 en la enciclopedia online Wikipedia,
http://es.wikipedia.org/wiki/RS232, 2008

11. Consulta USB en la enciclopedia online Wikipedia,
http://es.wikipedia.org/wiki/USB, 2008

12. Especificaciones de USB 2.0, http://www.usb.org/developers/docs/, 2008

13. Publicacin electrnica, http://www.canalpda.com/node/794, 2008

14. Consulta indice de cobertura GSM en Espaa en la enciclopedia online Wikipedia,
http://es.wikipedia.org/wiki/ESPAA, 2008




PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
69
8 Anexos.
8.1 Manual de usuario.
8.1.1 Instalacin.
8.1.1.1 Instalacin de la aplicacin y de los drivers.
Para instalar la aplicacin hay que ejecutar el programa instalar.exe, este ejecutable
instalar los drivers en las carpetas de sistema correspondientes y las versiones normal y
SUPERVISOR. Por defecto, la instalacin se realiza en \Archivos de
Programa\PicModem, aunque se puede cambiar la ubicacin haciendo clic en Examinar,
seleccionando la nueva carpeta y pinchando en Aceptar.
Por ltimo, se pregunta si se desea crear un icono de acceso directo en el escritorio
y, a continuacin, empieza la instalacin del programa. Una vez se han terminado de
copiar los archivos, el asistente da la opcin de instalar .NET Framework 2.0. Si ya se tiene
instalado, no es necesario reinstalarlo, pero si no se tiene, es imprescindible instalarlo para
poder ejecutar la aplicacin.

8.1.1.2 Instalacin del dispositivo.
Al conectar el dispositivo por primera vez, aparecer el asistente para la instalacin
de nuevo hardware, que lo primero que hace es preguntar si se quiere conectar a Windows
Update. Se marca la opcin No y se pincha sobre Siguiente. En ese momento, comenzarn
a copiarse los archivos necesarios en el ordenador. Una vez se termine de copiar, aparecer
una pantalla indicando que la instalacin del driver est terminada. El LED 2 del
dispositivo se encender en color verde, lo que indica que est listo para ser usado.
Si todo ha ido bien, en el Administrador de Dispositivos debe aparecer algo as:

Figura 8.1 Panel Administrador de Dispositivos.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
70
Si abrimos las propiedades del dispositivo, veremos la siguiente ventana:

Figura 8.2 Propiedades del dispositivo.
El resto de veces que se conecte el dispositivo al ordenador, ser reconocido de
forma automtica.


8.1.2 Uso de la aplicacin en su versin SUPERVISOR.
Una vez se ejecute el software, si el dispositivo no se encuentra conectado al puerto
USB del PC, o est conectado pero no ha sido correctamente enumerado, el software
mostrar una ventana indicando que el dispositivo se encuentra OFFLINE.

Figura 8.3 Mensaje de error de dispositivo no conectado.
Si el dispositivo no se conecta, el software no permite ninguna comunicacin con
ste. Para detectar que se ha conectado el dispositivo, el software realiza una consulta cada
500 ms.
En caso de desconectarse el dispositivo una vez conectado con aterioridad, se
mostrar la siguiente ventana:
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
71

Figura 8.4 Mensaje de error de dispositivo desconectado.

Si el dispositivo se conecta y se enumera correctamente, en la barra de estado
inferior se mostrar:
PFC - Control de mdulo GSM desde microcontrolador. <<ONLINE>>


Figura 8.5 Vista del software con el dispositivo ONLINE.
A partir del momento en que se conecte el dispositivo, transcurrirn 5 segundos
hasta que se ejecuten los comandos de lectura de datos correspondientes. Despus de leer
los datos, en la pantalla aparecer un mensaje indicando qu valores se encuentran en la
memoria del PIC y cules no.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
72

Figura 8.6 Mensaje informacin parmetros.
Por lo general, tal y como se ha diseado el software, el PIC se encontrar con
todos o, por el contrario, con ningn dato almacenado, puesto que desde el software no se
permite el envo de parmetros si no se han rellenado correctamente todos los campos.
Si existen datos almacenados en el dispositivo, stos se mostrarn en los cuadros de
texto correspondientes, de no ser as, los cuadros permanecern vacos.

Figura 8.7 Vista del software despus de leer los datos del PIC.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
73
En ambos casos, tanto si existen datos almacenados en el dispositivo como si se
encuentra vaco, rellenando todos los campos y pulsando el botn CARGAR
PARMETROS EN EL MDEM, el software proceder al envo, uno por uno, de todos
los datos escritos en los cuadros de texto.

Figura 8.8 Vista del botn CARGAR PARMETROS EN EL MODEM.
Los campos se han de rellenar de la siguiente manera:
PIN: Se han de introducir los 4 dgitos correspondientes a la tarjeta SIM
que se ha introducido en el mdem GSM.
SMS #1 y SMS #2: Se ha de escribir el contenido del mensaje SMS
asociado a los destinatarios 1 y 2 respectivamente. El lmite es de 100
caracteres.
Tel. destino #1 y Tel. destino #2: Se ha de escribir el nmero de telfono
de los destinatarios 1 y 2 respectivamente. El lmite es de 9 dgitos, y al
tratarse de telfonos mviles, han de comenzar por 6.
SMS Consigna: Para componer el mensaje de consigna, se introducir
una contrasea y un valor determinados.
o Password: La contrasea ser de 4 dgitos.
o Valor: Ser de 1 dgito, preferiblemente numrico.
Para cerrar la aplicacin basta con pulsar ESC, sobre el aspa situado en la parte
superior derecha o sobre el botn CERRAR de la ventana.
Existen dos botones LIMPIAR para limpiar las cajas de txto del cuadro donde estn
insertados y un LIMPIAR TODO que vaca todas las cajas de texto de la ventana.
En la parte superior derecha se encuentra el cuadro de las comunicaciones RS232.
En este cuadro tenemos cuatro botones: dos botones para CONECTAR y
DESCONECTAR el puerto COM, un tercer botn para ENVIAR la cadena introducida en
el cuadro de texto y el cuarto botn de LIMPIAR, comentado en el prrafo anterior.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
74
Para poder transmitir los datos escritos desde el PC hacia el exterior mediante el
puerto serie, debemos conectar el cable serie del PC al conector MODEM/PC y se deber
mover el conmutador a la posicin PC.

Figura 8.9 Vista del conmutador y del conector para comunicaciones serie desde el PC.

8.1.3 Uso de la aplicacin en su versin bsica.
El funcionamiento es el mismo que en la versin SUPERVISOR, lase el apartado
anterior.
En esta versin bsica existe una limitacin, no se pueden visualizar las
transferencias realizadas y no es posible escribir comandos para enviarlos al dispositivo.
Al no visualizar las comunicaciones entre PIC, mdem y PC, el usuario puede tener
la sensacin que el software no responde. Para que se pueda visualizar el proceso de
lectura de los datos desde el PIC, en la barra inferior de estado se ha instalado una barra de
progreso.

Figura 8.10 Detalle de la barra de progreso.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
75

Figura 8.11 Vista del software en proceso de obtencin de datos desde el PIC.
Una vez se ha completado la operacin, la ventana muestra los datos de los que
dispone el microcontrolador. Es ahora cuando el usuario puede cambiar los datos,
introduciendo los nuevos valores deseados si fuera el caso.

Figura 8.12 Vista del software despus de recibir los datos.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
76
8.1.4 Uso del dispositivo.
El dispositivo, una vez conectado y enumerado, encender el LED 2 en verde. El
LED 1 se encender en mbar mientras el PIC est ocupado.
Transcurridos cinco segundos desde la conexin del dispositivo, el PIC realizar la
lectura de datos de la memoria EEPROM interna. Si no existen los datos, el LED 1
parpadear en mbar hasta que no se detecte la existencia de stos. Para comprobar la
existencia de datos, el PIC realiza la lectura de la EEPROM cada 15 segundos.
Si se han introducido los datos, el PIC proceder a configurar el mdem GSM con
los valores introducidos. Durante este proceso, el LED 1 permanecer en mbar, siempre y
cuando no se haya introducido un cdigo PIN errneo. En caso de obtener un error en la
introduccin del cdigo PIN, el LED 1 cambiar a color rojo y el dispositivo cancelar
cualquier nueva comunicacin con el mdem.
Si todo el proceso de configuracin del mdem se ha realizado con xito, el LED 1
permanecer iluminado en color verde y el dispositivo se mantendr a la espera de que se
reciba o se solicite el envo de algn mensaje SMS.
Durante este estado de espera, el usuario podr modificar los parmetros que desee
y el dispositivo estar preparado con estos nuevos parmetros inmediatamente despus de
su recepcin.
El mensaje SMS consigna est pensado para que el dispositivo pueda recibir un
mensaje desde cualquier telfono mvil, leerlo, comparar el texto del SMS recibido con el
SMS consigna y proceder como se indica a continuacin:
Si los 4 primeros caracteres del texto del SMS recibido coinciden con los 4 dgitos
del password almacenado en memoria, pueden suceder dos situaciones:
1. Si, adems, coincide el quinto carcter del texto SMS con el valor
almacenado en memoria, en el LED 1 se visualizar la siguiente secuencia:
1. APAGADO (500 ms)
2. VERDE (500 ms)
3. APAGADO (500 ms)
4. AMBAR (500 ms)
5. APAGADO (500 ms)
6. ROJ O (500 ms)
7. APAGADO (500 ms)

2. Si por el contrario, el valor recibido no coincide con valor, si es un valor
numrico, el LED 1 realizar tantos parpadeos en ROJ O como sea el valor
recibido. En caso de ser un carcter, el dispositivo no realizar ninguna
accin.
Si no coinciden los caracteres con la contrasea, el dispositivo no realizar ninguna
funcin.
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
77
Para el envo de mensajes, basta con pulsar sobre el pulsador deseado 1 o 2,
dependiendo de si se quiere enviar al destinatario 1 o 2 respectivamente. Durante el
proceso de envo del mensaje, que puede tardar algunos segundos, el LED 2 se iluminar
en rojo.
Si se diera la difcil situacin en la que se pulsan los dos botones a la vez, por
defecto la funcin que se activara sera el envo a destinatario 1.
Si, por algn motivo, el dispositivo quedara bloqueado, se puede reiniciar pulsando
el botn RESET.
En la figura siguiente se nombran los elementos mencionados en los prrafos
anteriores:



Figura 8.13 Detalle de los elementos nombrados del circuito.





PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
78
8.2 Cdigo fuente del programa en PIC.
8.2.1 picmodem.c

#i ncl ude <18F2550. h>
#f uses HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDI V, PLL3, CPUDI V3, VREGEN
#use del ay( cl ock=24000000) / / el cr i st al es de 12mhz per o el r el oj es de
24mhz

/ / CPUDI V1= CPU DI V/ 2
/ / CPUDI V2= CPU DI V/ 3
/ / CPUDI V3= CPU DI V/ 4
/ / CPUDI V4= CPU DI V/ 6

#USE RS232( BAUD=9600, XMI T=PI N_C6, RCV=PI N_C7, st r eam=PC)

#def i ne USB_HI D_DEVI CE FALSE / / deshabi l i t amos el uso de
l as di r ect i vas HI D
#def i ne USB_EP1_TX_ENABLE USB_ENABLE_BULK / / t ur n on EP1( EndPoi nt 1) f or
I N bul k/ i nt er r upt t r ansf er s
#def i ne USB_EP1_RX_ENABLE USB_ENABLE_BULK / / t ur n on EP1( EndPoi nt 1) f or
OUT bul k/ i nt er r upt t r ansf er s
#def i ne USB_EP1_TX_SI ZE 1 / / si ze t o al l ocat e f or t he
t x endpoi nt 1 buf f er ( 1 byt e)
#def i ne USB_EP1_RX_SI ZE 1 / / si ze t o al l ocat e f or t he
r x endpoi nt 1 buf f er ( 1 byt e)

#i ncl ude <pi c18_usb. h>
#i ncl ude <Pi cModem. h> / / Conf i gur aci n del USB y l os descr i pt or es
par a est e di sposi t i vo
#i ncl ude <st r i ng. h>
#i ncl ude <usb. c>

#def i ne LED1 PI N_B7 / / l ed1 ver de
#def i ne LED2 PI N_B6 / / l ed1 r oj o
#def i ne LED4 PI N_B5 / / l ed2 r oj o
#def i ne LED3 PI N_B4 / / l ed2 ver de <- - - - oj o con est o, el l ed est a
gi r ado
#def i ne BOT1 PI N_B3
#def i ne BOT2 PI N_B2
#def i ne LED_ON out put _hi gh
#def i ne LED_OFF out put _l ow

i nt const MAXLENBUFF=101; / / maxi ma l ongi t ud del buf f er

t ypedef st r uct {
i nt numcar s;
i nt byt esr eci bi dos;
i nt pcom;
i nt cat ;
i nt i d;
i nt i d2;
i nt busy;
char car ;
char car 2;
char buf f er [ 101] ;
} t r ansmi si on;

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
79
t ypedef st r uct {
i nt par sok; / / t odos l os par amet r os ok
i nt busy;
i nt ok;
i nt er r or ;
i nt r esp;
i nt est esms; / / esper ando t ext o sms
i nt pi n; / / 0=nada, 1=SI M PI N, 2=READY, 3=SI M PUK
i nt csca; / / 0=nada, 1=csca ok
i nt cmgf ;
i nt cmt i ; / / 0=nada, 1=sms r eci bi do
i nt cmgs;
i nt cmgr ;
i nt smsr ; / / f l ag que i ndi ca si sms ent r ant e al macenado en
sms[ ]
i nt pr epar ado;
char r espuest a[ MAXLENBUFF] ;
char car ;
} at ;

t r ansmi si on usb;
at modem;

i nt posbuf f er =0;
i nt m=0; / / cont ador buf f er auxi l i ar
i nt n;
i nt t i cs=0;
i nt t i cs2=0;
i nt t i cs232=0;
i nt t i cusb=0;
i nt t i cat =0; / / t i cat , t i cs desde ul t i mo envi o USB, par a no sol apar
i nt t i csr eset =0;
i nt t xusb=0;
i nt segs=0;
i nt segs2=0;
i nt segsr eset =0;
i nt r eset =0;
i nt enbucl e=0;
i nt f l ag232=0;
char cab;

BYTE i , addr ess, val ue, emer ; / / var i abl es t i po byt e par a el
manej o de l a EEPROM
i nt j , d0, d1, d2, d3, l c, er r or =0;
char cad1[ 10] ;
char sms[ 5] ;
i nt 8 aux;
char c, d, e;
i nt usbcon=1;
i nt usb_enum=0;
i nt f l ag=0;
i nt f l agsms=0;

char buf f aux[ 160] ; / / buf f er auxi l i ar par a ver l os car act er es que se
r eci ben
i nt p=0;
char nsca[ 9] ;




PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
80
#i nt _RDA
voi d ser i al _i sr ( ) / / =========== i nt er r upci on puer t o ser i e =========
{
whi l e( kbhi t ( PC) )
{
cab=get c( PC) ;
modem. busy=1;
swi t ch( cab)
{ / / ( 13) ( 10) OK( 13) ( 10) - - > CR=13 y LF=10! ! ! ! ! ! !
case 13:
/ / nada, par a que el CR( 13) no ent r e en def aul t
br eak;
case 10: / / si l l ega un LF( 10)
i f ( modem. r esp==0) / / si l l ega el 1er LF( 10)
{
modem. r esp=1;
posbuf f er =0;
}
el se / / si l l ega el 2 LF( 10) - - > f i n r espuest a
{
modem. r esp=0;
i f ( modem. cmgr ==1)
{
sms[ 0] =modem. r espuest a[ 0] ;
sms[ 1] =modem. r espuest a[ 1] ;
sms[ 2] =modem. r espuest a[ 2] ;
sms[ 3] =modem. r espuest a[ 3] ;
sms[ 4] =modem. r espuest a[ 4] ;
modem. smsr =1;
modem. cmgr =0;
}
el se
{
/ / - - - OK - - -
i f ( ( modem. r espuest a[ 0] ==' O' ) &&( modem. r espuest a[ 1] ==' K' ) )
{
modem. ok=1;
/ / f l ag=15;
}
el se
{

i f ( ( modem. r espuest a[ 0] ==' E' ) &&( modem. r espuest a[ 1] ==' R' ) ) / / en el pr i mer
i f sol o habr an segur o 2 byt es
{
/ / - - - ERROR - - -
modem. er r or =1;
/ / f l ag=16;
}
el se / / - - - +CPI N / +CSCA / +CMGS / +CMTI / +CMGR - - -
{

i f ( ( modem. r espuest a[ 0] ==' +' ) &&( modem. r espuest a[ 1] ==' C' ) )
{
/ / - - - +CPI N - - -

i f ( ( modem. r espuest a[ 2] ==' P' ) &&( modem. r espuest a[ 7] ==' S' ) &&( modem. r espuest a
[ 8] ==' I ' ) )
{
i f ( modem. r espuest a[ 12] ==' I ' )
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
81
modem. pi n=2; / / +CPI N: SI M PI N
/ / f l ag=17;
}
el se
{
modem. pi n=4; / / +CPI N: SI M PUK
}
}
el se
{

i f ( ( modem. r espuest a[ 2] ==' P' ) &&( modem. r espuest a[ 7] ==' R' ) &&( modem. r espuest a
[ 8] ==' E' ) )
{
modem. pi n=3; / / +CPI N: READY
/ / f l ag=18;
}
el se
{
/ / - - - +CSCA - - -

i f ( ( modem. r espuest a[ 2] ==' S' ) &&( modem. r espuest a[ 3] ==' C' ) &&( modem. r espuest a
[ 4] ==' A' ) )
{
nsca[ 0] =modem. r espuest a[ 11] ;
nsca[ 1] =modem. r espuest a[ 12] ;
nsca[ 2] =modem. r espuest a[ 13] ;
nsca[ 3] =modem. r espuest a[ 14] ;
nsca[ 4] =modem. r espuest a[ 15] ;
nsca[ 5] =modem. r espuest a[ 16] ;
nsca[ 6] =modem. r espuest a[ 17] ;
nsca[ 7] =modem. r espuest a[ 18] ;
nsca[ 8] =modem. r espuest a[ 19] ;

modem. csca=1;
/ / f l ag=19;
}
el se
{
/ / - - - +CMGS - - -

i f ( ( modem. r espuest a[ 2] ==' M' ) &&( modem. r espuest a[ 3] ==' G' ) &&( modem. r espuest a
[ 4] ==' S' ) )
{
modem. cmgs=modem. r espuest a[ 7] - 48;
/ / guar damos l a posi ci on del mensaj e
i f ( posbuf f er ==8) / / si el i ndi ce
de sms t i ene 2 di gi t os
{
modem. cmgs=modem. cmgs*10;
modem. cmgs+=modem. r espuest a[ 8] -
48;
}
}
el se
{
/ / - - - +CMTI - - -

i f ( ( modem. r espuest a[ 2] ==' M' ) &&( modem. r espuest a[ 3] ==' T' ) &&( modem. r espuest a
[ 4] ==' I ' ) )
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
82
f l agsms=22;
modem. cmt i =modem. r espuest a[ 12] -
48;
i f ( posbuf f er ==14)
{
modem. cmt i =modem. cmt i *10;

modem. cmt i +=modem. r espuest a[ 13] - 48;
}
}
el se
{
/ / - - - +CMGR - - -

i f ( ( modem. r espuest a[ 2] ==' M' ) &&( modem. r espuest a[ 3] ==' G' ) &&( modem. r espuest a
[ 4] ==' R' ) )
{
modem. cmgr =1;
}
}
}
}
}
} / / el se
} / / i f
} / / el se
}/ / el se
}
}/ / el se
posbuf f er =0;

/ / - - - - - - - vaci ado del buf f er - - - - - - - -
/ / f or ( n=0; n<posbuf f er ; n++)
/ / { n
modem. r espuest a[ 0] =' \ 0' ;
/ / }
modem. busy=0;
/ / f l ag232=0;
br eak; / / f i n case 10 LF

def aul t :
i f ( modem. cmgr ==1)
{
modem. r esp=1;
}
i f ( modem. r esp==1) / / sol o l eer a car act er es despues del pr i mer LF
{
modem. r espuest a[ posbuf f er ] =cab; / / aado car act er r eci bi do
al buf f er
posbuf f er ++;
i f ( cab==62) / / si es ' >' ( 3E) =62
{
modem. est esms=1;
modem. r esp=0;
}
}
}/ / swi t ch
}
}

/ / =======================================================================
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
83

#i nt _RTCC / / CI CLO RELOJ : 41. 66ps / CI CLO I NSTR. : 0. 16us
RTCC_i sr ( ) / / RTCC: 10, 92ms( 68250 i nst r . ) / 1bi t : 104us( 650
i nst r . )
{
t i cs++; / / ========== i nt er r upci on t i mer 0 cada 10, 92ms ============
t i cs2++;
t i cs232++;
t i csr eset ++;
t i cat ++;
/ / - - - - - - t i mer 1 - - - - - -
i f ( t i cs>91)
{
segs++;
t i cs=0;
}
/ / - - - - - - t i mer 2 - - - - - -
i f ( t i cs2>91) / / t i cs2 y segs2 par a el i nt er val o de qui nce segundos
{
segs2++;
t i cs2=0;
}
/ / - - - - - - t i mer 232 - - - - - -
i f ( t i cs232>=254) / / t i cs232 par a l a esper a de medi o segundo ant es
de envi ar el buf f er auxi l i ar
{
t i cs232=0;
}
/ / - - - - - - t i mer envi o USB - - - - - -
i f ( t i cat >=254) / / t i cat par a no sol apar envi os USB
{
t i cat =0;
}
/ / - - - - - - t i mer r eset - - - - - -
i f ( t i csr eset >91) / / t i cat par a no sol apar envi os USB
{
segsr eset ++;
t i csr eset =0;
i f ( segsr eset >10)
{
r eset =1;
}
}
/ / - - - - - - t i mer t i c USB - - - - - -
i f ( usb_enum==1)
{
t i cusb++;
}
i f ( t i cusb>91) / / t i cusb, cada segundo da un t oque por usb
{
t i cusb=0;
t xusb=1;
}
}

/ / =======================================================================

voi d l eer par amet r os( voi d)
{
i nt par [ 6] ;
i nt i i ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
84
modem. busy=1;
segs2=0;
f l ag=2;
/ / 0=pi n, 4=cent r omen( no se
l ee) , 13=t d1, 22=t d2, 31=sms1, 132=sms2, 233=smscon
par [ 0] =r ead_eepr om( 0) ;
del ay_ms( 4) ;
par [ 1] =r ead_eepr om( 13) ;
del ay_ms( 4) ;
par [ 2] =r ead_eepr om( 22) ;
del ay_ms( 4) ;
par [ 3] =r ead_eepr om( 31) ;
del ay_ms( 4) ;
par [ 4] =r ead_eepr om( 132) ;
del ay_ms( 4) ;
par [ 5] =r ead_eepr om( 233) ;
del ay_ms( 4) ;

i f ( par [ 0] ==255)
{
modem. par sok=0;
}
el se
{
modem. par sok=1;
}

f or ( i i =1; i i <6; i i ++)
{
i f ( ( par [ i i ] ! =255) &&( modem. par sok==1) )
{
modem. par sok=1;
}
el se
{
modem. par sok=0;
}
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d escr i bi r at ( voi d)
{
modem. busy=1;
t i cs=0;
segs=0;
whi l e( segs<5) / / r et ar do de 5 segundos ant es de 1er comando at
{
/ / modem. busy=1;
}
modem. ok=0;
pr i nt f ( " AT+I PR=9600\ r " ) ; / / envi amos AT( 13) par a det ect ar que
el modemest pr epar ado
t i cs=0; / / y de paso se conf i gur a a 9600
baudi os
segs=0;
whi l e( ( modem. ok==0) &&( segs<5) )
{
modem. busy=1;
}
i f ( modem. ok==0)
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
85
{
modem. er r or =1;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / er r or , col or r oj o
}
el se
{
LED_ON( LED1) ;
LED_ON( LED2) ; / / ambar , el modemaun no est a l i st o
t i cs=0;
whi l e( t i cs<50) / / apr ox 1/ 2 segundo
{
modem. busy=1;
}
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d escr i bi r pi n( voi d)
{
char cpi n[ 4] ;
modem. busy=1;
modem. pi n=1; / / pi n=0: no l ei do / 1: l ei do / 2: si mpi n
modem. ok=0; / / pi n=3: r eady / 4: si mpuk / 5: er r or
f l ag=3;
pr i nt f ( " AT+CPI N?\ r " ) ;
t i cs=0;
segs=0;
LED_ON( LED1) ;
LED_ON( LED2) ; / / se pone ambar dur ant e l a esper a
whi l e( ( modem. pi n==1) &&( segs<5) )
{
/ / modem. busy=1;
}
i f ( modem. pi n==1)
{
modem. pi n=0;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / er r or , col or r oj o
}
i f ( ( modem. pi n==2) &&( modem. er r or ==0) )
{
LED_ON( LED1) ;
LED_OFF( LED2) ; / / ver de
f or ( i =0; i <4; i ++)
{
cpi n[ i ] =r ead_eepr om( i ) ;
del ay_ms( 4) ;
}
modem. ok=0;
pr i nt f ( " AT+CPI N=\ " %c%c%c%c\ " \ r " , cpi n[ 0] , cpi n[ 1] , cpi n[ 2] , cpi n[ 3] ) ;
t i cs=0;
segs=0;
LED_ON( LED1) ;
LED_ON( LED2) ; / / se pone ambar dur ant e l a esper a
whi l e( ( modem. ok==0) &&( segs<10) &&( modem. er r or ==0) )
{
modem. busy=1;
}
i f ( modem. er r or ==1)
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
86
modem. pi n=5; / / i nt ent o f al l i do
LED_OFF( LED1) ;
LED_OFF( LED2) ; / / apagado
}
i f ( modem. ok==1)
{
modem. pi n=3;
}
el se
{
/ / modem. pi n=0;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / r oj o
}
}

i f ( modem. pi n==3)
{
LED_ON( LED1) ;
LED_OFF( LED2) ; / / ver de dur ant e 10 segundos
t i cs=0;
segs=0;
whi l e( segs<10)
{
modem. busy=1;
}
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d l eer csca( voi d)
{
f l ag=5;
modem. csca=0;
modem. ok=0;
modem. busy=1;
pr i nt f ( " AT+CSCA?\ r " ) ;
t i cs=0;
segs=0;
whi l e( ( modem. csca==0) &&( segs<5) )
{
/ / modem. busy=1;
}
t i cs=0;
segs=0;
whi l e( ( modem. ok==0) &&( segs<2) )
{
/ / modem. busy=1;
}

i f ( modem. csca==0)
{
modem. er r or =1;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / er r or , col or r oj o
}
el se
{
LED_ON( LED1) ;
LED_ON( LED2) ; / / ambar
modem. busy=0;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
87
i f ( modem. pr epar ado! =4)
{
modem. pr epar ado=1; / / csca ok
}

t i cs=0;
segs=0;
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d modot ext o( voi d)
{
f l ag=6;
modem. busy=1;
modem. ok=0;
pr i nt f ( " AT+CMGF=1\ r " ) ;
t i cs=0;
segs=0;
whi l e( ( modem. ok==0) &&( segs<5) )
{
modem. busy=1;
}
i f ( modem. ok==0)
{
modem. er r or =1;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / er r or , col or r oj o
}
el se
{
i f ( modem. pr epar ado! =4)
{
modem. pr epar ado=2; / / cmgf ok
}
modem. cmgf =1;
LED_ON( LED1) ;
LED_OFF( LED2) ; / / ver de
t i cs=0;
segs=0;
/ / whi l e( segs<1)
/ / {
/ / / / modem. busy=1;
/ / }
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d avi sosms( voi d)
{
f l ag=7;
modem. busy=1;
modem. ok=0;
pr i nt f ( " AT+CNMI =3, 1, 0, 0\ r " ) ;
t i cs=0;
segs=0;
whi l e( ( modem. ok==0) &&( segs<5) )
{
/ / esper a de OK
}
i f ( modem. ok==0)
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
88
{
modem. er r or =1;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / er r or , col or r oj o
}
el se
{
i f ( modem. pr epar ado! =4)
{
modem. pr epar ado=3; / / cnmi ok
}

LED_ON( LED1) ;
LED_OFF( LED2) ; / / ver de
t i cs=0;
segs=0;
whi l e( segs<1)
{
/ / modem. busy=1;
}
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d bor r ar sms( i nt i nd)
{
i nt i t er s;
f l ag=8;
modem. busy=1;
f or ( i t er s=i nd; i t er s>=1; i t er s- - ) / / decr eci ent e 3, 2, 1
{
modem. ok=0;
pr i nt f ( " AT+CMGD=%d\ r " , i t er s) ; / / bor r a el sms de l a pr i mer a
posi ci on
t i cs=0;
segs=0;
whi l e( ( modem. ok==0) &&( segs<5) )
{
/ / esper a de OK
}
i f ( modem. ok==0)
{
modem. er r or =1;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / er r or , col or r oj o
}
el se
{
LED_ON( LED1) ;
LED_OFF( LED2) ; / / ver de
i f ( modem. pr epar ado==3)
{
modem. pr epar ado=4; / / cmgd ok
}
t i cs=0;
segs=0;
whi l e( segs<1)
{
/ / modem. busy=1;
del ay_ms( 50) ;
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
89
}
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d envi ar sms( i nt a)
{
char cad1[ 9] ;
char cad2[ 101] ;
i nt i , j , k;
modem. busy=1;
modem. ok=0;
f l ag=9;
i f ( modem. par sok==1)
{
i f ( a==1)
{
j =13; / / posi ci on 0 t d1 eepr om
k=31; / / posi ci on 0 sms1 eepr om
}
i f ( a==2)
{
j =22; / / posi ci on 0 t d2 eepr om
k=132; / / posi ci on 0 sms2 eepr om
}
f or ( i =0; i <9; i ++)
{
cad1[ i ] =r ead_eepr om( i +j ) ;
del ay_ms( 4) ;
}

pr i nt f ( " AT+CMGS=\ " +34%c%c%c%c%c%c%c%c%c\ " , 145\ r " , cad1[ 0] , cad1[ 1] , cad1[ 2] ,
cad1[ 3] , cad1[ 4] , cad1[ 5] , cad1[ 6] , cad1[ 7] , cad1[ 8] ) ;
whi l e( ( modem. est esms==0) &&( modem. er r or ==0) )
{
LED_ON( LED1) ;
LED_ON( LED2) ; / / se pone ambar dur ant e l a esper a
}
i f ( modem. est esms==1)
{
modem. est esms=0;
/ / aqui pongo el cuer po del mensaj e sms
f or ( i =0; i <100; i ++)
{
cad2[ i ] =r ead_eepr om( i +k) ;
del ay_ms( 4) ;
i f ( cad2[ i ] ==13)
{
cad2[ i ] =26;
modem. ok=0; / / ct r l - z ( 26) ( 0x1A)
pr i nt f ( " %c" , cad2[ i ] ) ;
i =100;
}
el se
{
pr i nt f ( " %c" , cad2[ i ] ) ;
i f ( i ==99) / / si el sms t i ene 100 car s escr i bi mos el
ct r l - z en el 101
{
cad2[ i +1] =26; / / ct r l - z ( 26) ( 0x1A)
modem. ok=0;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
90
pr i nt f ( " %c" , cad2[ i ] ) ;
}
}
}
}
segs=0;
whi l e( ( modem. ok==0) &&( modem. er r or ==0) &&( segs<15) )
{
del ay_ms( 100) ;
LED_ON( LED1) ;
LED_ON( LED2) ; / / se pone ambar dur ant e l a esper a
}
i f ( modem. ok==1)
{
LED_ON( LED1) ;
LED_OFF( LED2) ; / / ver de
}
el se
{
LED_OFF( LED1) ;
LED_ON( LED1) ; / / r oj o
}
}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
voi d l eer sms( voi d)
{
i nt cons=0; / / f l ag coi nci denci a con consi gna
i nt i t er s=0;
i nt val or =0;
char csmsc[ 5] ; / / car act er sms consi gna
char sa; / / sms aux
modem. busy=1;
modem. ok=0;
modem. smsr =0;
pr i nt f ( " AT+CMGR=%d\ r " , modem. cmt i ) ; / / l ee el sms de l a posi ci on
al macenada
t i cs=0;
segs=0;
whi l e( ( modem. smsr ==0) &&( segs<5) )
{
/ / modem. busy=1;
LED_ON( LED1) ;
LED_ON( LED2) ;
}
i f ( modem. smsr ==1)
{
modem. smsr =0;
f or ( i =0; i <4; i ++)
{
csmsc[ i ] =r ead_eepr om( i +233) ;
del ay_ms( 4) ;
sa=( char ) csmsc[ i ] ;
i f ( sms[ i ] ==sa)
{
cons=1;
}
el se
{
cons=0;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
91
}
}
i f ( cons==1)
{
i =4;
csmsc[ 4] =r ead_eepr om( i +233) ;
del ay_ms( 4) ;
sa=( char ) csmsc[ i ] ;
i f ( sms[ 4] ==sa)
{
f l agsms=21;

LED_OFF( LED1) ;
LED_OFF( LED2) ; / / apagado
t i cs=0;
whi l e( t i cs<45)
{}

LED_ON( LED1) ;
LED_OFF( LED2) ; / / ver de
t i cs=0;
whi l e( t i cs<45)
{}

LED_OFF( LED1) ;
LED_OFF( LED2) ; / / apagado
t i cs=0;
whi l e( t i cs<45)
{}

LED_ON( LED1) ;
LED_ON( LED2) ; / / ambar
t i cs=0;
whi l e( t i cs<45)
{}

LED_OFF( LED1) ;
LED_OFF( LED2) ; / / apagado
t i cs=0;
whi l e( t i cs<45)
{}

LED_OFF( LED1) ;
LED_ON( LED2) ; / / r oj o
t i cs=0;
whi l e( t i cs<45)
{}
LED_OFF( LED1) ;
LED_OFF( LED2) ; / / apagado
t i cs=0;
whi l e( t i cs<45)
{}
}
el se
{
f l agsms=20;
val or =sms[ 4] - 48;
i f ( ( val or >0) &&( val or <=9) ) / / descar t amos el 0
{
f or ( i t er s=0; i t er s<val or ; i t er s++)
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
92
LED_OFF( LED1) ;
LED_OFF( LED2) ; / / apagados
t i cs=0;
whi l e( t i cs<45) / / 0, 5 segs
{}
LED_ON( LED2) ; / / r oj o
t i cs=0;
whi l e( t i cs<45) / / 0, 5 segs
{}
}
LED_OFF( LED1) ;
LED_OFF( LED2) ; / / apagados
t i cs=0;
whi l e( t i cs<45) / / 0, 5 segs
{}
LED_ON( LED1) ; / / ver de
LED_OFF( LED2) ;
}
}
}
}
el se
{
modem. er r or =1;
LED_OFF( LED1) ;
LED_ON( LED2) ; / / er r or , col or r oj o
}
t i cs=0;
segs=0;
whi l e( ( modem. ok==0) &&( segs<5) ) / / esper a del OK
{
/ / modem. busy=1;
LED_ON( LED1) ;
LED_ON( LED2) ;
}

pr i nt f ( " SMS: %c%c%c%c%c" , sms[ 0] , sms[ 1] , sms[ 2] , sms[ 3] , sms[ 4] ) ;
t i cs=0;
segs=0;
whi l e( segs<1)
{}
modem. busy=0;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


/ / ======================================================================
/ / ============================= M A I N ================================
/ / ======================================================================

voi d mai n( voi d)
{
i nt i t ;
usb. numcar s=0;
usb. byt esr eci bi dos=0;
usb. pcom=0;
usb. i d=0;
usb. i d2=0;
usb. buf f er [ 0] =' \ 0' ;
usb. busy=0;
enbucl e=1;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
93
modem. par sok=0;
modem. busy=0;
modem. ok=0;
modem. er r or =0;
modem. r esp=0;
modem. est esms=0;
modem. pi n=0;
modem. csca=0;
modem. cmt i =0;
modem. cmgf =0;
modem. cmgs=0;
modem. cmgr =0;
modem. pr epar ado=0; / / i ndi ca que el modemse encuent r a l i st o par a
f unci onami ent o nor mal

set _t r i s_b( 0xF0) ; / / conf i gur o RB7, RB6, RB5 y RB4 como sal i das

set _t i mer 0( 0) ;
set up_count er s( RTCC_I NTERNAL, RTCC_DI V_256 | RTCC_8_BI T) ;
enabl e_i nt er r upt s( I NT_RTCC) ;
enabl e_i nt er r upt s( I NT_RDA) ;
enabl e_i nt er r upt s( GLOBAL) ;

LED_ON( LED1) ; / / ambar par a i ndi car que est a en pr oceso
LED_ON( LED2) ;
LED_OFF( LED3) ;
LED_OFF( LED4) ;

enbucl e=0;
usb_i ni t ( ) ; / / i ni ci al i zamos el USB
usb_wai t _f or _enumer at i on( ) ; / / esper amos hast a que el pi c sea
conf i gur ado por el host
usb_enum=usb_enumer at ed( ) ;
LED_ON( LED3) ;
LED_OFF( LED4) ; / / ver de

whi l e ( TRUE)
{
enbucl e=1;
t i csr eset =0;

i f ( usb_kbhi t ( 1) ) / / si se r eci ben dat os del host
{
usb. busy=1;
t i cat =0;
LED_ON( LED3) ; / / ambar
LED_ON( LED4) ;
enbucl e=0;
usb_get _packet ( 1, &usb. car , 1) ; / / usb_get _packet ( endpoi nt ,
*pt r , max)
usb. byt esr eci bi dos++;

i f ( usb. car ==4) / / si r eci bi mos un er r or
{
er r or =1;
usb_put _packet ( 1, &usb. car , 1, USB_DTS_TOGGLE) ; / / envi amos
byt e 04
}
el se
{
/ / di scr i mi naci on de car act er es i nval i dos
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
94

i f ( usb. byt esr eci bi dos==1) / / es pr i mer byt e?
{
i f ( ( usb. car <49) | | ( ( usb. car >57) &&( usb. car ! =65) ) ) / / 65=' A'
{
er r or =1;
}
el se
{
i f ( ( er r or ==0) &&( usb. pcom==0) &&( usb. cat ==0) )
{
usb_put _packet ( 1, &usb. car , 1, USB_DTS_TOGGLE) ; / /
envi amos byt e a byt e
i f ( ( usb. car >48) &&( usb. car <=57) ) / / es
pseudocomando?
{
usb. i d = usb. car - 48; / / guar damos el
i dent i f i cador de l a t r ama
usb. cat = 0; / / desact i vamos
f l ag COMANDO AT
i f ( ( usb. i d>4) &&( usb. i d<=8) ) / / ent r e 5 y 8
{
usb. pcom= 2; / / pseudocomando
de pet i ci on de dat os ( 5, 6, 7, 8)
/ / usb. byt esr eci bi dos = 2; / / asi ent r amos
en el si gui ent e i f
j =0;
swi t ch( usb. i d)
{
case 5:
usb. numcar s = 4;
br eak;
def aul t :
usb. numcar s = 9;
}
}
i f ( usb. i d<4)
{
usb. pcom= 1; / / pseudocomando
de envi o de dat os ( 1, 2, 3)
}
i f ( usb. i d==9)
{
usb. pcom=3;
}
}
el se / / si no es pseudocomando, es comando AT o
cual qui er cosa r ar a
{
i f ( usb. car ==65) / / si es ' A'
{
usb. cat =1;
usb. pcom=0;
usb. buf f er [ usb. byt esr eci bi dos- 1] =usb. car ;
}
el se
{ / / si es
cual qui er ot r a cosa
usb. cat =0;
usb. pcom=0;
usb. byt esr eci bi dos=0;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
95
}
}
}
}
}
el se
{
i f ( er r or ==0) / / si es 2 byt e o
post er i or
{
i f ( usb. pcom==1) / / si pseudocomando de envi o dat os
( desde PC)
{
i f ( usb. byt esr eci bi dos==2) / / si es segundo byt e
{
usb_put _packet ( 1, &usb. car , 1, USB_DTS_TOGGLE) ;
/ / envi amos byt e a byt e
usb. numcar s = usb. car - 48; / / guar damos el
numer o de car act er es
}
el se
{ / / si es t er cer byt e o post er i or
i f ( usb. byt esr eci bi dos- 3<usb. numcar s) / / si no ha
f i nal i zado
{
usb_put _packet ( 1, &usb. car , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
usb. buf f er [ usb. byt esr eci bi dos- 3] = usb. car ;
/ / al macenamos en buf f er el car act er r eci bi do
}
el se
{ / / ha f i nal i zado, aqui r eci bi mos el <CR>
/ / i dent i f i car el pseudocomando y envi ar l os
comandos AT cor r espondi ent es al modem
swi t ch( usb. i d)
{
case 1: / / envi o codi go PI N
f or ( j =0; j <4; j ++)
{
wr i t e_eepr om( j , usb. buf f er [ j ] ) ; / / gr aba
pi n en 00 - > 03
del ay_ms( 7) ; / / un ci cl o de
bor r ado/ escr i t ur a son unos 4ms
}

br eak;
case 2: / / envi o numer o dest i nat ar i o 1
f or ( j =0; j <9; j ++)
{
wr i t e_eepr om( j +13, usb. buf f er [ j ] ) ; / /
gr aba dest en 13 - > 21
del ay_ms( 7) ; / / un ci cl o de
bor r ado/ escr i t ur a son unos 4ms
}

br eak;
case 3: / / envi o numer o dest i nat ar i o 2
f or ( j =0; j <9; j ++)
{
wr i t e_eepr om( j +22, usb. buf f er [ j ] ) ; / /
gr aba dest en 22 - > 30
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
96
del ay_ms( 7) ; / / un ci cl o de
bor r ado/ escr i t ur a son unos 4ms
}

br eak;
}
usb. buf f er [ 0] =' \ 0' ;
usb. byt esr eci bi dos=0;
usb. numcar s=0;
usb. pcom=0;
usb. i d=0;
usb. busy=0;
} / / f i n el se ( si ya ha f i nal i zado)
} / / f i n el se ( t er cer byt e o post er i or )
} / / f i n el se i f ( pcom==1)

i f ( usb. pcom==2) / / si pseudocomando de I D=5, 6, 7 u
8
{
swi t ch( usb. i d)
{
case 5: / / sol i ci t ud de pi n
j =usb. byt esr eci bi dos- 2;
i f ( j ==0) / / si es el pr i mer
dat o
{
cad1[ j ] =r ead_eepr om( j ) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
i f ( ( j >0) &&( j <4) ) / / si es 2 o post er i or dat o
{
i f ( usb. car ! =cad1[ j - 1] ) / / se compar a el
r eci bi do del PC con el envi ado de ant es del PI C
{
j =4;
er r or =1;
/ / usb. buf f er [ 0] =0;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
usb. busy=0;
}
el se / / si es cor r ect o
{
cad1[ j ] =r ead_eepr om( j ) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
}
i f ( j ==4) / / si es el ul t i mo byt e
{
i f ( usb. car ==cad1[ j - 1] ) / / si es cor r ect o
{
cad1[ j ] =13;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos car act er 13 <CR>
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
97
}
el se
{
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
}
l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. busy=0;
}
br eak;

case 6: / / sol i ci t ud de cent r o de mensaj es
j =usb. byt esr eci bi dos- 2;
i f ( j ==0) / / si es el pr i mer
dat o
{
cad1[ j ] =r ead_eepr om( j +4) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
i f ( ( j >0) &&( j <9) ) / / si es 2 o post er i or dat o
{
i f ( usb. car ! =cad1[ j - 1] ) / / se compar a el
r eci bi do del PC con el envi ado de ant es del PI C
{
j =9;
er r or =1;
/ / usb. buf f er [ 0] =0;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
usb. busy=0;
}
el se / / si es cor r ect o
{
cad1[ j ] =r ead_eepr om( j +4) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
}
i f ( j ==9) / / si es el ul t i mo byt e
{
i f ( usb. car ==cad1[ j - 1] ) / / si es cor r ect o
{
cad1[ j ] =13;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
98
el se
{
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
}
l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. busy=0;
}
br eak;
case 7: / / sol i ci t ud de t el ef ono dest i no #1
j =usb. byt esr eci bi dos- 2;
i f ( j ==0) / / si es el pr i mer
dat o
{
cad1[ j ] =r ead_eepr om( j +13) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
i f ( ( j >0) &&( j <9) ) / / si es 2 o post er i or dat o
{
i f ( usb. car ! =cad1[ j - 1] ) / / se compar a el
r eci bi do del PC con el envi ado de ant es del PI C
{
j =9;
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
usb. busy=0;
}
el se / / si es cor r ect o
{
cad1[ j ] =r ead_eepr om( j +13) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
}
i f ( j ==9) / / si es el ul t i mo byt e
{
i f ( usb. car ==cad1[ j - 1] ) / / si es cor r ect o
{
cad1[ j ] =13;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
}
el se
{
er r or =1;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
99
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
}
l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. busy=0;
}
br eak;
case 8: / / sol i ci t ud de t el ef ono dest i no #2
j =usb. byt esr eci bi dos- 2;
i f ( j ==0) / / si es el pr i mer
dat o
{
cad1[ j ] =r ead_eepr om( j +22) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
i f ( ( j >0) &&( j <9) ) / / si es 2 o post er i or dat o
{
i f ( usb. car ! =cad1[ j - 1] ) / / se compar a el
r eci bi do del PC con el envi ado de ant es del PI C
{
j =9;
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
usb. busy=0;
}
el se / / si es cor r ect o
{
cad1[ j ] =r ead_eepr om( j +22) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
}
i f ( j ==9) / / si es el ul t i mo byt e
{
i f ( usb. car ==cad1[ j - 1] ) / / si es cor r ect o
{
cad1[ j ] =13;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
}
el se
{
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
100
}
l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. busy=0;
}
br eak;
} / / f i n swi t ch
} / / f i n i f ( pcom==2)

i f ( usb. pcom==3)
{
usb_put _packet ( 1, &usb. car , 1, USB_DTS_TOGGLE) ;

i f ( usb. byt esr eci bi dos==2) / / si es el segundo d gi t o
del or den ( or den2)
{
usb. i d2=usb. car - 48; / / i d2 =1, 2, 3, 5, 6 o 7
i f ( usb. i d2<4)
{
usb. pcom=3; / / envi o de dat os desde PC
}
el se
{
usb. pcom=4; / / pet i ci on de dat os desde PC
}
}
el se / / si es car act er de SMS
{
usb. buf f er [ usb. byt esr eci bi dos- 3] = usb. car ; / /
al macenamos en buf f er el car act er r eci bi do

i f ( usb. car ==13) / / 13=<CR> si ha f i nal i zado
{
swi t ch( usb. i d2)
{
case 1: / / envi o SMS 1
f or ( j =0; j <=usb. byt esr eci bi dos- 3; j ++)
{
wr i t e_eepr om( j +31, usb. buf f er [ j ] ) ; / /
gr aba SMS 1 en 31 - > 131 ( 100+<cr >)
del ay_ms( 7) ; / / un ci cl o de
bor r ado/ escr i t ur a son unos 4ms
}
/ / pr i nt f ( " SMS #1: %S" , usb. buf f er ) ;
br eak;
case 2: / / envi o SMS 2
f or ( j =0; j <=usb. byt esr eci bi dos- 3; j ++)
{
wr i t e_eepr om( j +132, usb. buf f er [ j ] ) ; / /
gr aba SMS 2 en 132 - > 232
del ay_ms( 7) ; / / un ci cl o de
bor r ado/ escr i t ur a son unos 4ms
}
/ / pr i nt f ( " SMS #2: %S" , usb. buf f er ) ;
br eak;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
101
case 3: / / envi o SMS CONSI GNA
f or ( j =0; j <=usb. byt esr eci bi dos- 3; j ++)
{
wr i t e_eepr om( j +233, usb. buf f er [ j ] ) ; / /
gr aba SMSCON en 233 - > 238
del ay_ms( 7) ; / / un ci cl o de
bor r ado/ escr i t ur a son unos 4ms
}
/ / pr i nt f ( " SMS CON: %S" , usb. buf f er ) ;
br eak;
}
l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. i d2=0;
usb. busy=0;
}
}
}

i f ( ( usb. pcom==4) &&( usb. byt esr eci bi dos>2) )
{
swi t ch( usb. i d2)
{
case 5: / / sol i ci t ud de SMS 1
j =usb. byt esr eci bi dos- 3;
i f ( j ==0) / / si es el pr i mer
dat o
{
cad1[ j ] =r ead_eepr om( j +31) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
i f ( cad1[ 0] ==255) / / 63=? 255=( vaci o)
{
usb. buf f er [ 0] =' \ 0' ;
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. i d2=0;
usb. busy=0;
j =0;
}
}
i f ( j >0) / / si es 2 o post er i or dat o
{
i f ( usb. car ! =cad1[ j - 1] ) / / se compar a el
r eci bi do del PC con el envi ado de ant es del PI C
{
j =4;
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, usb. buf f er , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
usb. busy=0;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
102
}
el se / / si es cor r ect o
{
i f ( j <100) / / si no es el ul t i mo byt e
{
cad1[ j ] =r ead_eepr om( j +31) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
i f ( ( j ==100) | | ( cad1[ j ] ==13) ) / / se acaba en
el byt e 99 o en el car act er <CR>
{
i f ( j ==100)
{
cad1[ j ] =13;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos <CR>
del ay_ms( 1) ;
}
l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. busy=0;
}
}
}
br eak;
case 6: / / sol i ci t ud de SMS 2
j =usb. byt esr eci bi dos- 3;
i f ( j ==0) / / si es el pr i mer
dat o
{
cad1[ j ] =r ead_eepr om( j +132) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
i f ( cad1[ 0] ==255) / / 63=? 255=( vaci o)
{
usb. buf f er [ 0] =' \ 0' ;
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. i d2=0;
usb. busy=0;
j =0;
}
}
i f ( j >0) / / si es 2 o post er i or dat o
{
i f ( usb. car ! =cad1[ j - 1] ) / / se compar a el
r eci bi do del PC con el envi ado de ant es del PI C
{
j =4;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
103
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
usb. busy=0;
}
el se / / si es cor r ect o
{
i f ( j <100) / / si no es el ul t i mo byt e
{
cad1[ j ] =r ead_eepr om( j +132) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
i f ( ( j ==100) | | ( cad1[ j ] ==13) ) / / se acaba en
el byt e 99 o en el car act er <CR>
{
i f ( j ==100)
{
cad1[ j ] =13;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos <CR>
del ay_ms( 1) ;
}
l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. busy=0;
}
}
}
br eak;
case 7: / / sol i ci t ud de SMS CONSI GNA
j =usb. byt esr eci bi dos- 3;
i f ( j ==0) / / si es el pr i mer
dat o
{
cad1[ j ] =r ead_eepr om( j +233) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
i f ( cad1[ 0] ==255) / / 63=? 255=( vaci o)
{
usb. buf f er [ 0] =' \ 0' ;
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. i d2=0;
usb. busy=0;
j =0;
}
}
i f ( j >0) / / si es 2 o post er i or dat o
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
104
{
i f ( usb. car ! =cad1[ j - 1] ) / / se compar a el
r eci bi do del PC con el envi ado de ant es del PI C
{
j =4;
er r or =1;
usb. buf f er [ 0] =4;
usb_put _packet ( 1, &usb. buf f er [ 0] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e 04
usb. busy=0;
}
el se / / si es cor r ect o
{
i f ( j <5)
{
cad1[ j ] =r ead_eepr om( j +233) ;
del ay_ms( 4) ;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos byt e a byt e
del ay_ms( 1) ;
}
i f ( j ==5) / / si es el ul t i mo
{
cad1[ j ] =13;
usb_put _packet ( 1, &cad1[ j ] , 1,
USB_DTS_TOGGLE) ; / / envi amos <CR>
del ay_ms( 1) ;

l c=st r l en( usb. buf f er ) ;
f or ( j =0; j <l c; j ++)
{
usb. buf f er [ j ] =' \ 0' ;
}
usb. pcom=0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. busy=0;
}
}
}
br eak;
}
}

/ / >>>>>>>>>>>>>>>>>>>>>>>>> SI ES UN COMANDO AT
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

i f ( usb. cat ==1)
{
usb_put _packet ( 1, &usb. car , 1, USB_DTS_TOGGLE) ;
usb. buf f er [ usb. byt esr eci bi dos- 1] = usb. car ; / /
al macenamos en buf f er el car act er r eci bi do

i f ( usb. car ==13) / / si ha f i nal i zado el comando AT
{
l c=st r l en( usb. buf f er ) ;
/ / t oca envi ar l o
pr i nt f ( " %S" , usb. buf f er ) ;
/ / comando AT f i nal i zado
modem. busy=0;
usb. buf f er [ 0] =' \ 0' ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
105
usb. byt esr eci bi dos=0;
usb. numcar s=0;
usb. pcom=0;
usb. cat =0;
usb. i d=0;
usb. busy=0;
}
}
} / / f i n 2 byt e o post er i or
}
}/ / el se car ==4
i f ( er r or ==1)
{
usb. pcom=0;
usb. cat =0;
usb. byt esr eci bi dos=0;
usb. i d=0;
usb. numcar s=0;
usb. busy=0;
}
t i cat =0;
} / / f i n usb_kbhi t

/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FI N USB_KBHI T - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -


i f ( ( usb. busy==0) &&( t xusb==1) &&( modem. busy==0) &&( usb_enum==1) &&( t i cat >18) )
{
/ / t i cat >18 = 200 ms apr ox <- - ant es 45
t xusb=0;
usb. busy=1;
i f ( f l agsms! =0)
{
usb. car 2=f l agsms; / / ( char )
f l agsms=0;
}
el se
{
usb. car 2=f l ag; / / ( char )
}
usb_put _packet ( 1, &usb. car 2, 1, USB_DTS_TOGGLE) ; / / envi a FLAG
si dent r o bucl e pr i nci pal
usb. busy=0;
t i cat =0;
}

i f ( ( usb. busy==0) &&( usb_enum==1) )
{
LED_ON( LED3) ; / / l ed ver de si USB conect ado y
di sponi bl e
LED_OFF( LED4) ;
}
el se
{
i f ( usb. busy==0)
{
LED_OFF( LED3) ; / / si no est conect ado al USB, l ed 2
en r oj o
LED_ON( LED4) ;
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
106
el se
{
LED_ON( LED3) ;
LED_ON( LED4) ; / / ambar si USB ocupado
}
}

/ / - - - - - - r eset ear segs, segs2 - - - - - - - -
i f ( segs>=254) / / par a que no se desbor de ( es un i nt , 0- 255)
{
segs=0;
}
i f ( segs2>=254) / / par a que no se desbor de ( es un i nt , 0- 255)
{
segs2=0;
}

/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - l ect ur a pul sador es - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

i f ( ( ! i nput ( BOT1) ) &&( usb. busy==0) ) / / si se pul sa bot 1
{
LED_OFF( LED3) ; / / l ed2 en r oj o
LED_ON( LED4) ;
i f ( ( modem. busy==0) &&( modem. pr epar ado==4) )
{
enbucl e=0;
envi ar sms( 1) ;
bor r ar sms( modem. cmgs) ;
}
}
el se / / al poner l o ani dado, no se pueden l eer l os 2 pul sados a l a
vez
{
i f ( ( i nput ( BOT2) ) &&( i nput ( BOT1) ) )
{
i f ( usb. busy==0)
{
LED_ON( LED3) ;
LED_OFF( LED4) ; / / l ed2 ver de
}
el se
{
LED_ON( LED3) ;
LED_ON( LED4) ; / / l ed2 ambar
}
}

i f ( ( ! i nput ( BOT2) ) &&( usb. busy==0) )
{
LED_OFF( LED3) ; / / pul sador 2 = r oj o
LED_ON( LED4) ;
i f ( ( modem. busy==0) &&( modem. pr epar ado==4) )
{
enbucl e=0;
envi ar sms( 2) ;
bor r ar sms( modem. cmgs) ;
}
}
}

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
107
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comandos AT- - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

i f ( modem. pr epar ado<=3) / / pr ocedi mi ent os par a i ni ci ar el modem
{
/ / ========================== LEER PARAMETROS
=============================

i f ( ( modem. ok==0) &&( modem. par sok==0) &&( modem. er r or ==0) &&( modem. pi n==0) &&( m
odem. pr epar ado==0) &&( modem. busy==0) )
{
/ / si es el pr i mer acceso
enbucl e=0;
l eer par amet r os( ) ; / / se l een y se i ni ci al i za a 0 el
cont ador de 15 segundos
escr i bi r at ( ) ; / / escr i bi mos AT par a compr obar que el
modemr esponde
}
/ / si no se t i enen l os par amet r os
i f ( ( modem. par sok==0) &&( modem. busy==0) &&( modem. pi n==0) )
{
/ / si est a o est uvo conect ado
i f ( ( segs2>=15) &&( usb. busy==0) )
{
enbucl e=0;
l eer par amet r os( ) ;
}
}
/ / ==================== PARPADEO LED1 FALTA DE PARAMETROS
=================
i f ( modem. par sok==0) / / par padeo en ambar de l ed1
{
i f ( t i cs>45)
{
LED_ON( LED1) ;
LED_ON( LED2) ; / / se enci ende ambar
}
el se
{
LED_OFF( LED1) ;
LED_OFF( LED2) ; / / se apaga ambar
}
}
/ / ========================== ESCRI BI R PI N
=============================

i f ( ( modem. par sok==1) &&( modem. ok==1) &&( modem. pi n==0) &&( usb. busy==0) &&( mode
m. busy==0) ) / / si par amet r os ok y no i nt ent o f al l i do pi n
{
enbucl e=0;
escr i bi r pi n( ) ;
}
/ / ============================ LEER CSCA
==============================

i f ( ( modem. pi n==3) &&( modem. pr epar ado==0) &&( usb. busy==0) &&( modem. busy==0) )
{
/ / modem. pi n=3:
enbucl e=0;
l eer csca( ) ;
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
108
/ / ====================== CONFI GURAR MODO TEXTO
=========================
i f ( ( modem. pr epar ado==1) &&( usb. busy==0) &&( modem. busy==0) ) / / si
t enemos hast a CSCA, conf i gur ar CMGF
{
enbucl e=0;
modot ext o( ) ;
}
/ / =================== CONFI GURAR AVI SO SMS RECI BI DO
===================
i f ( ( modem. pr epar ado==2) &&( usb. busy==0) &&( modem. busy==0) ) / / si
t enemos hast a CMGF, conf i gur ar CNMI
{
enbucl e=0;
avi sosms( ) ;
}
/ / ====================== BORRAR SMS EN POSI CI ON 1
=====================
i f ( ( modem. pr epar ado==3) &&( usb. busy==0) &&( modem. busy==0) ) / / si
t enemos hast a CNMI , bor r ar mensaj e 1
{
enbucl e=0;
bor r ar sms( 1) ;
}
}

i f ( modem. pr epar ado==4) / / si modempr epar ado
{
f l ag=1;
i f ( ( modem. cmt i ! =0) &&( usb. busy==0) &&( modem. busy==0) )
{
enbucl e=0;
l eer sms( ) ;
bor r ar sms( modem. cmt i ) ;
modem. cmt i =0;
}
}

i f ( modem. csca==1)
{
f or ( i =0; i <9; i ++)
{
wr i t e_eepr om( i +4, nsca[ i ] ) ;
del ay_ms( 7) ;
/ / +4 pq empi eza en l a posi ci on 4 de l a eepr om
/ / +11 por que sol o guar damos desde l a posi ci on 11 del ar r egl o
de l a t r ama r eci bi da
/ / +CSCA: " +34656000311" , 145
}
modem. csca=0;
}
} / / f i n whi l e i ndef i ni do
} / / f i n mai n








PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
109
8.3 Cdigo fuente del software en PC, versin SUPERVISOR.
8.3.1 Picmodem.cs
usi ng Syst em;
usi ng Syst em. Col l ect i ons. Gener i c;
usi ng Syst em. Component Model ;
usi ng Syst em. Dat a;
usi ng Syst em. Dr awi ng;
usi ng Syst em. Text ;
usi ng Syst em. Wi ndows. For ms;
usi ng Syst em. Di agnost i cs; / / Cl ase par a abr i r pgi na web
usi ng Syst em. I O. Por t s;
usi ng Syst em. Thr eadi ng;

namespace Pi cModem
{
publ i c par t i al cl ass Pi cModem: For m
{
Pi cmodemAPI usbapi = new Pi cmodemAPI ( ) ;
Ser i al Por t por t = new Ser i al Por t ( " COM1" , 9600, Par i t y. None, 8,
St opBi t s. One) ;

st r i ng r x, cadi nf o, cadi nf o2;
st r i ng spi n, st el dest 1, st el dest 2, ssms1, ssms2, ssmscon;
/ / st r i ngs par a guar dar el val or l ei do del PI C, par a compar ar l o
ant es de subi r l o
char [ ] buf f er ser i e = new char [ 160] ;
char [ ] r esul t =new char [ 101] ;
char [ ] val or =new char [ 20] ;
ui nt onl i ne = 0;
bool pi cl ei do = f al se;
bool car gar = f al se;
bool l eer = f al se;
bool f al l o = f al se;
bool pi cbusy = t r ue;
bool pcbusy = f al se;
bool envusb = f al se; / / or den de envi o USB de t r ama escr i t a
i nt l eer f l ag = 0; / / par a que l ea el f l ag cada segundo
i nt me = 0;
i nt y = 0; / / i t er aci ones par a car gar
i nt x = 0; / / i t er aci ones par a l eer
i nt ci ncoseg = 0;
i nt t i cs = 0;
i nt r eady3 = 0; / / se t i enen que cont ar 3 t i cs con pi c: r eady,
par a evi t ar f al sos r eadys
bool [ ] dat ok = new bool [ 6] ; / / new bool - > l os i ni ci al i za como
' f al se'
bool [ ] dat t x = new bool [ 6] ;
/ / dat os: 0=pi n, 1=t el dest 1, 2=t el dest 2
/ / 3=sms1, 4=sms2, 5=smscon
/ / dat ok=dat os l ei dos del pi c
/ / dat t x=dat os a envi ar al pi c, por que no se han l ei do o por que se
han t ecl eado


publ i c Pi cModem( )
{
/ / i ni ci al i za l os component es del f or m
I ni t i al i zeComponent ( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
110
t hi s. por t . Dat aRecei ved += new
Syst em. I O. Por t s. Ser i al Dat aRecei vedEvent Handl er ( t hi s. Recepci on) ;
i ni ci al i zaci ones( ) ;
}

pr i vat e voi d i ni ci al i zaci ones( )
{
Syst em. Wi ndows. For ms. Cont r ol . CheckFor I l l egal Cr ossThr eadCal l s
= f al se; / / daba un er r or
/ / oper ador a. Sel ect edI t em= 0;
/ / cent r omen. Text = " 656000311" ;

Conect ar ( ) ; / / abr e el puer t o ser i e

bot _conect ar . Enabl ed = f al se;
bot _desconect ar . Enabl ed = t r ue;
bot _envi ar . Enabl ed = f al se;
bot _l eer pi c. Enabl ed = f al se;
bot _car gar dat os. Enabl ed = t r ue;
pi nbox. Enabl ed = t r ue;
sms1. Enabl ed = t r ue;
sms2. Enabl ed = t r ue;
comando. Enabl ed = t r ue;
t el dest 1. Enabl ed = t r ue;
t el dest 2. Enabl ed = t r ue;
pass. Enabl ed = t r ue;
val . Enabl ed = t r ue;



comando. Text = " " ;

onl i ne = usbapi . Conexi on( ) ;
i f ( onl i ne == 1) / / est a conect ado?
{
st at usl abel . Text = " PFC - Cont r ol de mdul o GSM desde
mi cr ocont r ol ador . <<ONLI NE>>" ;
ci ncoseg = 1;
t hi s. i nf o. I t ems. Add( " Esper a de 5s ant es de 1er Comando
AT. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
}
el se
{
st at usl abel . Text = " PFC - Cont r ol de mdul o GSM desde
mi cr ocont r ol ador . <<OFFLI NE>>" ;
}
}
/ * pr i vat e voi d l eer pi c( )
{
pcbusy = t r ue;
i f ( ! pi cbusy) / / l l er f l ag=1 par a que se envi e ent r e f l ag y
f l ag y no se sol apen
{
comando. Text = " 5" ; / / l ect ur a de pi n
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 6" ; / / l ect ur a del cent r o de mensaj es
envi ar usb( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
111
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 7" ; / / l ect ur a del dest i nat ar i o 1
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 8" ; / / l ect ur a del dest i nat ar i o 2
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 95" ; / / l ect ur a del sms1
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 96" ; / / l ect ur a del sms2
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 97" ; / / l ect ur a del sms de cont r ol
envi ar usb( ) ;
}
pi cl ei do = t r ue;


}
*/
pr i vat e voi d envi ar usb( )
{
/ / Se envi ar n pseudocomandos o comandos AT

/ / se envi ar un pr i mer byt e con el t i po de par amet r o a
envi ar
/ / y un segundo byt e con el numer o de car act er es que componen
el par amet r o
/ / y por ul t i mo se r eci bi r an l os car act er es que componen el
val or
/ / Ej empl o: 141234 <- t i po: 1 ( pi n) , car act er es: 4 , val or :
1234
/ / Ti pos: 1=pi n, 2=t el dest i nat ar i o1, 3=t el dest i nat ar i o2
/ / 5=sol i ci t ud pi n, 6=sol i ci t ud cent r omen, 7=sol i ci t ud
t el dest 1, 8=sol i ci t ud t el dest 2
/ / 91=sms1, 92=sms2, 93=sms cont r ol , 95=sol . sms1, 96=sol .
sms2, 97=sol . sms cont r ol

i nt b, l , i ;
char cad1; / / car act er de handshaki ng
st r i ng cad2;
ui nt b1 = 0, or den = 0, nocar s = 0, c, or den2 = 0;
bool cat = f al se; / / es comando at ?
i nt pcom= 0;
i nt del ay = 100;
pcbusy = t r ue;
t r amar ec. Text = " " ;
l = comando. Text . Lengt h;
bot _envi ar . Enabl ed = f al se;

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
112
cad2 = comando. Text . ToUpper ( ) ;

or den = ( ui nt ) cad2[ 0] ;

i f ( ( or den > 48) && ( or den <= 57) ) / / si es un pseudocomando
{
cat = f al se;
i f ( or den < 52) / / <4
pcom= 1;
el se
{
i f ( or den == 52)
pcom= 0;
el se
pcom= 2;
}
i f ( l > 1)
{
nocar s = ( ui nt ) cad2[ 1] ;
nocar s - = 48;
}
el se
{
nocar s = 4;
}

swi t ch ( or den)
{
case 49: / / 1
i f ( ( nocar s == 4) && ( nocar s == l - 2) )
{
t hi s. i nf o. I t ems. Add( " Envi o de cdi go PI N. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
pi nbox. Text = " " ;
pi nbox. Text += cad2[ 2] ;
pi nbox. Text += cad2[ 3] ;
pi nbox. Text += cad2[ 4] ;
pi nbox. Text += cad2[ 5] ;
}
el se
{
t hi s. i nf o. I t ems. Add( " ERROR: el cdi go PI N
r equi er e 4 d gi t os. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
f al l o = t r ue;
}
br eak;

case 50: / / 2
i f ( ( nocar s == 9) && ( nocar s == l - 2) )
{
t hi s. i nf o. I t ems. Add( " Envi o de nmer o de
t el f ono dest i no #1. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
el se
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
113
t hi s. i nf o. I t ems. Add( " ERROR: el nmer o de
t el f ono r equi er e 9 d gi t os. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
f al l o = t r ue;
}
br eak;

case 51: / / 3
i f ( ( nocar s == 9) && ( nocar s == l - 2) )
{
t hi s. i nf o. I t ems. Add( " Envi o de nmer o de
t el f ono dest i no #2. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
el se
{
t hi s. i nf o. I t ems. Add( " ERROR: el nmer o de
t el f ono r equi er e 9 d gi t os. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
f al l o = t r ue;
}
br eak;

case 53: / / 5
t hi s. i nf o. I t ems. Add( " Sol i ci t ud de cdi go PI N. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count -
1;
l = 6;
nocar s = 4; / / con l =6 y nocar s=4 se obt i ene
" f al l o=f al se"
br eak;

case 54: / / 6
t hi s. i nf o. I t ems. Add( " Sol i ci t ud de cent r o de
mensaj es. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count -
1;
l = 11;
nocar s = 9; / / con l =11 y nocar s=9 se obt i ene
" f al l o=f al se"
br eak;

case 55: / / 7
t hi s. i nf o. I t ems. Add( " Sol i ci t ud de nmer o de
t el f ono dest i no #1. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count -
1;
l = 11;
nocar s = 9; / / con l =11 y nocar s=9 se obt i ene
" f al l o=f al se"
br eak;

case 56: / / 8
t hi s. i nf o. I t ems. Add( " Sol i ci t ud de nmer o de
t el f ono dest i no #2. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count -
1;
l = 11;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
114
nocar s = 9; / / con l =11 y nocar s=9 se obt i ene
" f al l o=f al se"
br eak;

case 57: / / 9
i f ( l > 1)
c = ( ui nt ) cad2[ 1] ;
el se
c = 0;

swi t ch ( c)
{
case 49: / / si es 91

l = sms1. Text . Lengt h;
nocar s = ( ui nt ) l ;
l = l + 2; / / ha de cumpl i r :
l =nocar s+2
or den2 = 49;
pcom= 3;
cad2 = sms1. Text ;
i f ( nocar s > 0)
{
t hi s. i nf o. I t ems. Add( " Envi o de SMS
#1. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
el se
{
f al l o = t r ue;
t hi s. i nf o. I t ems. Add( " ERROR: SMS #1
est vac o. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
br eak;
case 50: / / si es 92
l = sms2. Text . Lengt h;
nocar s = ( ui nt ) l ;
l = l + 2; / / ha de cumpl i r :
l =nocar s+2
or den2 = 50;
pcom= 3;
cad2 = sms2. Text ;
i f ( nocar s > 0)
{
t hi s. i nf o. I t ems. Add( " Envi o de SMS
#2. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
el se
{
f al l o = t r ue;
t hi s. i nf o. I t ems. Add( " ERROR: SMS #2
est vac o. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
br eak;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
115
case 51: / / si es 93
nocar s = 5;
l = 7; / / ha de cumpl i r :
l =nocar s+2
or den2 = 51;
pcom= 3;
cad2 = pass. Text + val . Text ;
t hi s. i nf o. I t ems. Add( " Envi o de SMS
CONSI GNA. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
br eak;
case 53: / / si es 95
t hi s. i nf o. I t ems. Add( " Sol i ci t ud de SMS
#1. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
l = 102;
nocar s = 100;
or den2 = 53;
pcom= 4;
br eak;
case 54: / / si es 96
t hi s. i nf o. I t ems. Add( " Sol i ci t ud de SMS
#2. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
l = 102;
nocar s = 100;
or den2 = 54;
pcom= 4;
br eak;
case 55: / / si es 97
t hi s. i nf o. I t ems. Add( " Sol i ci t ud de SMS
CONSI GNA. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
l = 7;
nocar s = 5; / / son 5 car act er es
or den2 = 55;
pcom= 4;
br eak;
case 0: / / si sol o se ha escr i t o un
di gi t o
t hi s. i nf o. I t ems. Add( " Necesar i o un 2
d gi t o. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
f al l o = t r ue;
br eak;
def aul t :
t hi s. i nf o. I t ems. Add( " DESCONOCI DO. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
f al l o = t r ue;
br eak;
}
br eak;
def aul t :
t hi s. i nf o. I t ems. Add( " DESCONOCI DO. " ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
116
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count -
1;
f al l o = t r ue;
br eak;
}

i f ( l ! = nocar s + 2)
{
f al l o = t r ue;
}
i f ( ( l == nocar s + 2) && ( f al l o == f al se) )
f al l o = f al se;

i f ( ! f al l o)
{
usbapi . envi aUSB( or den) ; / / envi o pr i mer byt e
t hi s. envi adousb. I t ems. Add( " 1: " + ( char ) or den + " ( " +
or den + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;

Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / / r eci bi mos de 1
en 1 byt e! ! !

t hi s. r eci bi dousb. I t ems. Add( " ( " + ( i nt ) cad1 + " ) " +
cad1) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

i f ( or den ! = cad1) / / si es di f er ent e
{
i f ( ( ui nt ) cad1 ! = 4)
{
swi t ch ( ( ui nt ) cad1)
{
case 1:
pi cbusy = f al se;
est adopi c. Text = " PI C: READY" ;
br eak;
case 2:
pi cbusy = f al se;
est adopi c. Text = " PI C: PARAMETROS" ;
br eak;
case 3:
pi cbusy = f al se;
est adopi c. Text = " PI C: PI N" ;
br eak;
case 5:
pi cbusy = f al se;
est adopi c. Text = " PI C: CSCA" ;
br eak;
case 6:
pi cbusy = f al se;
est adopi c. Text = " PI C: CMGF" ;
br eak;
case 7:
pi cbusy = f al se;
est adopi c. Text = " PI C: CNMI " ;
br eak;
case 8:
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
117
pi cbusy = f al se;
est adopi c. Text = " PI C: BORR. SMS" ;
br eak;
case 9:
pi cbusy = f al se;
est adopi c. Text = " PI C: ENV. SMS" ;
br eak;
case 15:
pi cbusy = f al se;
est adopi c. Text = " RS232: OK" ;
br eak;
case 16:
pi cbusy = f al se;
est adopi c. Text = " RS232: ERROR" ;
br eak;
case 17:
pi cbusy = f al se;
est adopi c. Text = " RS232: SI M PI N" ;
br eak;
case 18:
pi cbusy = f al se;
est adopi c. Text = " RS232: SI M READY" ;
br eak;
case 19:
pi cbusy = f al se;
est adopi c. Text = " RS232: CSCA" ;
br eak;
case 0:
pi cbusy = t r ue;
/ / est adopi c. Text = " PI C: BUSY" ;
br eak;
}
/ *
Thr ead. Sl eep( del ay) ; / / del ay de 200ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos de 1 en 1 byt e! ! !
t hi s. r eci bi dousb. I t ems. Add( " ( " + ( i nt ) cad1 +
" ) " + cad1) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;
*/
}
el se
{
or den = 4;
f al l o = t r ue;
usbapi . envi aUSB( or den) ; / / se envi a byt e 04
par a i ndi car er r or
t hi s. envi adousb. I t ems. Add( " Er r or - >4" ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos r et or no de f al l o
t hi s. r eci bi dousb. I t ems. Add( " Er r or - >4 ( " +
( ui nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;
MessageBox. Show( " Ha ocur r i do un er r or cr t i co
en l a comuni caci n PC <- - > PI C\ nDesconect a el di sposi t i vo. " , " ERROR" ,
MessageBoxBut t ons. OK, MessageBoxI con. Er r or ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
118
Appl i cat i on. Exi t ( ) ;
}
}
i f ( ( pcom== 2) &&! f al l o) / / comandos de sol i ci t ud de
dat os 5, 6, 7 u 8
{
usbapi . envi aUSB( cad1) ; / / envi amos por 2 vez
el pr i mer byt e
t hi s. envi adousb. I t ems. Add( " Rep 1: " + ( char ) or den
+ " ( " + or den + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / / r eci bi mos
1er dat o
i f ( cad1 == 4)
{
f al l o = t r ue;
}
el se
{
val or [ 0] = cad1;
t hi s. r eci bi dousb. I t ems. Add( " Dat o 0=" + " ( " +
( ui nt ) cad1 + " ) " + cad1) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

c = ( ui nt ) cad1;
usbapi . envi aUSB( c) ; / / r ebot amos d0
t hi s. envi adousb. I t ems. Add( " Dat o 0=" + " ( " +
( ui nt ) cad1 + " ) " + cad1) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
}
}
i f ( ( pcom== 4) && ! f al l o) / / comandos de sol i ci t ud
de dat os 95, 96 o 97
{
usbapi . envi aUSB( or den2) ; / / envi amos segundo
byt e
t hi s. envi adousb. I t ems. Add( " 2: " + ( char ) or den2 +
" ( " + or den2 + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
t hi s. r eci bi dousb. I t ems. Add( cad1 + " ( " + ( i nt ) cad1
+ " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

i f ( cad1 == 4)
{
f al l o = t r ue;
}
el se
{
usbapi . envi aUSB( cad1) ; / / envi amos por 2
vez el segundo byt e
t hi s. envi adousb. I t ems. Add( " Rep 2: " +
( char ) or den2 + " ( " + or den2 + " ) " ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
119
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos 1er dat o
i f ( cad1 == 4)
{
f al l o = t r ue;
MessageBox. Show( " Ha ocur r i do un er r or
cr t i co en l a comuni caci n PC <- - > PI C\ nDesconect a el di sposi t i vo. " ,
" ERROR" , MessageBoxBut t ons. OK, MessageBoxI con. Er r or ) ;
Appl i cat i on. Exi t ( ) ;
}
el se
{
i f ( cad1 == 255) / / si r eci bi mos un
0xFF como 1er car act er
{ / / qui er e deci r que el
sms est vac o
f al l o = t r ue;
pcom= 0;
t hi s. i nf o. I t ems. Add( " Reci bi do un
car act er 0xFF" ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
t hi s. r eci bi dousb. I t ems. Add( " Dat o
vac o. " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;
pcbusy = f al se;
}
el se
{
r esul t [ 0] = cad1;
t hi s. r eci bi dousb. I t ems. Add( " Dat o 0="
+ cad1 + " ( " + ( ui nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

c = ( ui nt ) cad1;
usbapi . envi aUSB( c) ; / / r ebot amos d0
t hi s. envi adousb. I t ems. Add( " Dat o 0=" +
( char ) c + " ( " + c + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
}
}
}
}
i f ( ! f al l o) / / si se ha envi ado ok, se si gue
envi ando
{
i f ( or den < 52) / / si or den es 1, 2 o 3
{
f or ( b = 1; b < nocar s + 2; b++)
{
b1 = ( ui nt ) cad2[ b] ; / / cad2=cadena a
envi ar en mayuscul as
/ / b1=val or asci i del car act er a envi ar
usbapi . envi aUSB( b1) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
120
t hi s. envi adousb. I t ems. Add( ( char ) b1 + " ( "
+ b1 + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / r eci bi mos de 1 en 1 byt e! ! !
t hi s. r eci bi dousb. I t ems. Add( cad1 + " ( " +
( i nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

r esul t [ b] = cad1;

i f ( ( b1 ! = ( ui nt ) cad1) | | ( ( i nt ) cad1==4) )
{
b = ( i nt ) nocar s+2;
f al l o = t r ue;
b1 = 4;
usbapi . envi aUSB( b1) ; / / se envi a byt e
04 par a i ndi car er r or
}
}
i f ( ! f al l o)
{
b1 = 13; / / <CR>
usbapi . envi aUSB( b1) ;
t hi s. envi adousb. I t ems. Add( ( char ) b1 + " ( "
+ b1 + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
}
pcbusy = f al se;
}
el se
{
i f ( or den < 57)
{
/ / si es or den 5, 6, 7 u 8! ! ! ! ! ! !
/ / ar r i ba hemos envi ado el 1er byt e, hemos
r eci bi do y
/ / conf i r mado el byt e de ' dat o 0'
/ / aqui l eer emos el ' dat o 1' y
post er i or es, i r emos r ebot ando
/ / l os car act er es que vayamos r eci bi endo
f or ( b = 1; b < nocar s + 1; b++)
{
Thr ead. Sl eep( del ay) ; / / del ay de
100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / <- - oj o! ! !
t hi s. r eci bi dousb. I t ems. Add( " Dat o " +
b + " =" + " ( " + ( ui nt ) cad1 + " ) " + cad1) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

c = ( ui nt ) cad1;
val or [ b] = cad1;
i f ( ( c ! = 4) && ( c ! = 13) && ( c ! = 0) )
/ / si no hay er r or , no <CR> y no 0
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
121
usbapi . envi aUSB( c) ;
t hi s. envi adousb. I t ems. Add( " Dat o "
+ b + " =" + " ( " + c + " ) " + ( char ) c) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
}
el se
{
i f ( c == 13) / / si <CR>, es que
OK
{

t hi s. r eci bi dousb. I t ems. Add( " Dat o r eci bi do cor r ect ament e. " ) ;

t hi s. r eci bi dousb. Sel ect edI ndex = t hi s. r eci bi dousb. I t ems. Count - 1;
swi t ch ( or den)
{
case 53: / / 5 = PI N
i f ( val or [ 0] == 255)
dat ok[ 0] = f al se;
el se
{
dat ok[ 0] = t r ue;
pi nbox. Text = " " ;
f or ( i = 0; i <
4; i ++)
{
pi nbox. Text
+= val or [ i ] ;
}
spi n =
pi nbox. Text ;
}
br eak;
case 54: / / 6 =
CENTROMEN
cent r omen. Text = " " ;
f or ( i = 0; i < 9;
i ++)
{
i f ( val or [ i ] ! =
255)
{

cent r omen. Text += val or [ i ] ;
}
el se
{

cent r omen. Text += ( char ) ( val or [ i ] - 192) ;
}
}
br eak;
case 55: / / 7 =
TELDEST1
i f ( val or [ 0] == 255)
dat ok[ 1] = f al se;
el se
{
dat ok[ 1] = t r ue;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
122
t el dest 1. Text =
" " ;
f or ( i = 0; i <
9; i ++)
{
t el dest 1. Text
+= val or [ i ] ;
}
st el dest 1 =
t el dest 1. Text ;
}
br eak;
case 56: / / 8 =
TELDEST2
i f ( val or [ 0] == 255)
dat ok[ 2] = f al se;
el se
{
dat ok[ 2] = t r ue;
t el dest 2. Text =
" " ;
f or ( i = 0; i <
9; i ++)
{
t el dest 2. Text
+= val or [ i ] ;
}
st el dest 2 =
t el dest 2. Text ;
}
br eak;
}
pcbusy = f al se;
}
el se
{
b = ( i nt ) nocar s + 1; / /
par a que no vuel va a ent r ar en el FOR

t hi s. r eci bi dousb. I t ems. Add( " Er r or en r ecepci n de dat o. " ) ;

t hi s. r eci bi dousb. Sel ect edI ndex = t hi s. r eci bi dousb. I t ems. Count - 1;
f al l o = t r ue;
pcbusy = f al se;
MessageBox. Show( " Ha ocur r i do
un er r or cr t i co en l a comuni caci n PC <- - > PI C\ nDesconect a el
di sposi t i vo. " , " ERROR" , MessageBoxBut t ons. OK, MessageBoxI con. Er r or ) ;
Appl i cat i on. Exi t ( ) ;

}
}
}
}
el se / / si es or den 9
{
i f ( pcom== 3) / / envi o dat os 91, 92 o
93
{
usbapi . envi aUSB( or den2) ; / /
envi amos or den2
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
123

t hi s. envi adousb. I t ems. Add( ( char ) ( or den2) + " ( " + ( or den2) + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de
100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / r eci bi mos de 1 en 1 byt e! ! !
t hi s. r eci bi dousb. I t ems. Add( cad1 + " ( "
+ ( i nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

f or ( b = 0; b < nocar s; b++)
{
b1 = ( ui nt ) cad2[ b] ; / /
cad2=cadena a envi ar
/ / b1=val or asci i del car act er a
envi ar
usbapi . envi aUSB( b1) ;

t hi s. envi adousb. I t ems. Add( ( char ) b1 + " ( " + b1 + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay
de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / r eci bi mos de 1 en 1 byt e! ! !
t hi s. r eci bi dousb. I t ems. Add( " Dat o
" + b + " =" + cad1 + " ( " + ( ui nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

r esul t [ b] = cad1;

i f ( ( b1 ! =
( ui nt ) cad1) | | ( ( i nt ) cad1==4) )
{
b = ( i nt ) nocar s;
b1 = 4;
usbapi . envi aUSB( b1) ; / / se
envi a byt e 04 par a i ndi car er r or
pcbusy = f al se;
}
}
b1 = 13; / / se envi a
<CR>
usbapi . envi aUSB( b1) ;
t hi s. envi adousb. I t ems. Add( " Ul t i mo
dat o=" + ( char ) b1 + " ( " + b1 + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de
100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
t hi s. r eci bi dousb. I t ems. Add( " Ul t i mo
dat o=" + cad1 + " ( " + ( i nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;
pcbusy = f al se;
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
124

el se / / si pcom==4 , pet i ci on de dat os
{
/ / si es or den 9! ! ! ! ! ! !
/ / ar r i ba hemos envi ado el 1er y 2
byt e, y r epet i do 2 byt e.
/ / hemos r eci bi do y conf i r mado el
byt e de ' dat o 0'
/ / aqui l eer emos el ' dat o 1' y
post er i or es, i r emos r ebot ando
/ / l os car act er es que vayamos
r eci bi endo

f or ( b = 1; b < nocar s+1; b++)
/ / nocar s=100 ( 0 a 99) smscon: nocar s=5
{
Thr ead. Sl eep( del ay) ; / / del ay
de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / <- - oj o! ! !
t hi s. r eci bi dousb. I t ems. Add( " Dat o
" + b + " =" + cad1 + " ( " + ( ui nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

c = ( ui nt ) cad1;
r esul t [ b] = cad1;
i f ( ( c ! = 4) && ( c ! = 13) ) / / si
no hay er r or y no <CR>
{
usbapi . envi aUSB( c) ;

t hi s. envi adousb. I t ems. Add( " Dat o " + b + " =" + ( char ) c + " ( " + c + " ) " ) ;
t hi s. envi adousb. Sel ect edI ndex
= t hi s. envi adousb. I t ems. Count - 1;
}
i f ( c == 13) / / si <CR>
{

t hi s. r eci bi dousb. I t ems. Add( " Dat o r eci bi do cor r ect ament e. " ) ;

t hi s. r eci bi dousb. Sel ect edI ndex = t hi s. r eci bi dousb. I t ems. Count - 1;
swi t ch ( or den2)
{
case 53: / / 5 = SMS1
i f ( r esul t [ 0] == 255)
{
dat ok[ 3] = f al se;
sms1. Text =
" ( vac o) " ;
}
el se
{
dat ok[ 3] = t r ue;
sms1. Text = " " ;
f or ( i = 0; i <
b; i ++)
{
sms1. Text +=
r esul t [ i ] ;
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
125
ssms1 =
sms1. Text ;
}
br eak;
case 54: / / 6 = SMS2
i f ( r esul t [ 0] == 255)
{
dat ok[ 4] = f al se;
sms2. Text =
" ( vac o) " ;
}
el se
{
dat ok[ 4] = t r ue;
sms2. Text = " " ;
f or ( i = 0; i <
b; i ++)
{
sms2. Text +=
r esul t [ i ] ;
}
ssms2 =
sms2. Text ;
}
br eak;
case 55: / / 7 = SMSCON
i f ( r esul t [ 0] == 255)
{
dat ok[ 5] = f al se;
smscon. Text =
" ( vac o) " ;
pass. Text = " " ;
val . Text = " " ;
}
el se
{
dat ok[ 5] = t r ue;
smscon. Text = " " ;
pass. Text = " " ;
ssmscon = " " ;
f or ( i = 0; i <
4; i ++)
{
smscon. Text
+= r esul t [ i ] ;
pass. Text +=
r esul t [ i ] ;
ssmscon +=
r esul t [ i ] ;
}
smscon. Text +=
' , ' + r esul t [ 4] ;
ssmscon += " , " +
r esul t [ 4] ;
val . Text = " " ;
val . Text +=
r esul t [ 4] ;


t hi s. i nf o. I t ems. Add( " ssmscon=" + ssmscon) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
126

t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
}
br eak;
}
pcbusy = f al se;
b = ( i nt ) nocar s; / / par a
que no vuel va a ent r ar en el FOR
}
i f ( c==4)
{


t hi s. r eci bi dousb. I t ems. Add( " Er r or en r ecepci n de dat o. " ) ;

t hi s. r eci bi dousb. Sel ect edI ndex = t hi s. r eci bi dousb. I t ems. Count - 1;
b = ( i nt ) nocar s; / / par a
que no vuel va a ent r ar en el FOR
pcbusy = f al se;
f al l o = t r ue;
}

}
/ / l eer conf i r maci on
pcom= 0;
}
}
}
}
}
comando. Text = nul l ;
/ / f al l o = f al se;
}

el se / / >>>>>>>>>>>>>>>>>> comando AT <<<<<<<<<<<<<<<<<<<<<
{
i f ( or den == 65) / / si es ' A'
{
b1 = 0;
cat = t r ue;
f or ( b = 0; b < l ; b++)
{
b1 = ( ui nt ) cad2[ b] ; / / cad2=cadena a envi ar en
mayuscul as
/ / b1=val or asci i del car act er a envi ar
usbapi . envi aUSB( b1) ;
t hi s. envi adousb. I t ems. Add( ( char ) b1 + " ( " + b1 +
" ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos de 1 en 1 byt e! ! !
t hi s. r eci bi dousb. I t ems. Add( cad1 + " ( " +
( ui nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

i f ( b1 ! = ( ui nt ) cad1)
{
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
127
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos de 1 en 1 byt e! ! !
t hi s. r eci bi dousb. I t ems. Add( cad1 + " ( " +
( ui nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;

i f ( ( ui nt ) cad1 == 4)
{
cat = f al se;
b = l ;
b1 = 4;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
usbapi . envi aUSB( b1) ; / / se envi a
byt e 04 par a i ndi car er r or
t hi s. envi adousb. I t ems. Add( " Er r or - >4" ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
pcbusy = f al se;
}
}
}
/ / una vez envi ados t odos l os car act er es del comando
AT
i f ( cat == t r ue)
{
/ / envi ar <CR> f i nal de t r ama
b1 = 13;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
usbapi . envi aUSB( b1) ;
t hi s. envi adousb. I t ems. Add( ( char ) b1 + " ( " + b1 +
" ) " ) ;
t hi s. envi adousb. Sel ect edI ndex =
t hi s. envi adousb. I t ems. Count - 1;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos de 1 en 1 byt e! ! !
t hi s. r eci bi dousb. I t ems. Add( cad1 + " ( " +
( ui nt ) cad1 + " ) " ) ;
t hi s. r eci bi dousb. Sel ect edI ndex =
t hi s. r eci bi dousb. I t ems. Count - 1;
}

/ / t r ama envi ada ok
comando. Text = nul l ;
pcbusy = f al se;
}
}
cat = f al se;
pcom= 0;
/ / f al l o = f al se;
}

pr i vat e voi d Recepci on( obj ect sender ,
Syst em. I O. Por t s. Ser i al Dat aRecei vedEvent Ar gs e)
{
char [ ] r ec=new char [ 160] ;
/ / st r i ng r ec2;
/ / por el puer t o ser i e r eci bi r emos l os comandos AT que or dene
el PI C o
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
128
/ / sea que r eci bi r emos una cadena de ci er t a l ongi t ud que i r
var i ando
/ / POR LO TANTO: no hay que hacer nada con est a t r ama, sol o
most r ar l a.
/ / f or mat o: AT+CPI N=1234<CR>
/ / AT+CSCA=+34656000311<CR>
/ / i nt l r x = 0;
/ / i nt i t ;
Thr ead. Sl eep( 80) ; / / par a que d t i empo de l eer t odos l os
byt es
r x = t hi s. por t . ReadExi st i ng( ) ; / / r x es un st r i ng
/ / l r x = r x. Lengt h;
t r amar ec. Text = r x;
t hi s. t r amasr ec. I t ems. Add( r x) ;
t hi s. t r amasr ec. Sel ect edI ndex = t hi s. t r amasr ec. I t ems. Count -
1;
/ *
r ec2 = " ( " ;
f or ( i t = 0; i t < l r x; i t ++)
{
r ec[ i t ] = r x[ i t ] ;
i f ( r ec[ i t ] < 33) / / si no es un car act er
{
r ec2 += ( ui nt ) r ec[ i t ] ;
}
el se
r ec2 += r ec[ i t ] ;
}
r ec2 += " ) " ;
t hi s. t r amasr ec. I t ems. Add( r ec2) ;
t hi s. t r amasr ec. Sel ect edI ndex = t hi s. t r amasr ec. I t ems. Count -
1;
r ec2 = nul l ;
r ec[ 0] =' \ 0' ;
*/
r x = nul l ;
}
pr i vat e voi d sal i r _Cl i ck( obj ect sender , Event Ar gs e)
{
Appl i cat i on. Exi t ( ) ;
}
pr i vat e voi d bot _conect ar _Cl i ck( obj ect sender , Event Ar gs e)
{
Conect ar ( ) ;
bot _conect ar . Enabl ed = f al se;
bot _desconect ar . Enabl ed = t r ue;
bot _envi ar . Enabl ed = f al se;
}
pr i vat e voi d Conect ar ( )
{
por t . Open( ) ;
}
pr i vat e voi d Desconect ar ( )
{
por t . Cl ose( ) ;
bot _conect ar . Enabl ed = t r ue;
bot _desconect ar . Enabl ed = f al se;
bot _envi ar . Enabl ed = f al se;
comando. Text = " " ;
}
pr i vat e voi d bot _desconect ar _Cl i ck( obj ect sender , Event Ar gs e)
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
129
{
Desconect ar ( ) ;
}
pr i vat e voi d bot l i mpi ar usb_Cl i ck( obj ect sender , Event Ar gs e)
{
envi adousb. I t ems. Cl ear ( ) ;
r eci bi dousb. I t ems. Cl ear ( ) ;
i nf o. I t ems. Cl ear ( ) ;
}

pr i vat e voi d t i mer 1_Ti ck( obj ect sender , Event Ar gs e)
{
char t i m;
ui nt i t i m;
l eer f l ag++;
onl i ne = usbapi . Conexi on( ) ; / / aj ust ada una t empor i zaci on
de 500ms

i f ( onl i ne == 1) / / est a conect ado?
{
t i cs++;
st at usl abel . Text = " PFC - Cont r ol de mdul o GSM desde
mi cr ocont r ol ador . <<ONLI NE>>" ;
bot _l eer pi c. Enabl ed = t r ue;
bot _car gar dat os. Enabl ed = t r ue;
comando. Enabl ed = t r ue;
i f ( ( ci ncoseg == 0) &&( me == 0) )
{
t hi s. i nf o. I t ems. Add( " Esper a de 5s ant es de 1er
Comando AT. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
ci ncoseg = 1;
}
me = 2;
i f ( ( comando. Text . Lengt h > 0) &&( ! pcbusy) )
bot _envi ar . Enabl ed = t r ue;
i f ( ( ! pi cl ei do) &&( ! pi cbusy) &&( t i cs>10) &&( r eady3>=3) )
/ / t i cs>10: 5 seg
{
t i cs = 0;
r eady3=0;
l eer = t r ue;
}
i f ( me == 1)
me = 2;

}
el se
{
bot _l eer pi c. Enabl ed = f al se;
bot _car gar dat os. Enabl ed = f al se;
t i cs = 0;
/ / bot _envi ar . Enabl ed = f al se; se gest i ona en
comando_t ext changed

est adopi c. Text = " " ;
st at usl abel . Text = " PFC - Cont r ol de mdul o GSM desde
mi cr ocont r ol ador . <<OFFLI NE>>" ;

i f ( me == 1)
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
130
pi cl ei do = f al se;
car gar = f al se;
f al l o = f al se;
pi cbusy = t r ue;
pcbusy = f al se;
y = 0;
ci ncoseg = 0;

dat ok[ 0] = f al se;
dat ok[ 1] = f al se;
dat ok[ 2] = f al se;
dat ok[ 3] = f al se;
dat ok[ 4] = f al se;
dat ok[ 5] = f al se;

dat t x[ 0] = f al se;
dat t x[ 1] = f al se;
dat t x[ 2] = f al se;
dat t x[ 3] = f al se;
dat t x[ 4] = f al se;
dat t x[ 5] = f al se;
}

i f ( me==0)
{
me = 1;
MessageBox. Show( " El di sposi t i vo Pi cModemno est
conect ado. " , " Adver t enci a" , MessageBoxBut t ons. OK,
MessageBoxI con. War ni ng) ;
}
i f ( me == 2)
{
me = 1;
MessageBox. Show( " Se ha desconect ado el di sposi t i vo
Pi cModem. " , " I nf or maci n" , MessageBoxBut t ons. OK,
MessageBoxI con. I nf or mat i on) ;
}
}
i f ( ( onl i ne == 1) && ( ! pcbusy) && ( l eer f l ag >= 2) )
{
l eer f l ag = 0; / / asi ent r a cada segundo
pcbusy = t r ue;
t i m= ( char ) usbapi . r eci beUSB( ) ;
i t i m= ( ui nt ) t i m;
/ / t hi s. i nf o. I t ems. Add( " Lei do: " + i t i m) ;
/ / t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
i f ( i t i m! = 4)
{
swi t ch ( i t i m)
{
case 1:
pi cbusy = f al se;
est adopi c. Text = " PI C: READY" ;
r eady3++;
i f ( oper ador a. Text == " No di sponi bl e. " )
{
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
oper ador a. Text = " Leyendo. . . " ;
cent r omen. Text = " Leyendo. . . " ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
131
comando. Text = " 6" ; / / l ect ur a
del cent r o de mensaj es
envi ar usb( ) ;
}
}
br eak;
case 2:
pi cbusy = f al se;
r eady3++;
est adopi c. Text = " PI C: PARAMETROS" ;
br eak;
case 3:
pi cbusy = f al se;
est adopi c. Text = " PI C: PI N" ;
br eak;
case 5:
pi cbusy = f al se;
est adopi c. Text = " PI C: CSCA" ;
br eak;
case 6:
pi cbusy = f al se;
est adopi c. Text = " PI C: CMGF" ;
br eak;
case 7:
pi cbusy = f al se;
est adopi c. Text = " PI C: CNMI " ;
br eak;
case 8:
pi cbusy = f al se;
est adopi c. Text = " PI C: BORR. SMS" ;
br eak;
case 9:
pi cbusy = f al se;
est adopi c. Text = " PI C: ENV. SMS" ;
br eak;
case 15:
pi cbusy = f al se;
est adopi c. Text = " RS232: OK" ;
br eak;
case 16:
pi cbusy = f al se;
est adopi c. Text = " RS232: ERROR" ;
br eak;
case 17:
pi cbusy = f al se;
est adopi c. Text = " RS232: SI M PI N" ;
br eak;
case 18:
pi cbusy = f al se;
est adopi c. Text = " RS232: SI M READY" ;
br eak;
case 19:
pi cbusy = f al se;
est adopi c. Text = " RS232: CSCA" ;
br eak;
case 20:
pi cbusy = f al se;
t hi s. i nf o. I t ems. Add( " SMS r eci bi do: coi nci de
PASS. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
132
br eak;
case 21:
pi cbusy = f al se;
t hi s. i nf o. I t ems. Add( " SMS r eci bi do: coi nci de
PASS+VALOR. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
br eak;
case 22:
pi cbusy = f al se;
t hi s. i nf o. I t ems. Add( " SMS r eci bi do. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
br eak;

case 0:
pi cbusy = t r ue;
est adopi c. Text = " PI C: BUSY" ;
r eady3 = 0;
br eak;
}
}
el se
f al l o = t r ue;

pcbusy = f al se;
}

/ / - - - - - - - - - - - - - - - - - - CARGAR - - - - - - - - - - - - - - - - - -
i f ( ( car gar ) &&( ! f al l o) &&( ! pi cbusy) )
{
y++;
pcbusy = t r ue;

swi t ch ( y)
{
case 1:
i f ( spi n ! = pi nbox. Text )
{
comando. Text = " 14" + pi nbox. Text ; / /
envi o de pi n
envi ar usb( ) ;
}
el se
{
t hi s. i nf o. I t ems. Add( " El PI N es el mi smo. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
br eak;
case 2:
i f ( st el dest 1 ! = t el dest 1. Text )
{
comando. Text = " 29" + t el dest 1. Text ; / /
envi o de t el dest 1
envi ar usb( ) ;
}
el se
{
t hi s. i nf o. I t ems. Add( " El TD1 es el mi smo. " ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
133
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
br eak;
case 3:
i f ( st el dest 2 ! = t el dest 2. Text )
{
comando. Text = " 39" + t el dest 2. Text ; / /
envi o de t el dest 2
envi ar usb( ) ;
}
el se
{
t hi s. i nf o. I t ems. Add( " El TD2 es el mi smo. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
br eak;
case 4:
i f ( ssms1 ! = sms1. Text )
{
comando. Text = " 91" ; / / envi o de sms1
envi ar usb( ) ;
}
el se
{
t hi s. i nf o. I t ems. Add( " El SMS1 es el mi smo. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
br eak;
case 5:
i f ( ssms2 ! = sms2. Text )
{
comando. Text = " 92" ; / / envi o de sms2
envi ar usb( ) ;
}
el se
{
t hi s. i nf o. I t ems. Add( " El SMS2 es el mi smo. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
br eak;
case 6:
i f ( ssmscon ! = smscon. Text )
{
comando. Text = " 93" ; / / envi o de smscon
envi ar usb( ) ;
}
el se
{
t hi s. i nf o. I t ems. Add( " El SMSCON es el
mi smo. " ) ;
t hi s. i nf o. Sel ect edI ndex =
t hi s. i nf o. I t ems. Count - 1;
}
car gar = f al se;
y = 0;
br eak;
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
134
}

/ / - - - - - - - - - - - - - - - - - - - - LEER - - - - - - - - - - - - - - - - - - -
i f ( ( l eer ) && ( ! f al l o) && ( ! pi cbusy) )
{
x++;
pcbusy = t r ue;

swi t ch ( x)
{
case 1:
comando. Text = " 5" ; / / l ect ur a de pi n
envi ar usb( ) ;
br eak;
case 2:
comando. Text = " 6" ; / / l ect ur a del cent r o de
mensaj es
envi ar usb( ) ;
br eak;
case 3:
comando. Text = " 7" ; / / l ect ur a del
dest i nat ar i o 1
envi ar usb( ) ;
br eak;
case 4:
comando. Text = " 8" ; / / l ect ur a del
dest i nat ar i o 2
envi ar usb( ) ;
br eak;
case 5:
comando. Text = " 95" ; / / l ect ur a del sms1
envi ar usb( ) ;
br eak;
case 6:
comando. Text = " 96" ; / / l ect ur a del sms2
envi ar usb( ) ;
br eak;
case 7:
comando. Text = " 97" ; / / l ect ur a del sms de
cont r ol
envi ar usb( ) ;
l eer = f al se;
x = 0;
pi cl ei do = t r ue;

cadi nf o = " DATOS ALMACENADOS EN Pi cModem: \ n" ;
cadi nf o2 = " \ n\ nDATOS NECESARI OS: \ n" ;
i f ( dat ok[ 0] )
cadi nf o += " \ n PI N: " + pi nbox. Text ;
el se
cadi nf o2 += " \ n PI N: cont r asea de 4
d gi t os" ;
i f ( dat ok[ 1] )
cadi nf o += " \ n TELDEST1: " + t el dest 1. Text ;
el se
cadi nf o2 += " \ n TELDEST1: t el ef ono
dest i nat ar i o 1 de 9 d gi t os" ;
i f ( dat ok[ 2] )
cadi nf o += " \ n TELDEST2: " + t el dest 2. Text ;
el se
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
135
cadi nf o2 += " \ n TELDEST2: t el ef ono
dest i nat ar i o 2 de 9 d gi t os" ;
i f ( dat ok[ 3] )
cadi nf o += " \ n SMS1: " + sms1. Text ;
el se
cadi nf o2 += " \ n SMS1: mensaj e 1 de hast a
100 car act er es" ;
i f ( dat ok[ 4] )
cadi nf o += " \ n SMS2: " + sms2. Text ;
el se
cadi nf o2 += " \ n SMS2: mensaj e 2 de hast a
100 car act er es" ;
i f ( dat ok[ 5] )
cadi nf o += " \ n SMSCON: " + smscon. Text ;
el se
cadi nf o2 += " \ n SMSCON: mensaj e consi gna de
4+1 car act er es" ;

i f ( ! dat ok[ 0] && ! dat ok[ 1] && ! dat ok[ 2] &&
! dat ok[ 3] && ! dat ok[ 4] && ! dat ok[ 5] )
{
cadi nf o += " \ n ( VAC O) " ;
}
i f ( cadi nf o2 ! = " \ n\ nDATOS NECESARI OS: \ n" )
cadi nf o += cadi nf o2;

MessageBox. Show( cadi nf o, " I nf or maci n. " ,
MessageBoxBut t ons. OK, MessageBoxI con. I nf or mat i on) ;
t el dest 1. Enabl ed = t r ue;
t el dest 2. Enabl ed = t r ue;

pcbusy = f al se;
br eak;
}
}

i f ( ( envusb) &&( ! pi cbusy) )
{
envusb = f al se;
envi ar usb( ) ;
}
i f ( f al l o)
{
car gar = f al se;
y = 0;
f al l o = f al se;
}
}

pr i vat e voi d comando_Text Changed_1( obj ect sender , Event Ar gs e)
{
i f ( comando. Text ! = " " )
{
i f ( comando. Text [ 0] == ' 0' )
{
t hi s. i nf o. I t ems. Add( " No se puede comenzar una t r ama
con el car act er 0. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
comando. Text = " " ;
}
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
136
st r i ng aux;
aux = comando. Text ;
i f ( ( onl i ne == 1) && ( aux. Lengt h > 0) )
{
bot _envi ar . Enabl ed = t r ue;
}
el se
{
bot _envi ar . Enabl ed = f al se;
}
}
pr i vat e voi d bot _envi ar _Cl i ck_1( obj ect sender , Event Ar gs e)
{
bot _envi ar . Enabl ed = f al se;
envusb = t r ue;
}
pr i vat e voi d t el dest _Text Changed( obj ect sender , Event Ar gs e)
{
t el dest 1. Enabl ed = t r ue;
i f ( t el dest 1. Text ! = " " )
{
i f ( ( t el dest 1. Text [ 0] ! = ' 6' ) &&( t el dest 1. Text [ 0] ! =255) )
{
t hi s. i nf o. I t ems. Add( " El nmer o de t el f ono ha de
comenzar por 6. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
t el dest 1. Text = " " ;
}
}
}
pr i vat e voi d bot l i mpi ar ser i e_Cl i ck( obj ect sender , Event Ar gs e)
{
t r amar ec. Text = " " ;
t r amasr ec. I t ems. Cl ear ( ) ;
}
pr i vat e voi d sms1_Text Changed( obj ect sender , Event Ar gs e)
{
i nt i ;
sms1. Enabl ed = t r ue;
i = 100 - sms1. Text . Lengt h;
cont sms1. Text = Conver t . ToSt r i ng( i ) ;
i f ( sms1. Text . Lengt h > 0)
{
i f ( sms1. Text [ 0] == ' ?' )
{
sms1. Text = " " ;
t hi s. i nf o. I t ems. Add( " El pr i mer car act er no puede ser
' ?' . " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
}
}
}
pr i vat e voi d cent r omen_Text Changed( obj ect sender , Event Ar gs e)
{
swi t ch ( cent r omen. Text )
{
case " 656000311" :
oper ador a. Text = " Or ange" ;
br eak;
case " 607003110" :
oper ador a. Text = " Vodaf one" ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
137
br eak;
case " 609090909" :
oper ador a. Text = " Movi st ar " ;
br eak;
case " 622996111" :
oper ador a. Text = " Yoi go" ;
br eak;
case " ?????????" :
oper ador a. Text = " No di sponi bl e. " ;
cent r omen. Text = " No di sponi bl e. " ;
br eak;
def aul t :
i f ( oper ador a. Text ! =" No di sponi bl e. " )
oper ador a. Text = " ( desconoci do) " ;
br eak;
}
}
pr i vat e voi d pi nbox_Text Changed( obj ect sender , Event Ar gs e)
{
pi nbox. Enabl ed = t r ue;
}
pr i vat e voi d pass_Text Changed( obj ect sender , Event Ar gs e)
{
smscon. Text = " " ;
i f ( ( pass. Text . Lengt h == 4) &&( val . Text . Lengt h==1) )
{
smscon. Text = pass. Text + val . Text ;
}
}
pr i vat e voi d val _Text Changed( obj ect sender , Event Ar gs e)
{
smscon. Text = " " ;
i f ( ( pass. Text . Lengt h == 4) && ( val . Text . Lengt h == 1) )
{
smscon. Text = pass. Text + val . Text ;
}
}
pr i vat e voi d bot _l eer pi c_Cl i ck( obj ect sender , Event Ar gs e)
{
l i mpi ar t odo( ) ;
l eer = t r ue;
}
pr i vat e voi d t el dest 2_Text Changed( obj ect sender , Event Ar gs e)
{
t el dest 2. Enabl ed = t r ue;
i f ( t el dest 2. Text ! = " " )
{
i f ( ( t el dest 2. Text [ 0] ! = ' 6' ) &&( t el dest 2. Text [ 0] ! =255) )
{
t hi s. i nf o. I t ems. Add( " El nmer o de t el f ono ha de
comenzar por 6. " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
t el dest 2. Text = " " ;
}
}
}
pr i vat e voi d sms2_Text Changed( obj ect sender , Event Ar gs e)
{
i nt i ;
sms2. Enabl ed = t r ue;
i = 100 - sms2. Text . Lengt h;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
138
cont sms2. Text = Conver t . ToSt r i ng( i ) ;
i f ( sms2. Text . Lengt h > 0)
{
i f ( sms2. Text [ 0] == ' ?' )
{
sms2. Text = " " ;
t hi s. i nf o. I t ems. Add( " El pr i mer car act er no puede ser
' ?' . " ) ;
t hi s. i nf o. Sel ect edI ndex = t hi s. i nf o. I t ems. Count - 1;
}
}
}

pr i vat e voi d bot _car gar dat os_Cl i ck( obj ect sender , Event Ar gs e)
{
cadi nf o = " Exi st en campos si n r el l enar . \ n\ n" ;

i f ( pi nbox. Text . Lengt h == 4)
dat t x[ 0] = t r ue;
el se
cadi nf o += " PI N. \ n" ;

i f ( t el dest 1. Text . Lengt h == 9)
dat t x[ 1] = t r ue;
el se
cadi nf o += " Tel f ono dest i nat ar i o 1. \ n" ;

i f ( t el dest 2. Text . Lengt h == 9)
dat t x[ 2] = t r ue;
el se
cadi nf o += " Tel f ono dest i nat ar i o 2. \ n" ;

i f ( sms1. Text . Lengt h >0)
dat t x[ 3] = t r ue;
el se
cadi nf o += " SMS 1. \ n" ;

i f ( sms2. Text . Lengt h > 0)
dat t x[ 4] = t r ue;
el se
cadi nf o += " SMS 2. \ n" ;

i f ( smscon. Text ! = " " )
dat t x[ 5] = t r ue;
el se
cadi nf o += " SMS DE CONTROL. \ n" ;

i f ( dat t x[ 0] && dat t x[ 1] && dat t x[ 2] && dat t x[ 3] && dat t x[ 4]
&& dat t x[ 5] )
{
car gar = t r ue;
/ / Thr ead. Sl eep( 20) ; / / del ay de 20ms
}
el se
{
MessageBox. Show( cadi nf o, " ERROR! " , MessageBoxBut t ons. OK,
MessageBoxI con. Er r or ) ;
}
}

pr i vat e voi d bot _l i mpi ar t odo_Cl i ck( obj ect sender , Event Ar gs e)
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
139
{
i nt i ;
l i mpi ar t odo( ) ;
f or ( i = 0; i <= 5; i ++)
{
dat t x[ i ] = f al se;
}
}
pr i vat e voi d l i mpi ar t odo( )
{
envi adousb. I t ems. Cl ear ( ) ;
r eci bi dousb. I t ems. Cl ear ( ) ;
i nf o. I t ems. Cl ear ( ) ;
t r amar ec. Text = " " ;
t r amasr ec. I t ems. Cl ear ( ) ;
sms1. Text = " " ;
sms2. Text = " " ;
pi nbox. Text = " " ;
pass. Text = " " ;
val . Text = " " ;
t el dest 1. Text = " " ;
t el dest 2. Text = " " ;
}
pr i vat e voi d Envi ar ( )
{
/ / Wr i t e a char act er
t r amar ec. Text +=( char ) ( 13) ;
por t . Wr i t e( t r amar ec. Text ) ;
t hi s. t r amasr ec. I t ems. Add( t r amar ec. Text ) ;
t hi s. t r amasr ec. Sel ect edI ndex = t hi s. t r amasr ec. I t ems. Count -
1;
/ / Wr i t e a set of byt es
/ / por t . Wr i t e( new byt e[ ] { 0x0A, 0xE2, 0xFF }, 0, 3) ;
}

pr i vat e voi d bot _envser i e_Cl i ck( obj ect sender , Event Ar gs e)
{
Envi ar ( ) ;
}
}
}


















PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
140
8.3.2 Picmodem.Designer.cs
namespace Pi cModem
{
par t i al cl ass Pi cModem
{
/ / / <summar y>
/ / / Requi r ed desi gner var i abl e.
/ / / </ summar y>
pr i vat e Syst em. Component Model . I Cont ai ner component s = nul l ;

/ / / <summar y>
/ / / Cl ean up any r esour ces bei ng used.
/ / / </ summar y>
/ / / <par amname=" di sposi ng" >t r ue i f managed r esour ces shoul d be
di sposed; ot her wi se, f al se. </ par am>
pr ot ect ed over r i de voi d Di spose( bool di sposi ng)
{
i f ( di sposi ng && ( component s ! = nul l ) )
{
component s. Di spose( ) ;
}
base. Di spose( di sposi ng) ;
}

#r egi on Wi ndows For mDesi gner gener at ed code

/ / / <summar y>
/ / / Requi r ed met hod f or Desi gner suppor t - do not modi f y
/ / / t he cont ent s of t hi s met hod wi t h t he code edi t or .
/ / / </ summar y>
pr i vat e voi d I ni t i al i zeComponent ( )
{
t hi s. component s = new Syst em. Component Model . Cont ai ner ( ) ;
Syst em. Component Model . Component Resour ceManager r esour ces =
new Syst em. Component Model . Component Resour ceManager ( t ypeof ( Pi cModem) ) ;
t hi s. bot l i mpi ar usb = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. gr oupBox2 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. bot _envser i e = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. bot l i mpi ar ser i e = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. t r amar ec = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. t r amasr ec = new Syst em. Wi ndows. For ms. Li st Box( ) ;
t hi s. bot _desconect ar = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. l abel 12 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. bot _conect ar = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. sal i r = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. st at usSt r i p1 = new Syst em. Wi ndows. For ms. St at usSt r i p( ) ;
t hi s. st at usl abel = new
Syst em. Wi ndows. For ms. Tool St r i pSt at usLabel ( ) ;
t hi s. t i mer 1 = new
Syst em. Wi ndows. For ms. Ti mer ( t hi s. component s) ;
t hi s. l abel 4 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. r eci bi dousb = new Syst em. Wi ndows. For ms. Li st Box( ) ;
t hi s. l abel 3 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. envi adousb = new Syst em. Wi ndows. For ms. Li st Box( ) ;
t hi s. gr oupBox3 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. est adopi c = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 2 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. i nf o = new Syst em. Wi ndows. For ms. Li st Box( ) ;
t hi s. l abel 1 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. bot _envi ar = new Syst em. Wi ndows. For ms. But t on( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
141
t hi s. comando = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. gr oupBox5 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. oper ador a = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. cent r omen = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 10 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. pi nbox = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 9 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 7 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. bot _l eer pi c = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. bot _car gar dat os = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. t el dest 1 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 8 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. gr oupBox1 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. l abel 17 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. cont sms2 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 18 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. cont sms1 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 19 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. t el dest 2 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. sms2 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 6 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. sms1 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 13 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. gr oupBox4 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. l abel 16 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 15 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. val = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 14 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. pass = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 11 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. smscon = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. bot _l i mpi ar t odo = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. gr oupBox2. SuspendLayout ( ) ;
t hi s. st at usSt r i p1. SuspendLayout ( ) ;
t hi s. gr oupBox3. SuspendLayout ( ) ;
t hi s. gr oupBox5. SuspendLayout ( ) ;
t hi s. gr oupBox1. SuspendLayout ( ) ;
t hi s. gr oupBox4. SuspendLayout ( ) ;
t hi s. SuspendLayout ( ) ;
/ /
/ / bot l i mpi ar usb
/ /
t hi s. bot l i mpi ar usb. Locat i on = new Syst em. Dr awi ng. Poi nt ( 342,
21) ;
t hi s. bot l i mpi ar usb. Name = " bot l i mpi ar usb" ;
t hi s. bot l i mpi ar usb. Si ze = new Syst em. Dr awi ng. Si ze( 64, 21) ;
t hi s. bot l i mpi ar usb. TabI ndex = 21;
t hi s. bot l i mpi ar usb. Text = " LI MPI AR" ;
t hi s. bot l i mpi ar usb. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot l i mpi ar usb. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot l i mpi ar usb_Cl i ck) ;
/ /
/ / gr oupBox2
/ /
t hi s. gr oupBox2. Cont r ol s. Add( t hi s. bot _envser i e) ;
t hi s. gr oupBox2. Cont r ol s. Add( t hi s. bot l i mpi ar ser i e) ;
t hi s. gr oupBox2. Cont r ol s. Add( t hi s. t r amar ec) ;
t hi s. gr oupBox2. Cont r ol s. Add( t hi s. t r amasr ec) ;
t hi s. gr oupBox2. Cont r ol s. Add( t hi s. bot _desconect ar ) ;
t hi s. gr oupBox2. Cont r ol s. Add( t hi s. l abel 12) ;
t hi s. gr oupBox2. Cont r ol s. Add( t hi s. bot _conect ar ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
142
t hi s. gr oupBox2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 434, 12) ;
t hi s. gr oupBox2. Name = " gr oupBox2" ;
t hi s. gr oupBox2. Si ze = new Syst em. Dr awi ng. Si ze( 302, 190) ;
t hi s. gr oupBox2. TabI ndex = 6;
t hi s. gr oupBox2. TabSt op = f al se;
t hi s. gr oupBox2. Text = " Lect ur a RS- 232 ( r espuest a del modem) " ;
/ /
/ / bot _envser i e
/ /
t hi s. bot _envser i e. Locat i on = new Syst em. Dr awi ng. Poi nt ( 238,
11) ;
t hi s. bot _envser i e. Name = " bot _envser i e" ;
t hi s. bot _envser i e. Si ze = new Syst em. Dr awi ng. Si ze( 58, 30) ;
t hi s. bot _envser i e. TabI ndex = 32;
t hi s. bot _envser i e. Text = " ENVI AR" ;
t hi s. bot _envser i e. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _envser i e. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _envser i e_Cl i ck) ;
/ /
/ / bot l i mpi ar ser i e
/ /
t hi s. bot l i mpi ar ser i e. Locat i on = new Syst em. Dr awi ng. Poi nt ( 239,
44) ;
t hi s. bot l i mpi ar ser i e. Name = " bot l i mpi ar ser i e" ;
t hi s. bot l i mpi ar ser i e. Si ze = new Syst em. Dr awi ng. Si ze( 58, 21) ;
t hi s. bot l i mpi ar ser i e. TabI ndex = 31;
t hi s. bot l i mpi ar ser i e. Text = " LI MPI AR" ;
t hi s. bot l i mpi ar ser i e. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot l i mpi ar ser i e. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot l i mpi ar ser i e_Cl i ck) ;
/ /
/ / t r amar ec
/ /
t hi s. t r amar ec. Locat i on = new Syst em. Dr awi ng. Poi nt ( 93, 45) ;
t hi s. t r amar ec. MaxLengt h = 30;
t hi s. t r amar ec. Name = " t r amar ec" ;
t hi s. t r amar ec. Si ze = new Syst em. Dr awi ng. Si ze( 126, 20) ;
t hi s. t r amar ec. TabI ndex = 31;
/ /
/ / t r amasr ec
/ /
t hi s. t r amasr ec. BackCol or =
Syst em. Dr awi ng. Syst emCol or s. Cont r ol ;
t hi s. t r amasr ec. For mat t i ngEnabl ed = t r ue;
t hi s. t r amasr ec. Hor i zont al Scr ol l bar = t r ue;
t hi s. t r amasr ec. I t emHei ght = 14;
t hi s. t r amasr ec. Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 71) ;
t hi s. t r amasr ec. Name = " t r amasr ec" ;
t hi s. t r amasr ec. Si ze = new Syst em. Dr awi ng. Si ze( 291, 102) ;
t hi s. t r amasr ec. TabI ndex = 29;
/ /
/ / bot _desconect ar
/ /
t hi s. bot _desconect ar . Locat i on = new Syst em. Dr awi ng. Poi nt ( 93,
19) ;
t hi s. bot _desconect ar . Name = " bot _desconect ar " ;
t hi s. bot _desconect ar . Si ze = new Syst em. Dr awi ng. Si ze( 95, 20) ;
t hi s. bot _desconect ar . TabI ndex = 7;
t hi s. bot _desconect ar . Text = " DESCONECTAR" ;
t hi s. bot _desconect ar . UseVi sual St yl eBackCol or = t r ue;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
143
t hi s. bot _desconect ar . Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _desconect ar _Cl i ck) ;
/ /
/ / l abel 12
/ /
t hi s. l abel 12. Aut oSi ze = t r ue;
t hi s. l abel 12. Locat i on = new Syst em. Dr awi ng. Poi nt ( 47, 48) ;
t hi s. l abel 12. Name = " l abel 12" ;
t hi s. l abel 12. Si ze = new Syst em. Dr awi ng. Si ze( 40, 14) ;
t hi s. l abel 12. TabI ndex = 22;
t hi s. l abel 12. Text = " Tr ama: " ;
/ /
/ / bot _conect ar
/ /
t hi s. bot _conect ar . Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 19) ;
t hi s. bot _conect ar . Name = " bot _conect ar " ;
t hi s. bot _conect ar . Si ze = new Syst em. Dr awi ng. Si ze( 81, 20) ;
t hi s. bot _conect ar . TabI ndex = 6;
t hi s. bot _conect ar . Text = " CONECTAR" ;
t hi s. bot _conect ar . UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _conect ar . Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _conect ar _Cl i ck) ;
/ /
/ / sal i r
/ /
t hi s. sal i r . Di al ogResul t =
Syst em. Wi ndows. For ms. Di al ogResul t . Cancel ;
t hi s. sal i r . Locat i on = new Syst em. Dr awi ng. Poi nt ( 622, 422) ;
t hi s. sal i r . Name = " sal i r " ;
t hi s. sal i r . Si ze = new Syst em. Dr awi ng. Si ze( 114, 51) ;
t hi s. sal i r . TabI ndex = 5;
t hi s. sal i r . Text = " SALI R" ;
t hi s. sal i r . UseVi sual St yl eBackCol or = t r ue;
t hi s. sal i r . Cl i ck += new
Syst em. Event Handl er ( t hi s. sal i r _Cl i ck) ;
/ /
/ / st at usSt r i p1
/ /
t hi s. st at usSt r i p1. I t ems. AddRange( new
Syst em. Wi ndows. For ms. Tool St r i pI t em[ ] {
t hi s. st at usl abel }) ;
t hi s. st at usSt r i p1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 0,
485) ;
t hi s. st at usSt r i p1. Name = " st at usSt r i p1" ;
t hi s. st at usSt r i p1. Si ze = new Syst em. Dr awi ng. Si ze( 743, 22) ;
t hi s. st at usSt r i p1. TabI ndex = 7;
t hi s. st at usSt r i p1. Text = " PFC - Cont r ol ModemGSM vi a PI C. " ;
/ /
/ / st at usl abel
/ /
t hi s. st at usl abel . Name = " st at usl abel " ;
t hi s. st at usl abel . Si ze = new Syst em. Dr awi ng. Si ze( 253, 17) ;
t hi s. st at usl abel . Text = " PFC - Cont r ol ModemGSM vi a PI C.
<<OFFLI NE>>" ;
/ /
/ / t i mer 1
/ /
t hi s. t i mer 1. Enabl ed = t r ue;
t hi s. t i mer 1. I nt er val = 500;
t hi s. t i mer 1. Ti ck += new
Syst em. Event Handl er ( t hi s. t i mer 1_Ti ck) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
144
/ /
/ / l abel 4
/ /
t hi s. l abel 4. Aut oSi ze = t r ue;
t hi s. l abel 4. Locat i on = new Syst em. Dr awi ng. Poi nt ( 3, 107) ;
t hi s. l abel 4. Name = " l abel 4" ;
t hi s. l abel 4. Si ze = new Syst em. Dr awi ng. Si ze( 48, 14) ;
t hi s. l abel 4. TabI ndex = 27;
t hi s. l abel 4. Text = " Reci bi do" ;
/ /
/ / r eci bi dousb
/ /
t hi s. r eci bi dousb. BackCol or =
Syst em. Dr awi ng. Syst emCol or s. Cont r ol ;
t hi s. r eci bi dousb. For mat t i ngEnabl ed = t r ue;
t hi s. r eci bi dousb. I t emHei ght = 14;
t hi s. r eci bi dousb. Locat i on = new Syst em. Dr awi ng. Poi nt ( 5, 124) ;
t hi s. r eci bi dousb. Name = " r eci bi dousb" ;
t hi s. r eci bi dousb. Si ze = new Syst em. Dr awi ng. Si ze( 184, 60) ;
t hi s. r eci bi dousb. TabI ndex = 26;
/ /
/ / l abel 3
/ /
t hi s. l abel 3. Aut oSi ze = t r ue;
t hi s. l abel 3. Locat i on = new Syst em. Dr awi ng. Poi nt ( 3, 27) ;
t hi s. l abel 3. Name = " l abel 3" ;
t hi s. l abel 3. Si ze = new Syst em. Dr awi ng. Si ze( 45, 14) ;
t hi s. l abel 3. TabI ndex = 24;
t hi s. l abel 3. Text = " Envi ado" ;
/ /
/ / envi adousb
/ /
t hi s. envi adousb. BackCol or =
Syst em. Dr awi ng. Syst emCol or s. Cont r ol ;
t hi s. envi adousb. For mat t i ngEnabl ed = t r ue;
t hi s. envi adousb. I t emHei ght = 14;
t hi s. envi adousb. Locat i on = new Syst em. Dr awi ng. Poi nt ( 5, 44) ;
t hi s. envi adousb. Name = " envi adousb" ;
t hi s. envi adousb. Si ze = new Syst em. Dr awi ng. Si ze( 184, 60) ;
t hi s. envi adousb. TabI ndex = 25;
/ /
/ / gr oupBox3
/ /
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. est adopi c) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. l abel 2) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. i nf o) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. l abel 1) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. bot _envi ar ) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. comando) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. l abel 3) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. bot l i mpi ar usb) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. envi adousb) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. r eci bi dousb) ;
t hi s. gr oupBox3. Cont r ol s. Add( t hi s. l abel 4) ;
t hi s. gr oupBox3. Locat i on = new Syst em. Dr awi ng. Poi nt ( 12, 12) ;
t hi s. gr oupBox3. Name = " gr oupBox3" ;
t hi s. gr oupBox3. Si ze = new Syst em. Dr awi ng. Si ze( 416, 190) ;
t hi s. gr oupBox3. TabI ndex = 6;
t hi s. gr oupBox3. TabSt op = f al se;
t hi s. gr oupBox3. Text = " Comuni caci n USB" ;
/ /
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
145
/ / est adopi c
/ /
t hi s. est adopi c. Bor der St yl e =
Syst em. Wi ndows. For ms. Bor der St yl e. Fi xed3D;
t hi s. est adopi c. Locat i on = new Syst em. Dr awi ng. Poi nt ( 59, 16) ;
t hi s. est adopi c. Name = " est adopi c" ;
t hi s. est adopi c. Si ze = new Syst em. Dr awi ng. Si ze( 133, 21) ;
t hi s. est adopi c. TabI ndex = 35;
/ /
/ / l abel 2
/ /
t hi s. l abel 2. Aut oSi ze = t r ue;
t hi s. l abel 2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 193, 27) ;
t hi s. l abel 2. Name = " l abel 2" ;
t hi s. l abel 2. Si ze = new Syst em. Dr awi ng. Si ze( 63, 14) ;
t hi s. l abel 2. TabI ndex = 30;
t hi s. l abel 2. Text = " I nf or maci n" ;
/ /
/ / i nf o
/ /
t hi s. i nf o. BackCol or = Syst em. Dr awi ng. Syst emCol or s. Cont r ol ;
t hi s. i nf o. For mat t i ngEnabl ed = t r ue;
t hi s. i nf o. I t emHei ght = 14;
t hi s. i nf o. Locat i on = new Syst em. Dr awi ng. Poi nt ( 195, 44) ;
t hi s. i nf o. Name = " i nf o" ;
t hi s. i nf o. Si ze = new Syst em. Dr awi ng. Si ze( 211, 102) ;
t hi s. i nf o. TabI ndex = 29;
/ /
/ / l abel 1
/ /
t hi s. l abel 1. Aut oSi ze = t r ue;
t hi s. l abel 1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 196, 147) ;
t hi s. l abel 1. Name = " l abel 1" ;
t hi s. l abel 1. Si ze = new Syst em. Dr awi ng. Si ze( 103, 14) ;
t hi s. l abel 1. TabI ndex = 28;
t hi s. l abel 1. Text = " Envi o de par met r o: " ;
/ /
/ / bot _envi ar
/ /
t hi s. bot _envi ar . Locat i on = new Syst em. Dr awi ng. Poi nt ( 338,
155) ;
t hi s. bot _envi ar . Name = " bot _envi ar " ;
t hi s. bot _envi ar . Si ze = new Syst em. Dr awi ng. Si ze( 68, 29) ;
t hi s. bot _envi ar . TabI ndex = 1;
t hi s. bot _envi ar . Text = " ENVI AR" ;
t hi s. bot _envi ar . UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _envi ar . Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _envi ar _Cl i ck_1) ;
/ /
/ / comando
/ /
t hi s. comando. Locat i on = new Syst em. Dr awi ng. Poi nt ( 196, 164) ;
t hi s. comando. MaxLengt h = 30;
t hi s. comando. Name = " comando" ;
t hi s. comando. Si ze = new Syst em. Dr awi ng. Si ze( 136, 20) ;
t hi s. comando. TabI ndex = 23;
t hi s. comando. Text Changed += new
Syst em. Event Handl er ( t hi s. comando_Text Changed_1) ;
/ /
/ / gr oupBox5
/ /
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
146
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. oper ador a) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. cent r omen) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. l abel 10) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. pi nbox) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. l abel 9) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. l abel 7) ;
t hi s. gr oupBox5. Locat i on = new Syst em. Dr awi ng. Poi nt ( 12, 208) ;
t hi s. gr oupBox5. Name = " gr oupBox5" ;
t hi s. gr oupBox5. Si ze = new Syst em. Dr awi ng. Si ze( 186, 138) ;
t hi s. gr oupBox5. TabI ndex = 28;
t hi s. gr oupBox5. TabSt op = f al se;
t hi s. gr oupBox5. Text = " Par met r os modemGSM" ;
/ /
/ / oper ador a
/ /
t hi s. oper ador a. Bor der St yl e =
Syst em. Wi ndows. For ms. Bor der St yl e. Fi xed3D;
t hi s. oper ador a. Locat i on = new Syst em. Dr awi ng. Poi nt ( 85, 24) ;
t hi s. oper ador a. Name = " oper ador a" ;
t hi s. oper ador a. Si ze = new Syst em. Dr awi ng. Si ze( 95, 21) ;
t hi s. oper ador a. TabI ndex = 34;
/ /
/ / cent r omen
/ /
t hi s. cent r omen. Bor der St yl e =
Syst em. Wi ndows. For ms. Bor der St yl e. Fi xed3D;
t hi s. cent r omen. Locat i on = new Syst em. Dr awi ng. Poi nt ( 85, 52) ;
t hi s. cent r omen. Name = " cent r omen" ;
t hi s. cent r omen. Si ze = new Syst em. Dr awi ng. Si ze( 95, 21) ;
t hi s. cent r omen. TabI ndex = 22;
t hi s. cent r omen. Text Changed += new
Syst em. Event Handl er ( t hi s. cent r omen_Text Changed) ;
/ /
/ / l abel 10
/ /
t hi s. l abel 10. Aut oSi ze = t r ue;
t hi s. l abel 10. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 53) ;
t hi s. l abel 10. Name = " l abel 10" ;
t hi s. l abel 10. Si ze = new Syst em. Dr awi ng. Si ze( 67, 14) ;
t hi s. l abel 10. TabI ndex = 33;
t hi s. l abel 10. Text = " Cent r o SMS: " ;
/ /
/ / pi nbox
/ /
t hi s. pi nbox. Enabl ed = f al se;
t hi s. pi nbox. Locat i on = new Syst em. Dr awi ng. Poi nt ( 35, 82) ;
t hi s. pi nbox. MaxLengt h = 4;
t hi s. pi nbox. Name = " pi nbox" ;
t hi s. pi nbox. Si ze = new Syst em. Dr awi ng. Si ze( 46, 20) ;
t hi s. pi nbox. TabI ndex = 1;
t hi s. pi nbox. Text Changed += new
Syst em. Event Handl er ( t hi s. pi nbox_Text Changed) ;
/ /
/ / l abel 9
/ /
t hi s. l abel 9. Aut oSi ze = t r ue;
t hi s. l abel 9. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 85) ;
t hi s. l abel 9. Name = " l abel 9" ;
t hi s. l abel 9. Si ze = new Syst em. Dr awi ng. Si ze( 25, 14) ;
t hi s. l abel 9. TabI ndex = 30;
t hi s. l abel 9. Text = " PI N: " ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
147
/ /
/ / l abel 7
/ /
t hi s. l abel 7. Aut oSi ze = t r ue;
t hi s. l abel 7. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 25) ;
t hi s. l abel 7. Name = " l abel 7" ;
t hi s. l abel 7. Si ze = new Syst em. Dr awi ng. Si ze( 56, 14) ;
t hi s. l abel 7. TabI ndex = 24;
t hi s. l abel 7. Text = " Oper ador : " ;
/ /
/ / bot _l eer pi c
/ /
t hi s. bot _l eer pi c. Locat i on = new Syst em. Dr awi ng. Poi nt ( 447,
384) ;
t hi s. bot _l eer pi c. Name = " bot _l eer pi c" ;
t hi s. bot _l eer pi c. Si ze = new Syst em. Dr awi ng. Si ze( 158, 32) ;
t hi s. bot _l eer pi c. TabI ndex = 39;
t hi s. bot _l eer pi c. Text = " LEER PARMETROS" ;
t hi s. bot _l eer pi c. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _l eer pi c. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _l eer pi c_Cl i ck) ;
/ /
/ / bot _car gar dat os
/ /
t hi s. bot _car gar dat os. Locat i on = new Syst em. Dr awi ng. Poi nt ( 447,
422) ;
t hi s. bot _car gar dat os. Name = " bot _car gar dat os" ;
t hi s. bot _car gar dat os. Si ze = new Syst em. Dr awi ng. Si ze( 158, 51) ;
t hi s. bot _car gar dat os. TabI ndex = 36;
t hi s. bot _car gar dat os. Text = " CARGAR PARMETROS EN EL MODEM" ;
t hi s. bot _car gar dat os. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _car gar dat os. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _car gar dat os_Cl i ck) ;
/ /
/ / t el dest 1
/ /
t hi s. t el dest 1. Enabl ed = f al se;
t hi s. t el dest 1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 139, 105) ;
t hi s. t el dest 1. MaxLengt h = 9;
t hi s. t el dest 1. Name = " t el dest 1" ;
t hi s. t el dest 1. Si ze = new Syst em. Dr awi ng. Si ze( 95, 20) ;
t hi s. t el dest 1. TabI ndex = 3;
t hi s. t el dest 1. Text Changed += new
Syst em. Event Handl er ( t hi s. t el dest _Text Changed) ;
/ /
/ / l abel 8
/ /
t hi s. l abel 8. Aut oSi ze = t r ue;
t hi s. l abel 8. Locat i on = new Syst em. Dr awi ng. Poi nt ( 53, 108) ;
t hi s. l abel 8. Name = " l abel 8" ;
t hi s. l abel 8. Si ze = new Syst em. Dr awi ng. Si ze( 80, 14) ;
t hi s. l abel 8. TabI ndex = 27;
t hi s. l abel 8. Text = " Tel . dest i no #1: " ;
/ /
/ / gr oupBox1
/ /
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 17) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. cont sms2) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 18) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. cont sms1) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 19) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
148
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. t el dest 2) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. sms2) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 6) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. sms1) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 13) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 8) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. t el dest 1) ;
t hi s. gr oupBox1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 204, 208) ;
t hi s. gr oupBox1. Name = " gr oupBox1" ;
t hi s. gr oupBox1. Si ze = new Syst em. Dr awi ng. Si ze( 532, 138) ;
t hi s. gr oupBox1. TabI ndex = 37;
t hi s. gr oupBox1. TabSt op = f al se;
t hi s. gr oupBox1. Text = " Mensaj es SMS: " ;
/ /
/ / l abel 17
/ /
t hi s. l abel 17. Aut oSi ze = t r ue;
t hi s. l abel 17. Locat i on = new Syst em. Dr awi ng. Poi nt ( 305, 75) ;
t hi s. l abel 17. Name = " l abel 17" ;
t hi s. l abel 17. Si ze = new Syst em. Dr awi ng. Si ze( 48, 14) ;
t hi s. l abel 17. TabI ndex = 44;
t hi s. l abel 17. Text = " Quedan: " ;
/ /
/ / cont sms2
/ /
t hi s. cont sms2. Aut oSi ze = t r ue;
t hi s. cont sms2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 325, 89) ;
t hi s. cont sms2. Name = " cont sms2" ;
t hi s. cont sms2. Si ze = new Syst em. Dr awi ng. Si ze( 25, 14) ;
t hi s. cont sms2. TabI ndex = 43;
t hi s. cont sms2. Text = " 100" ;
/ /
/ / l abel 18
/ /
t hi s. l abel 18. Aut oSi ze = t r ue;
t hi s. l abel 18. Locat i on = new Syst em. Dr awi ng. Poi nt ( 28, 72) ;
t hi s. l abel 18. Name = " l abel 18" ;
t hi s. l abel 18. Si ze = new Syst em. Dr awi ng. Si ze( 48, 14) ;
t hi s. l abel 18. TabI ndex = 42;
t hi s. l abel 18. Text = " Quedan: " ;
/ /
/ / cont sms1
/ /
t hi s. cont sms1. Aut oSi ze = t r ue;
t hi s. cont sms1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 48, 86) ;
t hi s. cont sms1. Name = " cont sms1" ;
t hi s. cont sms1. Si ze = new Syst em. Dr awi ng. Si ze( 25, 14) ;
t hi s. cont sms1. TabI ndex = 41;
t hi s. cont sms1. Text = " 100" ;
/ /
/ / l abel 19
/ /
t hi s. l abel 19. Aut oSi ze = t r ue;
t hi s. l abel 19. Locat i on = new Syst em. Dr awi ng. Poi nt ( 330, 112) ;
t hi s. l abel 19. Name = " l abel 19" ;
t hi s. l abel 19. Si ze = new Syst em. Dr awi ng. Si ze( 80, 14) ;
t hi s. l abel 19. TabI ndex = 39;
t hi s. l abel 19. Text = " Tel . dest i no #2: " ;
/ /
/ / t el dest 2
/ /
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
149
t hi s. t el dest 2. Enabl ed = f al se;
t hi s. t el dest 2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 416, 109) ;
t hi s. t el dest 2. MaxLengt h = 9;
t hi s. t el dest 2. Name = " t el dest 2" ;
t hi s. t el dest 2. Si ze = new Syst em. Dr awi ng. Si ze( 95, 20) ;
t hi s. t el dest 2. TabI ndex = 5;
t hi s. t el dest 2. Text Changed += new
Syst em. Event Handl er ( t hi s. t el dest 2_Text Changed) ;
/ /
/ / sms2
/ /
t hi s. sms2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 356, 22) ;
t hi s. sms2. MaxLengt h = 100;
t hi s. sms2. Mul t i l i ne = t r ue;
t hi s. sms2. Name = " sms2" ;
t hi s. sms2. Si ze = new Syst em. Dr awi ng. Si ze( 155, 81) ;
t hi s. sms2. TabI ndex = 4;
t hi s. sms2. Text Changed += new
Syst em. Event Handl er ( t hi s. sms2_Text Changed) ;
/ /
/ / l abel 6
/ /
t hi s. l abel 6. Aut oSi ze = t r ue;
t hi s. l abel 6. Locat i on = new Syst em. Dr awi ng. Poi nt ( 303, 22) ;
t hi s. l abel 6. Name = " l abel 6" ;
t hi s. l abel 6. Si ze = new Syst em. Dr awi ng. Si ze( 47, 14) ;
t hi s. l abel 6. TabI ndex = 33;
t hi s. l abel 6. Text = " SMS #2: " ;
/ /
/ / sms1
/ /
t hi s. sms1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 79, 19) ;
t hi s. sms1. MaxLengt h = 100;
t hi s. sms1. Mul t i l i ne = t r ue;
t hi s. sms1. Name = " sms1" ;
t hi s. sms1. Si ze = new Syst em. Dr awi ng. Si ze( 155, 81) ;
t hi s. sms1. TabI ndex = 2;
t hi s. sms1. Text Changed += new
Syst em. Event Handl er ( t hi s. sms1_Text Changed) ;
/ /
/ / l abel 13
/ /
t hi s. l abel 13. Aut oSi ze = t r ue;
t hi s. l abel 13. Locat i on = new Syst em. Dr awi ng. Poi nt ( 28, 19) ;
t hi s. l abel 13. Name = " l abel 13" ;
t hi s. l abel 13. Si ze = new Syst em. Dr awi ng. Si ze( 47, 14) ;
t hi s. l abel 13. TabI ndex = 24;
t hi s. l abel 13. Text = " SMS #1: " ;
/ /
/ / gr oupBox4
/ /
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. l abel 16) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. l abel 15) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. val ) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. l abel 14) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. pass) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. l abel 11) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. smscon) ;
t hi s. gr oupBox4. Locat i on = new Syst em. Dr awi ng. Poi nt ( 12, 352) ;
t hi s. gr oupBox4. Name = " gr oupBox4" ;
t hi s. gr oupBox4. Si ze = new Syst em. Dr awi ng. Si ze( 426, 121) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
150
t hi s. gr oupBox4. TabI ndex = 39;
t hi s. gr oupBox4. TabSt op = f al se;
t hi s. gr oupBox4. Text = " SMS de cont r ol : " ;
/ /
/ / l abel 16
/ /
t hi s. l abel 16. Locat i on = new Syst em. Dr awi ng. Poi nt ( 210, 16) ;
t hi s. l abel 16. Name = " l abel 16" ;
t hi s. l abel 16. Si ze = new Syst em. Dr awi ng. Si ze( 208, 59) ;
t hi s. l abel 16. TabI ndex = 31;
t hi s. l abel 16. Text = " El val or i nt r oduci do act i var l a
secuenci a VERDE/ AMBAR/ ROJ O si coi nci de, si no, a" +
" ct i var el par padeo VALOR veces. " ;
t hi s. l abel 16. Text Al i gn =
Syst em. Dr awi ng. Cont ent Al i gnment . Mi ddl eRi ght ;
/ /
/ / l abel 15
/ /
t hi s. l abel 15. Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 83) ;
t hi s. l abel 15. Name = " l abel 15" ;
t hi s. l abel 15. Si ze = new Syst em. Dr awi ng. Si ze( 77, 14) ;
t hi s. l abel 15. TabI ndex = 41;
t hi s. l abel 15. Text = " val or : ( 1) " ;
t hi s. l abel 15. Text Al i gn =
Syst em. Dr awi ng. Cont ent Al i gnment . Mi ddl eRi ght ;
/ /
/ / val
/ /
t hi s. val . Locat i on = new Syst em. Dr awi ng. Poi nt ( 89, 80) ;
t hi s. val . MaxLengt h = 1;
t hi s. val . Name = " val " ;
t hi s. val . Si ze = new Syst em. Dr awi ng. Si ze( 103, 20) ;
t hi s. val . TabI ndex = 7;
t hi s. val . Text Changed += new
Syst em. Event Handl er ( t hi s. val _Text Changed) ;
/ /
/ / l abel 14
/ /
t hi s. l abel 14. Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 57) ;
t hi s. l abel 14. Name = " l abel 14" ;
t hi s. l abel 14. Si ze = new Syst em. Dr awi ng. Si ze( 77, 14) ;
t hi s. l abel 14. TabI ndex = 39;
t hi s. l abel 14. Text = " passwor d: ( 4) " ;
t hi s. l abel 14. Text Al i gn =
Syst em. Dr awi ng. Cont ent Al i gnment . Mi ddl eRi ght ;
/ /
/ / pass
/ /
t hi s. pass. Locat i on = new Syst em. Dr awi ng. Poi nt ( 89, 55) ;
t hi s. pass. MaxLengt h = 4;
t hi s. pass. Name = " pass" ;
t hi s. pass. Si ze = new Syst em. Dr awi ng. Si ze( 103, 20) ;
t hi s. pass. TabI ndex = 6;
t hi s. pass. Text Changed += new
Syst em. Event Handl er ( t hi s. pass_Text Changed) ;
/ /
/ / l abel 11
/ /
t hi s. l abel 11. Aut oSi ze = t r ue;
t hi s. l abel 11. Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 16) ;
t hi s. l abel 11. Name = " l abel 11" ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
151
t hi s. l abel 11. Si ze = new Syst em. Dr awi ng. Si ze( 49, 14) ;
t hi s. l abel 11. TabI ndex = 30;
t hi s. l abel 11. Text = " For mat o: " ;
/ /
/ / smscon
/ /
t hi s. smscon. Bor der St yl e =
Syst em. Wi ndows. For ms. Bor der St yl e. Fi xed3D;
t hi s. smscon. Locat i on = new Syst em. Dr awi ng. Poi nt ( 59, 32) ;
t hi s. smscon. Name = " smscon" ;
t hi s. smscon. Si ze = new Syst em. Dr awi ng. Si ze( 133, 18) ;
t hi s. smscon. TabI ndex = 30;
/ /
/ / bot _l i mpi ar t odo
/ /
t hi s. bot _l i mpi ar t odo. Locat i on = new Syst em. Dr awi ng. Poi nt ( 447,
361) ;
t hi s. bot _l i mpi ar t odo. Name = " bot _l i mpi ar t odo" ;
t hi s. bot _l i mpi ar t odo. Si ze = new Syst em. Dr awi ng. Si ze( 158, 21) ;
t hi s. bot _l i mpi ar t odo. TabI ndex = 32;
t hi s. bot _l i mpi ar t odo. Text = " LI MPI AR TODO" ;
t hi s. bot _l i mpi ar t odo. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _l i mpi ar t odo. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _l i mpi ar t odo_Cl i ck) ;
/ /
/ / Pi cModem
/ /
t hi s. Accept But t on = t hi s. bot _envi ar ;
t hi s. Aut oScal eMode = Syst em. Wi ndows. For ms. Aut oScal eMode. None;
t hi s. Cancel But t on = t hi s. sal i r ;
t hi s. Cl i ent Si ze = new Syst em. Dr awi ng. Si ze( 743, 507) ;
t hi s. Cont r ol s. Add( t hi s. por def ect o) ;
t hi s. Cont r ol s. Add( t hi s. bot _l i mpi ar t odo) ;
t hi s. Cont r ol s. Add( t hi s. bot _l eer pi c) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox4) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox1) ;
t hi s. Cont r ol s. Add( t hi s. bot _car gar dat os) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox5) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox3) ;
t hi s. Cont r ol s. Add( t hi s. st at usSt r i p1) ;
t hi s. Cont r ol s. Add( t hi s. sal i r ) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox2) ;
t hi s. Font = new Syst em. Dr awi ng. Font ( " Ar i al " , 8. 25F,
Syst em. Dr awi ng. Font St yl e. Regul ar , Syst em. Dr awi ng. Gr aphi csUni t . Poi nt ,
( ( byt e) ( 0) ) ) ;
t hi s. For mBor der St yl e =
Syst em. Wi ndows. For ms. For mBor der St yl e. Fi xedSi ngl e;
t hi s. I con =
( ( Syst em. Dr awi ng. I con) ( r esour ces. Get Obj ect ( " $t hi s. I con" ) ) ) ;
t hi s. Mar gi n = new Syst em. Wi ndows. For ms. Paddi ng( 2, 3, 2, 3) ;
t hi s. Maxi mi zeBox = f al se;
t hi s. Name = " Pi cModem" ;
t hi s. Text = " Pi cModem" ;
t hi s. gr oupBox2. ResumeLayout ( f al se) ;
t hi s. gr oupBox2. Per f or mLayout ( ) ;
t hi s. st at usSt r i p1. ResumeLayout ( f al se) ;
t hi s. st at usSt r i p1. Per f or mLayout ( ) ;
t hi s. gr oupBox3. ResumeLayout ( f al se) ;
t hi s. gr oupBox3. Per f or mLayout ( ) ;
t hi s. gr oupBox5. ResumeLayout ( f al se) ;
t hi s. gr oupBox5. Per f or mLayout ( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
152
t hi s. gr oupBox1. ResumeLayout ( f al se) ;
t hi s. gr oupBox1. Per f or mLayout ( ) ;
t hi s. gr oupBox4. ResumeLayout ( f al se) ;
t hi s. gr oupBox4. Per f or mLayout ( ) ;
t hi s. ResumeLayout ( f al se) ;
t hi s. Per f or mLayout ( ) ;

}

#endr egi on

pr i vat e Syst em. Wi ndows. For ms. Gr oupBox gr oupBox2;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _conect ar ;
pr i vat e Syst em. Wi ndows. For ms. But t on sal i r ;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _desconect ar ;
pr i vat e Syst em. Wi ndows. For ms. But t on bot l i mpi ar usb;
pr i vat e Syst em. Wi ndows. For ms. St at usSt r i p st at usSt r i p1;
pr i vat e Syst em. Wi ndows. For ms. Tool St r i pSt at usLabel st at usl abel ;
pr i vat e Syst em. Wi ndows. For ms. Ti mer t i mer 1;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 4;
pr i vat e Syst em. Wi ndows. For ms. Li st Box r eci bi dousb;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 3;
pr i vat e Syst em. Wi ndows. For ms. Li st Box envi adousb;
pr i vat e Syst em. Wi ndows. For ms. Gr oupBox gr oupBox3;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 7;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 8;
pr i vat e Syst em. Wi ndows. For ms. Text Box pi nbox;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 9;
pr i vat e Syst em. Wi ndows. For ms. Text Box t el dest 1;
publ i c Syst em. Wi ndows. For ms. Gr oupBox gr oupBox5;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 10;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _car gar dat os;
pr i vat e Syst em. Wi ndows. For ms. Label cent r omen;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 12;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _envi ar ;
pr i vat e Syst em. Wi ndows. For ms. Text Box comando;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 1;
pr i vat e Syst em. Wi ndows. For ms. Li st Box t r amasr ec;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 2;
pr i vat e Syst em. Wi ndows. For ms. Li st Box i nf o;
publ i c Syst em. Wi ndows. For ms. Gr oupBox gr oupBox1;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 6;
pr i vat e Syst em. Wi ndows. For ms. Text Box sms1;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 13;
pr i vat e Syst em. Wi ndows. For ms. Text Box sms2;
publ i c Syst em. Wi ndows. For ms. Gr oupBox gr oupBox4;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 11;
pr i vat e Syst em. Wi ndows. For ms. Label smscon;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 15;
pr i vat e Syst em. Wi ndows. For ms. Text Box val ;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 14;
pr i vat e Syst em. Wi ndows. For ms. Text Box pass;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 16;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _l eer pi c;
pr i vat e Syst em. Wi ndows. For ms. Text Box t r amar ec;
pr i vat e Syst em. Wi ndows. For ms. But t on bot l i mpi ar ser i e;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 19;
pr i vat e Syst em. Wi ndows. For ms. Text Box t el dest 2;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 17;
pr i vat e Syst em. Wi ndows. For ms. Label cont sms2;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 18;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
153
pr i vat e Syst em. Wi ndows. For ms. Label cont sms1;
pr i vat e Syst em. Wi ndows. For ms. Label oper ador a;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _l i mpi ar t odo;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _envser i e;
pr i vat e Syst em. Wi ndows. For ms. Label est adopi c;
pr i vat e Syst em. Wi ndows. For ms. But t on por def ect o;
/ / pr i vat e AxMSCommLi b. AxMSCommpser i e;

}
}



















































PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
154
8.4 Cdigo fuente del software en PC, versin BSICA.
8.4.1 Picmodem.cs
usi ng Syst em;
usi ng Syst em. Col l ect i ons. Gener i c;
usi ng Syst em. Component Model ;
usi ng Syst em. Dat a;
usi ng Syst em. Dr awi ng;
usi ng Syst em. Text ;
usi ng Syst em. Wi ndows. For ms;
usi ng Syst em. Di agnost i cs; / / Cl ase par a abr i r pgi na web
usi ng Syst em. I O. Por t s;
usi ng Syst em. Thr eadi ng;

namespace Pi cModem
{
publ i c par t i al cl ass Pi cModem: For m
{
Pi cmodemAPI usbapi = new Pi cmodemAPI ( ) ;
Ser i al Por t por t = new Ser i al Por t ( " COM1" , 9600, Par i t y. None, 8,
St opBi t s. One) ;

st r i ng cadi nf o, cadi nf o2;
st r i ng spi n, st el dest 1, st el dest 2, ssms1, ssms2, ssmscon;
/ / st r i ngs par a guar dar el val or l ei do del PI C, par a compar ar l o
ant es de subi r l o
char [ ] buf f er ser i e = new char [ 160] ;
char [ ] r esul t = new char [ 101] ;
char [ ] val or = new char [ 20] ;
ui nt onl i ne = 0;
bool pi cl ei do = f al se;
bool car gar = f al se;
bool l eer = f al se;
bool f al l o = f al se;
bool pi cbusy = t r ue;
bool pcbusy = f al se;
i nt l eer f l ag = 0; / / par a que l ea el f l ag cada segundo
i nt me = 0;
i nt y = 0; / / i t er aci ones en l a car ga de dat os
i nt x = 0;
i nt ci ncoseg = 0;
i nt t i cs = 0;
i nt r eady3 = 0; / / se t i enen que cont ar 3 t i cs con pi c: r eady,
par a evi t ar f al sos r eadys
i nt esp5 = 0; / / var i abl e de esper a de 5 segundos
bool [ ] dat ok = new bool [ 6] ; / / new bool - > l os i ni ci al i za como
' f al se'
bool [ ] dat t x = new bool [ 6] ;
/ / dat os: 0=pi n, 1=t el dest 1, 2=t el dest 2
/ / 3=sms1, 4=sms2, 5=smscon
/ / dat ok=dat os l ei dos del pi c
/ / dat t x=dat os a envi ar al pi c, por que no se han l ei do o por que se
han t ecl eado


publ i c Pi cModem( )
{
/ / i ni ci al i za l os component es del f or m
I ni t i al i zeComponent ( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
155
i ni ci al i zaci ones( ) ;
}

pr i vat e voi d i ni ci al i zaci ones( )
{
Syst em. Wi ndows. For ms. Cont r ol . CheckFor I l l egal Cr ossThr eadCal l s
= f al se; / / daba un er r or
/ / oper ador a. Sel ect edI t em= 0;
/ / cent r omen. Text = " 656000311" ;

bot _l eer pi c. Enabl ed = f al se;
bot _car gar dat os. Enabl ed = t r ue;
pi nbox. Enabl ed = t r ue;
sms1. Enabl ed = t r ue;
sms2. Enabl ed = t r ue;
comando. Enabl ed = t r ue;
t el dest 1. Enabl ed = t r ue;
t el dest 2. Enabl ed = t r ue;
pass. Enabl ed = t r ue;
val . Enabl ed = t r ue;
pr ogr essBar 1. Enabl ed = t r ue;
pr ogr essBar 1. St ep = 1;
pr ogr essBar 1. Vi si bl e = f al se;
pr ogr essBar 1. Maxi mum= 47;


comando. Text = " " ;

onl i ne = usbapi . Conexi on( ) ;
i f ( onl i ne == 1) / / est a conect ado?
{
st at usl abel . Text = " Di sposi t i vo conect ado <<ONLI NE>>" ;
ci ncoseg = 1;
}
el se
{
st at usl abel . Text = " Di sposi t i vo no conect ado
<<OFFLI NE>>" ;
}
}
/ * pr i vat e voi d l eer pi c( )
{
pcbusy = t r ue;
pr ogr essBar 1. Enabl ed = t r ue;
pr ogr essBar 1. Vi si bl e = t r ue;
pi cl ei do = t r ue;
st at usl abel . Text = " Leyendo dat os desde el di sposi t i vo. . . " ;

i f ( ( ! f al l o) &&( ! pi cbusy) )
{
comando. Text = " 5" ; / / l ect ur a de pi n
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 6" ; / / l ect ur a del cent r o de mensaj es
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
156
{
comando. Text = " 7" ; / / l ect ur a del dest i nat ar i o 1
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 8" ; / / l ect ur a del dest i nat ar i o 2
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 95" ; / / l ect ur a del sms1
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 96" ; / / l ect ur a del sms2
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
}
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
comando. Text = " 97" ; / / l ect ur a del sms de cont r ol
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
}
pr ogr essBar 1. Per f or mSt ep( ) ;


i f ( ( ! f al l o) && ( ! pi cbusy) )
{
cadi nf o = " DATOS ALMACENADOS EN Pi cModem: \ n" ;
cadi nf o2 = " \ n\ nDATOS NECESARI OS: \ n" ;
i f ( dat ok[ 0] )
cadi nf o += " \ n PI N: " + pi nbox. Text ;
el se
cadi nf o2 += " \ n PI N: cont r asea de 4 d gi t os" ;
i f ( dat ok[ 1] )
cadi nf o += " \ n TELDEST1: " + t el dest 1. Text ;
el se
cadi nf o2 += " \ n TELDEST1: t el ef ono dest i nat ar i o 1
de 9 d gi t os" ;
i f ( dat ok[ 2] )
cadi nf o += " \ n TELDEST2: " + t el dest 2. Text ;
el se
cadi nf o2 += " \ n TELDEST2: t el ef ono dest i nat ar i o 2
de 9 d gi t os" ;
i f ( dat ok[ 3] )
cadi nf o += " \ n SMS1: " + sms1. Text ;
el se
cadi nf o2 += " \ n SMS1: mensaj e 1 de hast a 100
car act er es" ;
i f ( dat ok[ 4] )
cadi nf o += " \ n SMS2: " + sms2. Text ;
el se
cadi nf o2 += " \ n SMS2: mensaj e 2 de hast a 100
car act er es" ;
i f ( dat ok[ 5] )
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
157
cadi nf o += " \ n SMSCON: " + smscon. Text ;
el se
cadi nf o2 += " \ n SMSCON: mensaj e consi gna de 4+1
car act er es" ;

i f ( ! dat ok[ 0] && ! dat ok[ 1] && ! dat ok[ 2] && ! dat ok[ 3] &&
! dat ok[ 4] && ! dat ok[ 5] )
{
cadi nf o += " \ n ( VAC O) " ;
}
i f ( cadi nf o2 ! = " \ n\ nDATOS NECESARI OS: \ n" )
cadi nf o += cadi nf o2;

pr ogr essBar 1. Vi si bl e = f al se;
pr ogr essBar 1. Enabl ed = f al se;
MessageBox. Show( cadi nf o, " I nf or maci n. " ,
MessageBoxBut t ons. OK, MessageBoxI con. I nf or mat i on) ;
t el dest 1. Enabl ed = t r ue;
t el dest 2. Enabl ed = t r ue;
}
pcbusy = f al se;

st at usl abel . Text = " Di sposi t i vo conect ado <<ONLI NE>>" ;
}
*/
pr i vat e voi d envi ar usb( )
{
/ / Se envi ar n pseudocomandos o comandos AT

/ / se envi ar un pr i mer byt e con el t i po de par amet r o a
envi ar
/ / y un segundo byt e con el numer o de car act er es que componen
el par amet r o
/ / y por ul t i mo se r eci bi r an l os car act er es que componen el
val or
/ / Ej empl o: 141234 <- t i po: 1 ( pi n) , car act er es: 4 , val or :
1234
/ / Ti pos: 1=pi n, 2=t el dest i nat ar i o1, 3=t el dest i nat ar i o2
/ / 5=sol i ci t ud pi n, 6=sol i ci t ud cent r omen, 7=sol i ci t ud
t el dest 1, 8=sol i ci t ud t el dest 2
/ / 91=sms1, 92=sms2, 93=sms cont r ol , 95=sol . sms1, 96=sol .
sms2, 97=sol . sms cont r ol

i nt b, l , i ;
char cad1; / / car act er de handshaki ng
st r i ng cad2;
ui nt b1 = 0, or den = 0, nocar s = 0, c, or den2 = 0;
bool cat = f al se; / / es comando at ?
i nt pcom= 0;
i nt del ay = 100;
pcbusy = t r ue;
l = comando. Text . Lengt h;

cad2 = comando. Text . ToUpper ( ) ;

or den = ( ui nt ) cad2[ 0] ;

i f ( ( or den > 48) && ( or den <= 57) ) / / si es un pseudocomando
{
cat = f al se;
i f ( or den < 52) / / <4
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
158
pcom= 1;
el se
{
i f ( or den == 52)
pcom= 0;
el se
pcom= 2;
}
i f ( l > 1)
{
nocar s = ( ui nt ) cad2[ 1] ;
nocar s - = 48;
}
el se
{
nocar s = 4;
}

swi t ch ( or den)
{
case 49: / / 1
i f ( ( nocar s == 4) && ( nocar s == l - 2) )
{
pi nbox. Text = " " ;
pi nbox. Text += cad2[ 2] ;
pi nbox. Text += cad2[ 3] ;
pi nbox. Text += cad2[ 4] ;
pi nbox. Text += cad2[ 5] ;
}
el se
{
f al l o = t r ue;
}
br eak;

case 50: / / 2
i f ( ( nocar s == 9) && ( nocar s == l - 2) )
{

}
el se
{
f al l o = t r ue;
}
br eak;

case 51: / / 3
i f ( ( nocar s == 9) && ( nocar s == l - 2) )
{
}
el se
{
f al l o = t r ue;
}
br eak;

case 53: / / 5
l = 6;
nocar s = 4; / / con l =6 y nocar s=4 se obt i ene
" f al l o=f al se"
br eak;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
159

case 54: / / 6
l = 11;
nocar s = 9; / / con l =11 y nocar s=9 se obt i ene
" f al l o=f al se"
br eak;

case 55: / / 7
l = 11;
nocar s = 9; / / con l =11 y nocar s=9 se obt i ene
" f al l o=f al se"
br eak;

case 56: / / 8
l = 11;
nocar s = 9; / / con l =11 y nocar s=9 se obt i ene
" f al l o=f al se"
br eak;

case 57: / / 9
i f ( l > 1)
c = ( ui nt ) cad2[ 1] ;
el se
c = 0;

swi t ch ( c)
{
case 49: / / si es 91

l = sms1. Text . Lengt h;
nocar s = ( ui nt ) l ;
l = l + 2; / / ha de cumpl i r :
l =nocar s+2
or den2 = 49;
pcom= 3;
cad2 = sms1. Text ;
i f ( nocar s == 0)
{
f al l o = t r ue;
}
br eak;
case 50: / / si es 92
l = sms2. Text . Lengt h;
nocar s = ( ui nt ) l ;
l = l + 2; / / ha de cumpl i r :
l =nocar s+2
or den2 = 50;
pcom= 3;
cad2 = sms2. Text ;
i f ( nocar s == 0)
{
f al l o = t r ue;
}
br eak;
case 51: / / si es 93
nocar s = 5;
l = 7; / / ha de cumpl i r :
l =nocar s+2
or den2 = 51;
pcom= 3;
cad2 = pass. Text + val . Text ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
160
br eak;
case 53: / / si es 95
l = 102;
nocar s = 100;
or den2 = 53;
pcom= 4;
br eak;
case 54: / / si es 96
l = 102;
nocar s = 100;
or den2 = 54;
pcom= 4;
br eak;
case 55: / / si es 97
l = 7;
nocar s = 5; / / son 5 car act er es
or den2 = 55;
pcom= 4;
br eak;
case 0: / / si sol o se ha escr i t o un
di gi t o
f al l o = t r ue;
br eak;
def aul t :
f al l o = t r ue;
br eak;
}
br eak;
def aul t :
f al l o = t r ue;
br eak;
}

i f ( l ! = nocar s + 2)
{
f al l o = t r ue;
}
i f ( ( l == nocar s + 2) && ( f al l o == f al se) )
f al l o = f al se;

i f ( ! f al l o)
{
usbapi . envi aUSB( or den) ; / / envi o pr i mer byt e

Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / / r eci bi mos de 1
en 1 byt e! ! !

i f ( or den ! = cad1) / / si es di f er ent e
{
i f ( ( ui nt ) cad1 ! = 4)
{
swi t ch ( ( ui nt ) cad1)
{
case 1:
pi cbusy = f al se;
br eak;
case 2:
pi cbusy = f al se;
br eak;
case 3:
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
161
pi cbusy = f al se;
br eak;
case 5:
pi cbusy = f al se;
br eak;
case 6:
pi cbusy = f al se;
br eak;
case 7:
pi cbusy = f al se;
br eak;
case 8:
pi cbusy = f al se;
br eak;
case 9:
pi cbusy = f al se;
br eak;
case 15:
pi cbusy = f al se;
br eak;
case 16:
pi cbusy = f al se;
br eak;
case 17:
pi cbusy = f al se;
br eak;
case 18:
pi cbusy = f al se;
br eak;
case 19:
pi cbusy = f al se;
br eak;
case 0:
pi cbusy = t r ue;
br eak;
}
}
el se
{
or den = 4;
f al l o = t r ue;
usbapi . envi aUSB( or den) ; / / se envi a byt e 04
par a i ndi car er r or
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos r et or no de f al l o
MessageBox. Show( " Ha ocur r i do un er r or cr t i co
en l a comuni caci n PC <- - > PI C\ nDesconect a el di sposi t i vo. " , " ERROR" ,
MessageBoxBut t ons. OK, MessageBoxI con. Er r or ) ;
Appl i cat i on. Exi t ( ) ;
}
}
i f ( ( pcom== 2) && ! f al l o) / / comandos de sol i ci t ud
de dat os 5, 6, 7 u 8
{
usbapi . envi aUSB( cad1) ; / / envi amos por 2 vez
el pr i mer byt e
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / / r eci bi mos
1er dat o
i f ( cad1 == 4)
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
162
{
f al l o = t r ue;
}
el se
{
val or [ 0] = cad1;

c = ( ui nt ) cad1;
usbapi . envi aUSB( c) ; / / r ebot amos d0
}
}
i f ( ( pcom== 4) && ! f al l o) / / comandos de sol i ci t ud
de dat os 95, 96 o 97
{
usbapi . envi aUSB( or den2) ; / / envi amos segundo
byt e

Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;

i f ( cad1 == 4)
{
f al l o = t r ue;
}
el se
{
usbapi . envi aUSB( cad1) ; / / envi amos por 2
vez el segundo byt e
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos 1er dat o
i f ( cad1 == 4)
{
f al l o = t r ue;
MessageBox. Show( " Ha ocur r i do un er r or
cr t i co en l a comuni caci n PC <- - > PI C\ nDesconect a el di sposi t i vo. " ,
" ERROR" , MessageBoxBut t ons. OK, MessageBoxI con. Er r or ) ;
Appl i cat i on. Exi t ( ) ;
}
el se
{
i f ( cad1 == 255) / / si r eci bi mos un
0xFF como 1er car act er
{ / / qui er e deci r que el
sms est vac o
f al l o = t r ue;
pcom= 0;
pcbusy = f al se;
}
el se
{
r esul t [ 0] = cad1;

c = ( ui nt ) cad1;
usbapi . envi aUSB( c) ; / / r ebot amos d0
}
}
}
}
i f ( ! f al l o) / / si se ha envi ado ok, se si gue
envi ando
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
163
{
i f ( or den < 52) / / si or den es 1, 2 o 3
{
f or ( b = 1; b < nocar s + 2; b++)
{
b1 = ( ui nt ) cad2[ b] ; / / cad2=cadena a
envi ar en mayuscul as
/ / b1=val or asci i del car act er a envi ar
usbapi . envi aUSB( b1) ;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / r eci bi mos de 1 en 1 byt e! ! !

r esul t [ b] = cad1;

i f ( ( b1 ! = ( ui nt ) cad1) | | ( ( i nt ) cad1 ==
4) )
{
b = ( i nt ) nocar s + 2;
f al l o = t r ue;
b1 = 4;
usbapi . envi aUSB( b1) ; / / se envi a byt e
04 par a i ndi car er r or
}
}
i f ( ! f al l o)
{
b1 = 13; / / <CR>
usbapi . envi aUSB( b1) ;
}
pcbusy = f al se;
}
el se
{
i f ( or den < 57)
{
/ / si es or den 5, 6, 7 u 8! ! ! ! ! ! !
/ / ar r i ba hemos envi ado el 1er byt e, hemos
r eci bi do y
/ / conf i r mado el byt e de ' dat o 0'
/ / aqui l eer emos el ' dat o 1' y
post er i or es, i r emos r ebot ando
/ / l os car act er es que vayamos r eci bi endo
f or ( b = 1; b < nocar s + 1; b++)
{
Thr ead. Sl eep( del ay) ; / / del ay de
100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / <- - oj o! ! !

c = ( ui nt ) cad1;
val or [ b] = cad1;
i f ( ( c ! = 4) && ( c ! = 13) && ( c ! =
0) ) / / si no hay er r or , no <CR> y no 0
{
usbapi . envi aUSB( c) ;
}
el se
{
i f ( c == 13) / / si <CR>, es que
OK
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
164
{
swi t ch ( or den)
{
case 53: / / 5 = PI N
i f ( val or [ 0] == 255)
dat ok[ 0] = f al se;
el se
{
dat ok[ 0] = t r ue;
pi nbox. Text = " " ;
f or ( i = 0; i <
4; i ++)
{
pi nbox. Text
+= val or [ i ] ;
}
spi n =
pi nbox. Text ;
}
br eak;
case 54: / / 6 =
CENTROMEN
cent r omen. Text = " " ;
f or ( i = 0; i < 9;
i ++)
{
i f ( val or [ i ] ! =
255)
{

cent r omen. Text += val or [ i ] ;
}
el se
{

cent r omen. Text += ( char ) ( val or [ i ] - 192) ;
}
}
br eak;
case 55: / / 7 =
TELDEST1
i f ( val or [ 0] == 255)
dat ok[ 1] = f al se;
el se
{
dat ok[ 1] = t r ue;
t el dest 1. Text =
" " ;
f or ( i = 0; i <
9; i ++)
{
t el dest 1. Text
+= val or [ i ] ;
}
st el dest 1 =
t el dest 1. Text ;
}
br eak;
case 56: / / 8 =
TELDEST2
i f ( val or [ 0] == 255)
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
165
dat ok[ 2] = f al se;
el se
{
dat ok[ 2] = t r ue;
t el dest 2. Text =
" " ;
f or ( i = 0; i <
9; i ++)
{
t el dest 2. Text
+= val or [ i ] ;
}
st el dest 2 =
t el dest 2. Text ;
}
br eak;
}
pcbusy = f al se;
}
el se
{
b = ( i nt ) nocar s + 1; / /
par a que no vuel va a ent r ar en el FOR
f al l o = t r ue;
pcbusy = f al se;
MessageBox. Show( " Ha ocur r i do
un er r or cr t i co en l a comuni caci n PC <- - > PI C\ nDesconect a el
di sposi t i vo. " , " ERROR" , MessageBoxBut t ons. OK, MessageBoxI con. Er r or ) ;
Appl i cat i on. Exi t ( ) ;

}
}
}
}
el se / / si es or den 9
{
i f ( pcom== 3) / / envi o dat os 91, 92 o
93
{
usbapi . envi aUSB( or den2) ; / /
envi amos or den2
Thr ead. Sl eep( del ay) ; / / del ay de
100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / r eci bi mos de 1 en 1 byt e! ! !

f or ( b = 0; b < nocar s; b++)
{
b1 = ( ui nt ) cad2[ b] ; / /
cad2=cadena a envi ar
/ / b1=val or asci i del car act er a
envi ar
usbapi . envi aUSB( b1) ;
Thr ead. Sl eep( del ay) ; / / del ay
de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / r eci bi mos de 1 en 1 byt e! ! !

r esul t [ b] = cad1;

PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
166
i f ( ( b1 ! = ( ui nt ) cad1) | |
( ( i nt ) cad1 == 4) )
{
b = ( i nt ) nocar s;
b1 = 4;
usbapi . envi aUSB( b1) ; / / se
envi a byt e 04 par a i ndi car er r or
pcbusy = f al se;
}
}
b1 = 13; / / se envi a
<CR>
usbapi . envi aUSB( b1) ;

Thr ead. Sl eep( del ay) ; / / del ay de
100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;

pcbusy = f al se;
}

el se / / si pcom==4 , pet i ci on de dat os
{
/ / si es or den 9! ! ! ! ! ! !
/ / ar r i ba hemos envi ado el 1er y 2
byt e, y r epet i do 2 byt e.
/ / hemos r eci bi do y conf i r mado el
byt e de ' dat o 0'
/ / aqui l eer emos el ' dat o 1' y
post er i or es, i r emos r ebot ando
/ / l os car act er es que vayamos
r eci bi endo

f or ( b = 1; b < nocar s + 1; b++)
/ / nocar s=100 ( 0 a 99) smscon: nocar s=5
{
Thr ead. Sl eep( del ay) ; / / del ay
de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ;
/ / <- - oj o! ! !

c = ( ui nt ) cad1;
r esul t [ b] = cad1;
i f ( ( c ! = 4) && ( c ! = 13) ) / / si
no hay er r or y no <CR>
{
usbapi . envi aUSB( c) ;
}
i f ( c == 13) / / si <CR>
{
swi t ch ( or den2)
{
case 53: / / 5 = SMS1
i f ( r esul t [ 0] == 255)
{
dat ok[ 3] = f al se;
sms1. Text =
" ( vac o) " ;
}
el se
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
167
dat ok[ 3] = t r ue;
sms1. Text = " " ;
f or ( i = 0; i <
b; i ++)
{
sms1. Text +=
r esul t [ i ] ;
}
ssms1 =
sms1. Text ;
}
br eak;
case 54: / / 6 = SMS2
i f ( r esul t [ 0] == 255)
{
dat ok[ 4] = f al se;
sms2. Text =
" ( vac o) " ;
}
el se
{
dat ok[ 4] = t r ue;
sms2. Text = " " ;
f or ( i = 0; i <
b; i ++)
{
sms2. Text +=
r esul t [ i ] ;
}
ssms2 =
sms2. Text ;
}
br eak;
case 55: / / 7 = SMSCON
i f ( r esul t [ 0] == 255)
{
dat ok[ 5] = f al se;
smscon. Text =
" ( vac o) " ;
pass. Text = " " ;
val . Text = " " ;
}
el se
{
dat ok[ 5] = t r ue;
smscon. Text = " " ;
pass. Text = " " ;
ssmscon = " " ;
f or ( i = 0; i <
4; i ++)
{
smscon. Text
+= r esul t [ i ] ;
pass. Text +=
r esul t [ i ] ;
ssmscon +=
r esul t [ i ] ;
}
smscon. Text +=
' , ' + r esul t [ 4] ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
168
ssmscon += " , " +
r esul t [ 4] ;
val . Text = " " ;
val . Text +=
r esul t [ 4] ;
}
br eak;
}
pcbusy = f al se;
b = ( i nt ) nocar s; / / par a
que no vuel va a ent r ar en el FOR
}
i f ( c == 4)
{
b = ( i nt ) nocar s; / / par a
que no vuel va a ent r ar en el FOR
pcbusy = f al se;
f al l o = t r ue;
}

}
/ / l eer conf i r maci on
pcom= 0;
}
}
}
}
}
comando. Text = nul l ;
/ / f al l o = f al se;
}

el se / / >>>>>>>>>>>>>>>>>> comando AT <<<<<<<<<<<<<<<<<<<<<
{
i f ( or den == 65) / / si es ' A'
{
b1 = 0;
cat = t r ue;
f or ( b = 0; b < l ; b++)
{
b1 = ( ui nt ) cad2[ b] ; / / cad2=cadena a envi ar en
mayuscul as
/ / b1=val or asci i del car act er a envi ar
usbapi . envi aUSB( b1) ;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos de 1 en 1 byt e! ! !

i f ( b1 ! = ( ui nt ) cad1)
{
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos de 1 en 1 byt e! ! !

i f ( ( ui nt ) cad1 == 4)
{
cat = f al se;
b = l ;
b1 = 4;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
169
usbapi . envi aUSB( b1) ; / / se envi a
byt e 04 par a i ndi car er r or
pcbusy = f al se;
}
}
}
/ / una vez envi ados t odos l os car act er es del comando
AT
i f ( cat == t r ue)
{
/ / envi ar <CR> f i nal de t r ama
b1 = 13;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
usbapi . envi aUSB( b1) ;
Thr ead. Sl eep( del ay) ; / / del ay de 100ms
cad1 = ( char ) usbapi . r eci beUSB( ) ; / /
r eci bi mos de 1 en 1 byt e! ! !
}

/ / t r ama envi ada ok
comando. Text = nul l ;
pcbusy = f al se;
}
}
cat = f al se;
pcom= 0;
/ / f al l o = f al se;
}

pr i vat e voi d sal i r _Cl i ck( obj ect sender , Event Ar gs e)
{
Appl i cat i on. Exi t ( ) ;
}

pr i vat e voi d t i mer 1_Ti ck( obj ect sender , Event Ar gs e)
{
char t i m;
ui nt i t i m;
l eer f l ag++;
onl i ne = usbapi . Conexi on( ) ; / / aj ust ada una t empor i zaci on
de 500ms

i f ( onl i ne == 1) / / est a conect ado?
{
t i cs++;
i f ( ! pi cl ei do)
{
pr ogr essBar 1. Vi si bl e = t r ue;
pr ogr essBar 1. Per f or mSt ep( ) ;
i f ( esp5 == 0)
{
esp5 = 1;
st at usl abel . Text = " Esper ando r espuest a del
di sposi t i vo. . . " ;
}
}
/ * el se
{
st at usl abel . Text = " Di sposi t i vo conect ado
<<ONLI NE>>" ;
}*/
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
170
bot _l eer pi c. Enabl ed = t r ue;
bot _car gar dat os. Enabl ed = t r ue;
comando. Enabl ed = t r ue;
i f ( ( ci ncoseg == 0) && ( me == 0) )
{
ci ncoseg = 1;
}
me = 2;
i f ( ( ! pi cl ei do) && ( ! pi cbusy) && ( t i cs > 10) && ( r eady3
>= 3) ) / / t i cs>10: 5 seg
{
t i cs = 0;
r eady3 = 0;
st at usl abel . Text = " Leyendo dat os desde el
di sposi t i vo. . . " ;
l eer = t r ue;
}
i f ( me == 1)
me = 2;

}
el se
{
bot _l eer pi c. Enabl ed = f al se;
bot _car gar dat os. Enabl ed = f al se;
t i cs = 0;
/ / bot _envi ar . Enabl ed = f al se; se gest i ona en
comando_t ext changed

st at usl abel . Text = " Di sposi t i vo no conect ado
<<OFFLI NE>>" ;

i f ( me == 1)
{
pi cl ei do = f al se;
car gar = f al se;
l eer = f al se;
f al l o = f al se;
pi cbusy = t r ue;
pcbusy = f al se;
y = 0;
x = 0;
ci ncoseg = 0;

dat ok[ 0] = f al se;
dat ok[ 1] = f al se;
dat ok[ 2] = f al se;
dat ok[ 3] = f al se;
dat ok[ 4] = f al se;
dat ok[ 5] = f al se;

dat t x[ 0] = f al se;
dat t x[ 1] = f al se;
dat t x[ 2] = f al se;
dat t x[ 3] = f al se;
dat t x[ 4] = f al se;
dat t x[ 5] = f al se;
}

i f ( me == 0)
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
171
me = 1;
MessageBox. Show( " El di sposi t i vo Pi cModemno est
conect ado. " , " Adver t enci a" , MessageBoxBut t ons. OK,
MessageBoxI con. War ni ng) ;
}
i f ( me == 2)
{
me = 1;
MessageBox. Show( " Se ha desconect ado el di sposi t i vo
Pi cModem. " , " I nf or maci n" , MessageBoxBut t ons. OK,
MessageBoxI con. I nf or mat i on) ;
}
}
i f ( ( onl i ne == 1) && ( ! pcbusy) && ( l eer f l ag >= 2) )
{
l eer f l ag = 0; / / asi ent r a cada segundo
pcbusy = t r ue;
t i m= ( char ) usbapi . r eci beUSB( ) ;
i t i m= ( ui nt ) t i m;
i f ( i t i m! = 4)
{
swi t ch ( i t i m)
{
case 1:
pi cbusy = f al se;
r eady3++;
i f ( oper ador a. Text == " No di sponi bl e. " )
{
i f ( ( ! f al l o) && ( ! pi cbusy) )
{
oper ador a. Text = " Leyendo. . . " ;
cent r omen. Text = " Leyendo. . . " ;
comando. Text = " 6" ; / / l ect ur a
del cent r o de mensaj es
envi ar usb( ) ;
}
}
br eak;
case 2:
pi cbusy = f al se;
r eady3++;
br eak;
case 3:
pi cbusy = f al se;
br eak;
case 5:
pi cbusy = f al se;
br eak;
case 6:
pi cbusy = f al se;
br eak;
case 7:
pi cbusy = f al se;
br eak;
case 8:
pi cbusy = f al se;
br eak;
case 9:
pi cbusy = f al se;
br eak;
case 15:
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
172
pi cbusy = f al se;
br eak;
case 16:
pi cbusy = f al se;
br eak;
case 17:
pi cbusy = f al se;
br eak;
case 18:
pi cbusy = f al se;
br eak;
case 19:
pi cbusy = f al se;
br eak;
case 20:
pi cbusy = f al se;
br eak;
case 21:
pi cbusy = f al se;
br eak;
case 22:
pi cbusy = f al se;
br eak;

case 0:
pi cbusy = t r ue;
r eady3 = 0;
br eak;
}
}
el se
f al l o = t r ue;

pcbusy = f al se;
}
/ / - - - - - - - - - - - - - CARGAR - - - - - - - - - - - - - - - -
i f ( ( car gar ) && ( ! f al l o) && ( ! pi cbusy) )
{
y++;
pcbusy = t r ue;

swi t ch ( y)
{
case 1:
i f ( spi n ! = pi nbox. Text )
{
comando. Text = " 14" + pi nbox. Text ; / /
envi o de pi n
envi ar usb( ) ;
}
br eak;
case 2:
i f ( st el dest 1 ! = t el dest 1. Text )
{
comando. Text = " 29" + t el dest 1. Text ; / /
envi o de t el dest 1
envi ar usb( ) ;
}
br eak;
case 3:
i f ( st el dest 2 ! = t el dest 2. Text )
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
173
{
comando. Text = " 39" + t el dest 2. Text ; / /
envi o de t el dest 2
envi ar usb( ) ;
}
br eak;
case 4:
i f ( ssms1 ! = sms1. Text )
{
comando. Text = " 91" ; / / envi o de sms1
envi ar usb( ) ;
}
br eak;
case 5:
i f ( ssms2 ! = sms2. Text )
{
comando. Text = " 92" ; / / envi o de sms2
envi ar usb( ) ;
}
br eak;
case 6:
i f ( ssmscon ! = smscon. Text )
{
comando. Text = " 93" ; / / envi o de smscon
envi ar usb( ) ;
}
car gar = f al se;
y = 0;
br eak;
}
}
/ / - - - - - - - - - - - - - LEER - - - - - - - - - - - - - - - -
i f ( ( l eer ) && ( ! f al l o) && ( ! pi cbusy) )
{
x++;
pcbusy = t r ue;
pi cl ei do = t r ue;

swi t ch ( x)
{
case 1:
comando. Text = " 5" ; / / l ect ur a de pi n
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
br eak;
case 2:
comando. Text = " 6" ; / / l ect ur a del cent r o de
mensaj es
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
br eak;
case 3:
comando. Text = " 7" ; / / l ect ur a del
dest i nat ar i o 1
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
br eak;
case 4:
comando. Text = " 8" ; / / l ect ur a del
dest i nat ar i o 2
pr ogr essBar 1. Per f or mSt ep( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
174
envi ar usb( ) ;
br eak;
case 5:
comando. Text = " 95" ; / / l ect ur a del sms1
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
br eak;
case 6:
comando. Text = " 96" ; / / l ect ur a del sms2
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
br eak;
case 7:
comando. Text = " 97" ; / / l ect ur a del sms de
cont r ol
pr ogr essBar 1. Per f or mSt ep( ) ;
envi ar usb( ) ;
l eer = f al se;
x = 0;
cadi nf o = " DATOS ALMACENADOS EN Pi cModem: \ n" ;
cadi nf o2 = " \ n\ nDATOS NECESARI OS: \ n" ;
i f ( dat ok[ 0] )
cadi nf o += " \ n PI N: " + pi nbox. Text ;
el se
cadi nf o2 += " \ n PI N: cont r asea de 4
d gi t os" ;
i f ( dat ok[ 1] )
cadi nf o += " \ n TELDEST1: " + t el dest 1. Text ;
el se
cadi nf o2 += " \ n TELDEST1: t el ef ono
dest i nat ar i o 1 de 9 d gi t os" ;
i f ( dat ok[ 2] )
cadi nf o += " \ n TELDEST2: " + t el dest 2. Text ;
el se
cadi nf o2 += " \ n TELDEST2: t el ef ono
dest i nat ar i o 2 de 9 d gi t os" ;
i f ( dat ok[ 3] )
cadi nf o += " \ n SMS1: " + sms1. Text ;
el se
cadi nf o2 += " \ n SMS1: mensaj e 1 de hast a
100 car act er es" ;
i f ( dat ok[ 4] )
cadi nf o += " \ n SMS2: " + sms2. Text ;
el se
cadi nf o2 += " \ n SMS2: mensaj e 2 de hast a
100 car act er es" ;
i f ( dat ok[ 5] )
cadi nf o += " \ n SMSCON: " + smscon. Text ;
el se
cadi nf o2 += " \ n SMSCON: mensaj e consi gna de
4+1 car act er es" ;
i f ( ! dat ok[ 0] && ! dat ok[ 1] && ! dat ok[ 2] &&
! dat ok[ 3] && ! dat ok[ 4] && ! dat ok[ 5] )
{
cadi nf o += " \ n ( VAC O) " ;
}
i f ( cadi nf o2 ! = " \ n\ nDATOS NECESARI OS: \ n" )
cadi nf o += cadi nf o2;
pr ogr essBar 1. Maxi mum= 30;
pr ogr essBar 1. Vi si bl e = f al se;
pr ogr essBar 1. Enabl ed = f al se;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
175
MessageBox. Show( cadi nf o, " I nf or maci n. " ,
MessageBoxBut t ons. OK, MessageBoxI con. I nf or mat i on) ;
t el dest 1. Enabl ed = t r ue;
t el dest 2. Enabl ed = t r ue;
br eak;
}
pcbusy = f al se;
}

i f ( f al l o)
{
car gar = f al se;
l eer = f al se;
y = 0;
x = 0;
f al l o = f al se;
}
}

pr i vat e voi d comando_Text Changed_1( obj ect sender , Event Ar gs e)
{
i f ( comando. Text ! = " " )
{
i f ( comando. Text [ 0] == ' 0' )
{
comando. Text = " " ;
}
}
st r i ng aux;
aux = comando. Text ;
}
pr i vat e voi d t el dest _Text Changed( obj ect sender , Event Ar gs e)
{
t el dest 1. Enabl ed = t r ue;
i f ( t el dest 1. Text ! = " " )
{
i f ( ( t el dest 1. Text [ 0] ! = ' 6' ) && ( t el dest 1. Text [ 0] ! =
255) )
{
t el dest 1. Text = " " ;
}
}
}
pr i vat e voi d sms1_Text Changed( obj ect sender , Event Ar gs e)
{
i nt i ;
sms1. Enabl ed = t r ue;
i = 100 - sms1. Text . Lengt h;
cont sms1. Text = Conver t . ToSt r i ng( i ) ;
i f ( sms1. Text . Lengt h > 0)
{
i f ( sms1. Text [ 0] == ' ?' )
{
sms1. Text = " " ;
}
}
}
pr i vat e voi d cent r omen_Text Changed( obj ect sender , Event Ar gs e)
{
swi t ch ( cent r omen. Text )
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
176
case " 656000311" :
oper ador a. Text = " Or ange" ;
br eak;
case " 607003110" :
oper ador a. Text = " Vodaf one" ;
br eak;
case " 609090909" :
oper ador a. Text = " Movi st ar " ;
br eak;
case " 622996111" :
oper ador a. Text = " Yoi go" ;
br eak;
case " ?????????" :
oper ador a. Text = " No di sponi bl e. " ;
cent r omen. Text = " No di sponi bl e. " ;
br eak;
def aul t :
i f ( oper ador a. Text ! = " No di sponi bl e. " )
oper ador a. Text = " ( desconoci do) " ;
br eak;
}
}
pr i vat e voi d pi nbox_Text Changed( obj ect sender , Event Ar gs e)
{
pi nbox. Enabl ed = t r ue;
}
pr i vat e voi d pass_Text Changed( obj ect sender , Event Ar gs e)
{
smscon. Text = " " ;
i f ( ( pass. Text . Lengt h == 4) && ( val . Text . Lengt h == 1) )
{
smscon. Text = pass. Text + val . Text ;
}
}
pr i vat e voi d val _Text Changed( obj ect sender , Event Ar gs e)
{
smscon. Text = " " ;
i f ( ( pass. Text . Lengt h == 4) && ( val . Text . Lengt h == 1) )
{
smscon. Text = pass. Text + val . Text ;
}
}
pr i vat e voi d bot _l eer pi c_Cl i ck( obj ect sender , Event Ar gs e)
{
l i mpi ar t odo( ) ;
pr ogr essBar 1. Enabl ed = t r ue;
pr ogr essBar 1. Maxi mum= 8;
pr ogr essBar 1. Val ue = 0;
st at usl abel . Text = " Leyendo dat os desde el di sposi t i vo. . . " ;
x = 0;
pi cl ei do = f al se;
l eer = t r ue;
}
pr i vat e voi d t el dest 2_Text Changed( obj ect sender , Event Ar gs e)
{
t el dest 2. Enabl ed = t r ue;
i f ( t el dest 2. Text ! = " " )
{
i f ( ( t el dest 2. Text [ 0] ! = ' 6' ) && ( t el dest 2. Text [ 0] ! =
255) )
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
177
t el dest 2. Text = " " ;
}
}
}
pr i vat e voi d sms2_Text Changed( obj ect sender , Event Ar gs e)
{
i nt i ;
sms2. Enabl ed = t r ue;
i = 100 - sms2. Text . Lengt h;
cont sms2. Text = Conver t . ToSt r i ng( i ) ;
i f ( sms2. Text . Lengt h > 0)
{
i f ( sms2. Text [ 0] == ' ?' )
{
sms2. Text = " " ;
}
}
}

pr i vat e voi d bot _car gar dat os_Cl i ck( obj ect sender , Event Ar gs e)
{
cadi nf o = " Exi st en campos si n r el l enar . \ n\ n" ;

i f ( pi nbox. Text . Lengt h == 4)
dat t x[ 0] = t r ue;
el se
cadi nf o += " PI N. \ n" ;

i f ( t el dest 1. Text . Lengt h == 9)
dat t x[ 1] = t r ue;
el se
cadi nf o += " Tel f ono dest i nat ar i o 1. \ n" ;

i f ( t el dest 2. Text . Lengt h == 9)
dat t x[ 2] = t r ue;
el se
cadi nf o += " Tel f ono dest i nat ar i o 2. \ n" ;

i f ( sms1. Text . Lengt h > 0)
dat t x[ 3] = t r ue;
el se
cadi nf o += " SMS 1. \ n" ;

i f ( sms2. Text . Lengt h > 0)
dat t x[ 4] = t r ue;
el se
cadi nf o += " SMS 2. \ n" ;

i f ( smscon. Text ! = " " )
dat t x[ 5] = t r ue;
el se
cadi nf o += " SMS DE CONTROL. \ n" ;

i f ( dat t x[ 0] && dat t x[ 1] && dat t x[ 2] && dat t x[ 3] && dat t x[ 4]
&& dat t x[ 5] )
{
car gar = t r ue;
/ / Thr ead. Sl eep( 20) ; / / del ay de 20ms
}
el se
{
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
178
MessageBox. Show( cadi nf o, " ERROR! " , MessageBoxBut t ons. OK,
MessageBoxI con. Er r or ) ;
}
}

pr i vat e voi d bot _l i mpi ar t odo_Cl i ck( obj ect sender , Event Ar gs e)
{
l i mpi ar t odo( ) ;
}
pr i vat e voi d l i mpi ar t odo( )
{
i nt i ;
sms1. Text = " " ;
sms2. Text = " " ;
pi nbox. Text = " " ;
pass. Text = " " ;
val . Text = " " ;
t el dest 1. Text = " " ;
t el dest 2. Text = " " ;
cent r omen. Text = " " ;
oper ador a. Text = " " ;
f or ( i = 0; i <= 5; i ++)
{
dat t x[ i ] = f al se;
}
}
}
}


















PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
179
8.4.2 Picmodem.Designer.cs

namespace Pi cModem
{
par t i al cl ass Pi cModem
{
/ / / <summar y>
/ / / Requi r ed desi gner var i abl e.
/ / / </ summar y>
pr i vat e Syst em. Component Model . I Cont ai ner component s = nul l ;

/ / / <summar y>
/ / / Cl ean up any r esour ces bei ng used.
/ / / </ summar y>
/ / / <par amname=" di sposi ng" >t r ue i f managed r esour ces shoul d be
di sposed; ot her wi se, f al se. </ par am>
pr ot ect ed over r i de voi d Di spose( bool di sposi ng)
{
i f ( di sposi ng && ( component s ! = nul l ) )
{
component s. Di spose( ) ;
}
base. Di spose( di sposi ng) ;
}

#r egi on Wi ndows For mDesi gner gener at ed code

/ / / <summar y>
/ / / Requi r ed met hod f or Desi gner suppor t - do not modi f y
/ / / t he cont ent s of t hi s met hod wi t h t he code edi t or .
/ / / </ summar y>
pr i vat e voi d I ni t i al i zeComponent ( )
{
t hi s. component s = new Syst em. Component Model . Cont ai ner ( ) ;
Syst em. Component Model . Component Resour ceManager r esour ces =
new Syst em. Component Model . Component Resour ceManager ( t ypeof ( Pi cModem) ) ;
t hi s. sal i r = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. st at usSt r i p1 = new Syst em. Wi ndows. For ms. St at usSt r i p( ) ;
t hi s. st at usl abel = new
Syst em. Wi ndows. For ms. Tool St r i pSt at usLabel ( ) ;
t hi s. t i mer 1 = new
Syst em. Wi ndows. For ms. Ti mer ( t hi s. component s) ;
t hi s. comando = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. gr oupBox5 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. oper ador a = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. cent r omen = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 10 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. pi nbox = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 9 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 7 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. bot _l eer pi c = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. bot _car gar dat os = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. t el dest 1 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 8 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. gr oupBox1 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. l abel 17 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. cont sms2 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 18 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. cont sms1 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. l abel 19 = new Syst em. Wi ndows. For ms. Label ( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
180
t hi s. t el dest 2 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. sms2 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 6 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. sms1 = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 13 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. gr oupBox4 = new Syst em. Wi ndows. For ms. Gr oupBox( ) ;
t hi s. l abel 15 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. val = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 14 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. pass = new Syst em. Wi ndows. For ms. Text Box( ) ;
t hi s. l abel 11 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. smscon = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. bot _l i mpi ar t odo = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. por def ect o = new Syst em. Wi ndows. For ms. But t on( ) ;
t hi s. pi ct ur eBox1 = new Syst em. Wi ndows. For ms. Pi ct ur eBox( ) ;
t hi s. l abel 3 = new Syst em. Wi ndows. For ms. Label ( ) ;
t hi s. pi ct ur eBox2 = new Syst em. Wi ndows. For ms. Pi ct ur eBox( ) ;
t hi s. pr ogr essBar 1 = new Syst em. Wi ndows. For ms. Pr ogr essBar ( ) ;
t hi s. st at usSt r i p1. SuspendLayout ( ) ;
t hi s. gr oupBox5. SuspendLayout ( ) ;
t hi s. gr oupBox1. SuspendLayout ( ) ;
t hi s. gr oupBox4. SuspendLayout ( ) ;

( ( Syst em. Component Model . I Suppor t I ni t i al i ze) ( t hi s. pi ct ur eBox1) ) . Begi nI ni t (
) ;

( ( Syst em. Component Model . I Suppor t I ni t i al i ze) ( t hi s. pi ct ur eBox2) ) . Begi nI ni t (
) ;
t hi s. SuspendLayout ( ) ;
/ /
/ / sal i r
/ /
t hi s. sal i r . Di al ogResul t =
Syst em. Wi ndows. For ms. Di al ogResul t . Cancel ;
t hi s. sal i r . Locat i on = new Syst em. Dr awi ng. Poi nt ( 384, 369) ;
t hi s. sal i r . Name = " sal i r " ;
t hi s. sal i r . Si ze = new Syst em. Dr awi ng. Si ze( 68, 74) ;
t hi s. sal i r . TabI ndex = 5;
t hi s. sal i r . Text = " SALI R" ;
t hi s. sal i r . UseVi sual St yl eBackCol or = t r ue;
t hi s. sal i r . Cl i ck += new
Syst em. Event Handl er ( t hi s. sal i r _Cl i ck) ;
/ /
/ / st at usSt r i p1
/ /
t hi s. st at usSt r i p1. I t ems. AddRange( new
Syst em. Wi ndows. For ms. Tool St r i pI t em[ ] {
t hi s. st at usl abel }) ;
t hi s. st at usSt r i p1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 0,
450) ;
t hi s. st at usSt r i p1. Name = " st at usSt r i p1" ;
t hi s. st at usSt r i p1. Si ze = new Syst em. Dr awi ng. Si ze( 464, 22) ;
t hi s. st at usSt r i p1. TabI ndex = 7;
t hi s. st at usSt r i p1. Text = " PFC - Cont r ol ModemGSM vi a PI C. " ;
/ /
/ / st at usl abel
/ /
t hi s. st at usl abel . Name = " st at usl abel " ;
t hi s. st at usl abel . Si ze = new Syst em. Dr awi ng. Si ze( 0, 17) ;
/ /
/ / t i mer 1
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
181
/ /
t hi s. t i mer 1. Enabl ed = t r ue;
t hi s. t i mer 1. I nt er val = 500;
t hi s. t i mer 1. Ti ck += new
Syst em. Event Handl er ( t hi s. t i mer 1_Ti ck) ;
/ /
/ / comando
/ /
t hi s. comando. Locat i on = new Syst em. Dr awi ng. Poi nt ( 190, 383) ;
t hi s. comando. MaxLengt h = 30;
t hi s. comando. Name = " comando" ;
t hi s. comando. Si ze = new Syst em. Dr awi ng. Si ze( 136, 20) ;
t hi s. comando. TabI ndex = 23;
t hi s. comando. Vi si bl e = f al se;
t hi s. comando. Text Changed += new
Syst em. Event Handl er ( t hi s. comando_Text Changed_1) ;
/ /
/ / gr oupBox5
/ /
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. oper ador a) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. cent r omen) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. l abel 10) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. pi nbox) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. l abel 9) ;
t hi s. gr oupBox5. Cont r ol s. Add( t hi s. l abel 7) ;
t hi s. gr oupBox5. Locat i on = new Syst em. Dr awi ng. Poi nt ( 7, 97) ;
t hi s. gr oupBox5. Name = " gr oupBox5" ;
t hi s. gr oupBox5. Si ze = new Syst em. Dr awi ng. Si ze( 186, 119) ;
t hi s. gr oupBox5. TabI ndex = 28;
t hi s. gr oupBox5. TabSt op = f al se;
t hi s. gr oupBox5. Text = " Par met r os modemGSM" ;
/ /
/ / oper ador a
/ /
t hi s. oper ador a. Bor der St yl e =
Syst em. Wi ndows. For ms. Bor der St yl e. Fi xed3D;
t hi s. oper ador a. Locat i on = new Syst em. Dr awi ng. Poi nt ( 85, 24) ;
t hi s. oper ador a. Name = " oper ador a" ;
t hi s. oper ador a. Si ze = new Syst em. Dr awi ng. Si ze( 95, 21) ;
t hi s. oper ador a. TabI ndex = 34;
/ /
/ / cent r omen
/ /
t hi s. cent r omen. Bor der St yl e =
Syst em. Wi ndows. For ms. Bor der St yl e. Fi xed3D;
t hi s. cent r omen. Locat i on = new Syst em. Dr awi ng. Poi nt ( 85, 52) ;
t hi s. cent r omen. Name = " cent r omen" ;
t hi s. cent r omen. Si ze = new Syst em. Dr awi ng. Si ze( 95, 21) ;
t hi s. cent r omen. TabI ndex = 22;
t hi s. cent r omen. Text Changed += new
Syst em. Event Handl er ( t hi s. cent r omen_Text Changed) ;
/ /
/ / l abel 10
/ /
t hi s. l abel 10. Aut oSi ze = t r ue;
t hi s. l abel 10. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 53) ;
t hi s. l abel 10. Name = " l abel 10" ;
t hi s. l abel 10. Si ze = new Syst em. Dr awi ng. Si ze( 67, 14) ;
t hi s. l abel 10. TabI ndex = 33;
t hi s. l abel 10. Text = " Cent r o SMS: " ;
/ /
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
182
/ / pi nbox
/ /
t hi s. pi nbox. Enabl ed = f al se;
t hi s. pi nbox. Locat i on = new Syst em. Dr awi ng. Poi nt ( 35, 82) ;
t hi s. pi nbox. MaxLengt h = 4;
t hi s. pi nbox. Name = " pi nbox" ;
t hi s. pi nbox. Si ze = new Syst em. Dr awi ng. Si ze( 46, 20) ;
t hi s. pi nbox. TabI ndex = 1;
t hi s. pi nbox. Text Changed += new
Syst em. Event Handl er ( t hi s. pi nbox_Text Changed) ;
/ /
/ / l abel 9
/ /
t hi s. l abel 9. Aut oSi ze = t r ue;
t hi s. l abel 9. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 85) ;
t hi s. l abel 9. Name = " l abel 9" ;
t hi s. l abel 9. Si ze = new Syst em. Dr awi ng. Si ze( 25, 14) ;
t hi s. l abel 9. TabI ndex = 30;
t hi s. l abel 9. Text = " PI N: " ;
/ /
/ / l abel 7
/ /
t hi s. l abel 7. Aut oSi ze = t r ue;
t hi s. l abel 7. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 25) ;
t hi s. l abel 7. Name = " l abel 7" ;
t hi s. l abel 7. Si ze = new Syst em. Dr awi ng. Si ze( 56, 14) ;
t hi s. l abel 7. TabI ndex = 24;
t hi s. l abel 7. Text = " Oper ador : " ;
/ /
/ / bot _l eer pi c
/ /
t hi s. bot _l eer pi c. Locat i on = new Syst em. Dr awi ng. Poi nt ( 7, 396) ;
t hi s. bot _l eer pi c. Name = " bot _l eer pi c" ;
t hi s. bot _l eer pi c. Si ze = new Syst em. Dr awi ng. Si ze( 143, 21) ;
t hi s. bot _l eer pi c. TabI ndex = 39;
t hi s. bot _l eer pi c. Text = " LEER PARMETROS" ;
t hi s. bot _l eer pi c. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _l eer pi c. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _l eer pi c_Cl i ck) ;
/ /
/ / bot _car gar dat os
/ /
t hi s. bot _car gar dat os. Locat i on = new Syst em. Dr awi ng. Poi nt ( 7,
423) ;
t hi s. bot _car gar dat os. Name = " bot _car gar dat os" ;
t hi s. bot _car gar dat os. Si ze = new Syst em. Dr awi ng. Si ze( 143, 20) ;
t hi s. bot _car gar dat os. TabI ndex = 36;
t hi s. bot _car gar dat os. Text = " CARGAR PARMETROS" ;
t hi s. bot _car gar dat os. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _car gar dat os. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _car gar dat os_Cl i ck) ;
/ /
/ / t el dest 1
/ /
t hi s. t el dest 1. Enabl ed = f al se;
t hi s. t el dest 1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 119, 105) ;
t hi s. t el dest 1. MaxLengt h = 9;
t hi s. t el dest 1. Name = " t el dest 1" ;
t hi s. t el dest 1. Si ze = new Syst em. Dr awi ng. Si ze( 95, 20) ;
t hi s. t el dest 1. TabI ndex = 3;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
183
t hi s. t el dest 1. Text Changed += new
Syst em. Event Handl er ( t hi s. t el dest _Text Changed) ;
/ /
/ / l abel 8
/ /
t hi s. l abel 8. Aut oSi ze = t r ue;
t hi s. l abel 8. Locat i on = new Syst em. Dr awi ng. Poi nt ( 33, 108) ;
t hi s. l abel 8. Name = " l abel 8" ;
t hi s. l abel 8. Si ze = new Syst em. Dr awi ng. Si ze( 80, 14) ;
t hi s. l abel 8. TabI ndex = 27;
t hi s. l abel 8. Text = " Tel . dest i no #1: " ;
/ /
/ / gr oupBox1
/ /
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 17) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. cont sms2) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 18) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. cont sms1) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 19) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. t el dest 2) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. sms2) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 6) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. sms1) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 13) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. l abel 8) ;
t hi s. gr oupBox1. Cont r ol s. Add( t hi s. t el dest 1) ;
t hi s. gr oupBox1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 7, 225) ;
t hi s. gr oupBox1. Name = " gr oupBox1" ;
t hi s. gr oupBox1. Si ze = new Syst em. Dr awi ng. Si ze( 445, 138) ;
t hi s. gr oupBox1. TabI ndex = 37;
t hi s. gr oupBox1. TabSt op = f al se;
t hi s. gr oupBox1. Text = " Mensaj es SMS: " ;
/ /
/ / l abel 17
/ /
t hi s. l abel 17. Aut oSi ze = t r ue;
t hi s. l abel 17. Locat i on = new Syst em. Dr awi ng. Poi nt ( 230, 72) ;
t hi s. l abel 17. Name = " l abel 17" ;
t hi s. l abel 17. Si ze = new Syst em. Dr awi ng. Si ze( 48, 14) ;
t hi s. l abel 17. TabI ndex = 44;
t hi s. l abel 17. Text = " Quedan: " ;
/ /
/ / cont sms2
/ /
t hi s. cont sms2. Aut oSi ze = t r ue;
t hi s. cont sms2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 250, 86) ;
t hi s. cont sms2. Name = " cont sms2" ;
t hi s. cont sms2. Si ze = new Syst em. Dr awi ng. Si ze( 25, 14) ;
t hi s. cont sms2. TabI ndex = 43;
t hi s. cont sms2. Text = " 100" ;
/ /
/ / l abel 18
/ /
t hi s. l abel 18. Aut oSi ze = t r ue;
t hi s. l abel 18. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 72) ;
t hi s. l abel 18. Name = " l abel 18" ;
t hi s. l abel 18. Si ze = new Syst em. Dr awi ng. Si ze( 48, 14) ;
t hi s. l abel 18. TabI ndex = 42;
t hi s. l abel 18. Text = " Quedan: " ;
/ /
/ / cont sms1
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
184
/ /
t hi s. cont sms1. Aut oSi ze = t r ue;
t hi s. cont sms1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 28, 86) ;
t hi s. cont sms1. Name = " cont sms1" ;
t hi s. cont sms1. Si ze = new Syst em. Dr awi ng. Si ze( 25, 14) ;
t hi s. cont sms1. TabI ndex = 41;
t hi s. cont sms1. Text = " 100" ;
/ /
/ / l abel 19
/ /
t hi s. l abel 19. Aut oSi ze = t r ue;
t hi s. l abel 19. Locat i on = new Syst em. Dr awi ng. Poi nt ( 255, 109) ;
t hi s. l abel 19. Name = " l abel 19" ;
t hi s. l abel 19. Si ze = new Syst em. Dr awi ng. Si ze( 80, 14) ;
t hi s. l abel 19. TabI ndex = 39;
t hi s. l abel 19. Text = " Tel . dest i no #2: " ;
/ /
/ / t el dest 2
/ /
t hi s. t el dest 2. Enabl ed = f al se;
t hi s. t el dest 2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 341, 106) ;
t hi s. t el dest 2. MaxLengt h = 9;
t hi s. t el dest 2. Name = " t el dest 2" ;
t hi s. t el dest 2. Si ze = new Syst em. Dr awi ng. Si ze( 95, 20) ;
t hi s. t el dest 2. TabI ndex = 5;
t hi s. t el dest 2. Text Changed += new
Syst em. Event Handl er ( t hi s. t el dest 2_Text Changed) ;
/ /
/ / sms2
/ /
t hi s. sms2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 281, 19) ;
t hi s. sms2. MaxLengt h = 100;
t hi s. sms2. Mul t i l i ne = t r ue;
t hi s. sms2. Name = " sms2" ;
t hi s. sms2. Si ze = new Syst em. Dr awi ng. Si ze( 155, 81) ;
t hi s. sms2. TabI ndex = 4;
t hi s. sms2. Text Changed += new
Syst em. Event Handl er ( t hi s. sms2_Text Changed) ;
/ /
/ / l abel 6
/ /
t hi s. l abel 6. Aut oSi ze = t r ue;
t hi s. l abel 6. Locat i on = new Syst em. Dr awi ng. Poi nt ( 228, 19) ;
t hi s. l abel 6. Name = " l abel 6" ;
t hi s. l abel 6. Si ze = new Syst em. Dr awi ng. Si ze( 47, 14) ;
t hi s. l abel 6. TabI ndex = 33;
t hi s. l abel 6. Text = " SMS #2: " ;
/ /
/ / sms1
/ /
t hi s. sms1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 59, 19) ;
t hi s. sms1. MaxLengt h = 100;
t hi s. sms1. Mul t i l i ne = t r ue;
t hi s. sms1. Name = " sms1" ;
t hi s. sms1. Si ze = new Syst em. Dr awi ng. Si ze( 155, 81) ;
t hi s. sms1. TabI ndex = 2;
t hi s. sms1. Text Changed += new
Syst em. Event Handl er ( t hi s. sms1_Text Changed) ;
/ /
/ / l abel 13
/ /
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
185
t hi s. l abel 13. Aut oSi ze = t r ue;
t hi s. l abel 13. Locat i on = new Syst em. Dr awi ng. Poi nt ( 8, 19) ;
t hi s. l abel 13. Name = " l abel 13" ;
t hi s. l abel 13. Si ze = new Syst em. Dr awi ng. Si ze( 47, 14) ;
t hi s. l abel 13. TabI ndex = 24;
t hi s. l abel 13. Text = " SMS #1: " ;
/ /
/ / gr oupBox4
/ /
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. l abel 15) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. val ) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. l abel 14) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. pass) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. l abel 11) ;
t hi s. gr oupBox4. Cont r ol s. Add( t hi s. smscon) ;
t hi s. gr oupBox4. Locat i on = new Syst em. Dr awi ng. Poi nt ( 199, 97) ;
t hi s. gr oupBox4. Name = " gr oupBox4" ;
t hi s. gr oupBox4. Si ze = new Syst em. Dr awi ng. Si ze( 253, 119) ;
t hi s. gr oupBox4. TabI ndex = 39;
t hi s. gr oupBox4. TabSt op = f al se;
t hi s. gr oupBox4. Text = " SMS de cont r ol : " ;
/ /
/ / l abel 15
/ /
t hi s. l abel 15. Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 83) ;
t hi s. l abel 15. Name = " l abel 15" ;
t hi s. l abel 15. Si ze = new Syst em. Dr awi ng. Si ze( 77, 14) ;
t hi s. l abel 15. TabI ndex = 41;
t hi s. l abel 15. Text = " val or : ( 1) " ;
t hi s. l abel 15. Text Al i gn =
Syst em. Dr awi ng. Cont ent Al i gnment . Mi ddl eRi ght ;
/ /
/ / val
/ /
t hi s. val . Locat i on = new Syst em. Dr awi ng. Poi nt ( 89, 80) ;
t hi s. val . MaxLengt h = 1;
t hi s. val . Name = " val " ;
t hi s. val . Si ze = new Syst em. Dr awi ng. Si ze( 103, 20) ;
t hi s. val . TabI ndex = 7;
t hi s. val . Text Changed += new
Syst em. Event Handl er ( t hi s. val _Text Changed) ;
/ /
/ / l abel 14
/ /
t hi s. l abel 14. Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 57) ;
t hi s. l abel 14. Name = " l abel 14" ;
t hi s. l abel 14. Si ze = new Syst em. Dr awi ng. Si ze( 77, 14) ;
t hi s. l abel 14. TabI ndex = 39;
t hi s. l abel 14. Text = " passwor d: ( 4) " ;
t hi s. l abel 14. Text Al i gn =
Syst em. Dr awi ng. Cont ent Al i gnment . Mi ddl eRi ght ;
/ /
/ / pass
/ /
t hi s. pass. Locat i on = new Syst em. Dr awi ng. Poi nt ( 89, 55) ;
t hi s. pass. MaxLengt h = 4;
t hi s. pass. Name = " pass" ;
t hi s. pass. Si ze = new Syst em. Dr awi ng. Si ze( 103, 20) ;
t hi s. pass. TabI ndex = 6;
t hi s. pass. Text Changed += new
Syst em. Event Handl er ( t hi s. pass_Text Changed) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
186
/ /
/ / l abel 11
/ /
t hi s. l abel 11. Aut oSi ze = t r ue;
t hi s. l abel 11. Locat i on = new Syst em. Dr awi ng. Poi nt ( 6, 16) ;
t hi s. l abel 11. Name = " l abel 11" ;
t hi s. l abel 11. Si ze = new Syst em. Dr awi ng. Si ze( 49, 14) ;
t hi s. l abel 11. TabI ndex = 30;
t hi s. l abel 11. Text = " For mat o: " ;
/ /
/ / smscon
/ /
t hi s. smscon. Bor der St yl e =
Syst em. Wi ndows. For ms. Bor der St yl e. Fi xed3D;
t hi s. smscon. Locat i on = new Syst em. Dr awi ng. Poi nt ( 59, 32) ;
t hi s. smscon. Name = " smscon" ;
t hi s. smscon. Si ze = new Syst em. Dr awi ng. Si ze( 133, 18) ;
t hi s. smscon. TabI ndex = 30;
/ /
/ / bot _l i mpi ar t odo
/ /
t hi s. bot _l i mpi ar t odo. Locat i on = new Syst em. Dr awi ng. Poi nt ( 7,
369) ;
t hi s. bot _l i mpi ar t odo. Name = " bot _l i mpi ar t odo" ;
t hi s. bot _l i mpi ar t odo. Si ze = new Syst em. Dr awi ng. Si ze( 143, 21) ;
t hi s. bot _l i mpi ar t odo. TabI ndex = 32;
t hi s. bot _l i mpi ar t odo. Text = " LI MPI AR TODO" ;
t hi s. bot _l i mpi ar t odo. UseVi sual St yl eBackCol or = t r ue;
t hi s. bot _l i mpi ar t odo. Cl i ck += new
Syst em. Event Handl er ( t hi s. bot _l i mpi ar t odo_Cl i ck) ;
/ /
/ / por def ect o
/ /
t hi s. por def ect o. Locat i on = new Syst em. Dr awi ng. Poi nt ( 0, 0) ;
t hi s. por def ect o. Name = " por def ect o" ;
t hi s. por def ect o. Si ze = new Syst em. Dr awi ng. Si ze( 75, 23) ;
t hi s. por def ect o. TabI ndex = 0;
/ /
/ / pi ct ur eBox1
/ /
t hi s. pi ct ur eBox1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 0, 0) ;
t hi s. pi ct ur eBox1. Name = " pi ct ur eBox1" ;
t hi s. pi ct ur eBox1. Si ze = new Syst em. Dr awi ng. Si ze( 100, 50) ;
t hi s. pi ct ur eBox1. TabI ndex = 0;
t hi s. pi ct ur eBox1. TabSt op = f al se;
/ /
/ / l abel 3
/ /
t hi s. l abel 3. Font = new Syst em. Dr awi ng. Font ( " Comi c Sans MS" ,
14. 25F, Syst em. Dr awi ng. Font St yl e. Bol d, Syst em. Dr awi ng. Gr aphi csUni t . Poi nt ,
( ( byt e) ( 0) ) ) ;
t hi s. l abel 3. For eCol or = Syst em. Dr awi ng. Col or . Navy;
t hi s. l abel 3. Locat i on = new Syst em. Dr awi ng. Poi nt ( 12, 9) ;
t hi s. l abel 3. Name = " l abel 3" ;
t hi s. l abel 3. Si ze = new Syst em. Dr awi ng. Si ze( 255, 64) ;
t hi s. l abel 3. TabI ndex = 43;
t hi s. l abel 3. Text = " Cont r ol ModemGSM desde
mi cr ocont r ol ador . " ;
/ /
/ / pi ct ur eBox2
/ /
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
187
t hi s. pi ct ur eBox2. I mage =
( ( Syst em. Dr awi ng. I mage) ( r esour ces. Get Obj ect ( " pi ct ur eBox2. I mage" ) ) ) ;
t hi s. pi ct ur eBox2. Locat i on = new Syst em. Dr awi ng. Poi nt ( 353, 9) ;
t hi s. pi ct ur eBox2. Name = " pi ct ur eBox2" ;
t hi s. pi ct ur eBox2. Si ze = new Syst em. Dr awi ng. Si ze( 74, 82) ;
t hi s. pi ct ur eBox2. Si zeMode =
Syst em. Wi ndows. For ms. Pi ct ur eBoxSi zeMode. Aut oSi ze;
t hi s. pi ct ur eBox2. TabI ndex = 44;
t hi s. pi ct ur eBox2. TabSt op = f al se;
/ /
/ / pr ogr essBar 1
/ /
t hi s. pr ogr essBar 1. Locat i on = new Syst em. Dr awi ng. Poi nt ( 265,
454) ;
t hi s. pr ogr essBar 1. Maxi mum= 10;
t hi s. pr ogr essBar 1. Name = " pr ogr essBar 1" ;
t hi s. pr ogr essBar 1. Si ze = new Syst em. Dr awi ng. Si ze( 178, 16) ;
t hi s. pr ogr essBar 1. TabI ndex = 45;
/ /
/ / Pi cModem
/ /
t hi s. Aut oScal eMode = Syst em. Wi ndows. For ms. Aut oScal eMode. None;
t hi s. Cancel But t on = t hi s. sal i r ;
t hi s. Cl i ent Si ze = new Syst em. Dr awi ng. Si ze( 464, 472) ;
t hi s. Cont r ol s. Add( t hi s. pr ogr essBar 1) ;
t hi s. Cont r ol s. Add( t hi s. pi ct ur eBox2) ;
t hi s. Cont r ol s. Add( t hi s. l abel 3) ;
t hi s. Cont r ol s. Add( t hi s. bot _l i mpi ar t odo) ;
t hi s. Cont r ol s. Add( t hi s. bot _l eer pi c) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox4) ;
t hi s. Cont r ol s. Add( t hi s. comando) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox1) ;
t hi s. Cont r ol s. Add( t hi s. bot _car gar dat os) ;
t hi s. Cont r ol s. Add( t hi s. gr oupBox5) ;
t hi s. Cont r ol s. Add( t hi s. st at usSt r i p1) ;
t hi s. Cont r ol s. Add( t hi s. sal i r ) ;
t hi s. Font = new Syst em. Dr awi ng. Font ( " Ar i al " , 8. 25F,
Syst em. Dr awi ng. Font St yl e. Regul ar , Syst em. Dr awi ng. Gr aphi csUni t . Poi nt ,
( ( byt e) ( 0) ) ) ;
t hi s. For mBor der St yl e =
Syst em. Wi ndows. For ms. For mBor der St yl e. Fi xedSi ngl e;
t hi s. I con =
( ( Syst em. Dr awi ng. I con) ( r esour ces. Get Obj ect ( " $t hi s. I con" ) ) ) ;
t hi s. Mar gi n = new Syst em. Wi ndows. For ms. Paddi ng( 2, 3, 2, 3) ;
t hi s. Maxi mi zeBox = f al se;
t hi s. Name = " Pi cModem" ;
t hi s. Text = " Pi cModem" ;
t hi s. st at usSt r i p1. ResumeLayout ( f al se) ;
t hi s. st at usSt r i p1. Per f or mLayout ( ) ;
t hi s. gr oupBox5. ResumeLayout ( f al se) ;
t hi s. gr oupBox5. Per f or mLayout ( ) ;
t hi s. gr oupBox1. ResumeLayout ( f al se) ;
t hi s. gr oupBox1. Per f or mLayout ( ) ;
t hi s. gr oupBox4. ResumeLayout ( f al se) ;
t hi s. gr oupBox4. Per f or mLayout ( ) ;

( ( Syst em. Component Model . I Suppor t I ni t i al i ze) ( t hi s. pi ct ur eBox1) ) . EndI ni t ( ) ;

( ( Syst em. Component Model . I Suppor t I ni t i al i ze) ( t hi s. pi ct ur eBox2) ) . EndI ni t ( ) ;
t hi s. ResumeLayout ( f al se) ;
t hi s. Per f or mLayout ( ) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
188

}

#endr egi on

pr i vat e Syst em. Wi ndows. For ms. But t on sal i r ;
pr i vat e Syst em. Wi ndows. For ms. St at usSt r i p st at usSt r i p1;
pr i vat e Syst em. Wi ndows. For ms. Tool St r i pSt at usLabel st at usl abel ;
pr i vat e Syst em. Wi ndows. For ms. Ti mer t i mer 1;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 7;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 8;
pr i vat e Syst em. Wi ndows. For ms. Text Box pi nbox;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 9;
pr i vat e Syst em. Wi ndows. For ms. Text Box t el dest 1;
publ i c Syst em. Wi ndows. For ms. Gr oupBox gr oupBox5;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 10;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _car gar dat os;
pr i vat e Syst em. Wi ndows. For ms. Label cent r omen;
pr i vat e Syst em. Wi ndows. For ms. Text Box comando;
publ i c Syst em. Wi ndows. For ms. Gr oupBox gr oupBox1;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 6;
pr i vat e Syst em. Wi ndows. For ms. Text Box sms1;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 13;
pr i vat e Syst em. Wi ndows. For ms. Text Box sms2;
publ i c Syst em. Wi ndows. For ms. Gr oupBox gr oupBox4;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 11;
pr i vat e Syst em. Wi ndows. For ms. Label smscon;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 15;
pr i vat e Syst em. Wi ndows. For ms. Text Box val ;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 14;
pr i vat e Syst em. Wi ndows. For ms. Text Box pass;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _l eer pi c;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 19;
pr i vat e Syst em. Wi ndows. For ms. Text Box t el dest 2;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 17;
pr i vat e Syst em. Wi ndows. For ms. Label cont sms2;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 18;
pr i vat e Syst em. Wi ndows. For ms. Label cont sms1;
pr i vat e Syst em. Wi ndows. For ms. Label oper ador a;
pr i vat e Syst em. Wi ndows. For ms. But t on bot _l i mpi ar t odo;
pr i vat e Syst em. Wi ndows. For ms. But t on por def ect o;
pr i vat e Syst em. Wi ndows. For ms. Pi ct ur eBox pi ct ur eBox1;
pr i vat e Syst em. Wi ndows. For ms. Label l abel 3;
pr i vat e Syst em. Wi ndows. For ms. Pi ct ur eBox pi ct ur eBox2;
pr i vat e Syst em. Wi ndows. For ms. Pr ogr essBar pr ogr essBar 1;
/ / pr i vat e AxMSCommLi b. AxMSCommpser i e;
}
}











PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
189
8.5 Cdigo fuente de la API comn para las dos versiones.
8.5.1 PicmodemAPI.cs
usi ng Syst em;
usi ng Syst em. Col l ect i ons. Gener i c;
usi ng Syst em. Wi ndows. For ms;
usi ng Syst em. Runt i me. I nt er opSer vi ces; / / Cl ase par a i mpor t ar DLL

usi ng PVOI D = Syst em. I nt Pt r ;
usi ng DWORD = Syst em. UI nt 32;

namespace Pi cModem
{
unsaf e publ i c cl ass Pi cmodemAPI
{
#r egi on Def i ni ci n de l os St r i ngs: EndPoi nt y VI D_PI D
st r i ng vi d_pi d_nor m= " vi d_04d8&pi d_0008" ;
st r i ng out _pi pe = " \ \ MCHP_EP1" ;
st r i ng i n_pi pe = " \ \ MCHP_EP1" ;
#endr egi on
#r egi on Funci ones i mpor t adas de l a DLL: mpusbapi . dl l
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]
pr i vat e st at i c ext er n DWORD _MPUSBGet DLLVer si on( ) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]
pr i vat e st at i c ext er n DWORD _MPUSBGet Devi ceCount ( st r i ng
pVI D_PI D) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]
pr i vat e st at i c ext er n voi d* _MPUSBOpen( DWORD i nst ance, st r i ng
pVI D_PI D, st r i ng pEP, DWORD dwDi r , DWORD dwReser ved) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]
pr i vat e st at i c ext er n DWORD _MPUSBRead( voi d* handl e, voi d* pDat a,
DWORD dwLen, DWORD* pLengt h, DWORD dwMi l l i seconds) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]
pr i vat e st at i c ext er n DWORD _MPUSBWr i t e( voi d* handl e, voi d*
pDat a, DWORD dwLen, DWORD* pLengt h, DWORD dwMi l l i seconds) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]
pr i vat e st at i c ext er n DWORD _MPUSBReadI nt ( voi d* handl e, DWORD*
pDat a, DWORD dwLen, DWORD* pLengt h, DWORD dwMi l l i seconds) ;
[ Dl l I mpor t ( " mpusbapi . dl l " ) ]
pr i vat e st at i c ext er n bool _MPUSBCl ose( voi d* handl e) ;
#endr egi on

voi d* myOut Pi pe;
voi d* myI nPi pe;

st at i c voi d Mai n( )
{
Appl i cat i on. Enabl eVi sual St yl es( ) ;
Appl i cat i on. Run( new Pi cModem( ) ) ;
}

publ i c voi d OpenPi pes( )
{
DWORD sel ect i on = 0;

myOut Pi pe = _MPUSBOpen( sel ect i on, vi d_pi d_nor m, out _pi pe, 0,
0) ;
myI nPi pe = _MPUSBOpen( sel ect i on, vi d_pi d_nor m, i n_pi pe, 1,
0) ;
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
190
}

publ i c voi d Cl osePi pes( )
{
_MPUSBCl ose( myOut Pi pe) ;
_MPUSBCl ose( myI nPi pe) ;
}

pr i vat e voi d SendPacket ( byt e* SendDat a, DWORD SendLengt h)
{
ui nt SendDel ay = 20;

DWORD Sent Dat aLengt h;

OpenPi pes( ) ;
_MPUSBWr i t e( myOut Pi pe, ( voi d*) SendDat a, SendLengt h,
&Sent Dat aLengt h, SendDel ay) ;
Cl osePi pes( ) ;
}

pr i vat e voi d Recei vePacket ( byt e* Recei veDat a, DWORD*
Recei veLengt h)
{
ui nt Recei veDel ay = 20;

DWORD Expect edRecei veLengt h = *Recei veLengt h;

OpenPi pes( ) ;
_MPUSBRead( myI nPi pe, ( voi d*) Recei veDat a,
Expect edRecei veLengt h, Recei veLengt h, Recei veDel ay) ;
Cl osePi pes( ) ;
}

publ i c ui nt r eci beUSB( )
{
ui nt r x=0;
byt e* r ecei ve_buf = st ackal l oc byt e[ 1] ;

DWORD RecvLengt h = 1;

Recei vePacket ( r ecei ve_buf , &RecvLengt h) ;
r x = ( ui nt ) r ecei ve_buf [ 0] ;
r et ur n r x;
}

publ i c voi d envi aUSB( ui nt val or )
{
byt e* send_buf = st ackal l oc byt e[ 1] ;
send_buf [ 0] = ( byt e) val or ;
SendPacket ( send_buf , 1) ; / / envi a el byt e
}

publ i c ui nt Conexi on( )
{
ui nt usb_connect i on;
usb_connect i on = _MPUSBGet Devi ceCount ( vi d_pi d_nor m) ;
r et ur n usb_connect i on;
}
}
}
PFC: Control de mdem GSM desde microcontrolador.
Christian Paniagua Martn
191
8.6 Cdigo del archivo picmodem.inf.

[ Ver si on]
Si gnat ur e = " $WI NDOWS NT$"
Cl ass = %Cl assName%
Cl assGui d = {4D36E911- E325- 11CE- BFC1- 08002BE10318}
Pr ovi der = %MFGNAME%
Dr i ver Ver = 05/ 13/ 2006, 1. 0. 0. 0
Cat al ogFi l e = pi cmodem. cat

[ Dest i nat i onDi r s]
Def aul t Dest Di r = 12
Pi cModem. Cl assCopyFi l es = 11

; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Cl ass I nst al l Sect i ons
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[ Cl assI nst al l 32]
AddReg = Pi cModem. Cl assReg
CopyFi l es = Pi cModem. Cl assCopyFi l es

[ Pi cModem. Cl assReg]
HKR, , , 0, %Cl assName%
HKR, , Cl ass, , %Cl assDesc%
HKR, , I con, , 11
HKR, , I nst al l er 32, , " pi cmodemci . dl l , Pi cModemCl assI nst al l er "

[ Pi cModem. Cl assCopyFi l es]
pi cmodemci . dl l

; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Devi ce I nst al l Sect i ons
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[ Manuf act ur er ]
%MFGNAME%= St andar d

[ St andar d]
%DESCRI PTI ON%= Dr i ver I nst al l , USB\ VI D_04D8&PI D_0008

[ Sour ceDi sksNames]
1 = %I NSTDI SK%, , , " "

[ Sour ceDi sksFi l es]
mchpusb. sys = 1, ,
pi cmodemci . dl l = 1, ,

; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Wi ndows 2000/ XP Sect i ons
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[ Dr i ver I nst al l . NT]
CopyFi l es = Dr i ver CopyFi l es

[ Dr i ver CopyFi l es]
mchpusb. sys

Вам также может понравиться