804 Pub
804 Pub
804 Pub
= (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