You are on page 1of 166

Comunicacin Punto a Punto

Va Mdem GSM

Titulacin: Ingenieria Tcnica Industrial en Electrnica Industrial

AUTOR: ALBERTO LORENZO BONILLO


DIRECTOR: ERNEST GIL DOLCET
FECHA: ENERO / 2004.

Comunicacin Punto a Punto Va Mdem GSM

1.NDICE

ndice

Comunicacin Punto a Punto Va Mdem GSM

ndice

NDICE
1. NDICE.........................................................................................................3
2. PRESENTACIN-OBJETIVOS...............................................................7
3. SISTEMAS DE COMUNICACIN..........................................................9
3.1 Introduccin......................................................................................................10
3.2 SMS ...................................................................................................................10
3.2.1 Caractersticas................................................ .....................................10
3.2.2 Principales aplicaciones................................................ ... ..................10
3.3 Llamadas de VOZ.............................................................................................11
3.3.1 Caractersticas........................................... ..........................................11
3.3.2 Principales aplicaciones........................................... ...........................11
3.4 FACSIMIL...................................................................... .................................11
3.4.1 Caractersticas........................................... ..........................................11
3.5 HSCSD ...................................................................... .......................................12
3.5.1 Caractersticas........................................... ..........................................12
3.5.2 Principales aplicaciones........................................... ...........................12
3.5.3 Ventajas y desventajas........................................... .............................12
3.6 GPRS ...................................................................... .........................................13
3.6.1 Caractersticas de Funcionamiento........................................... ..........13
3.6.2 Principales aplicaciones........................................... ...........................13
3.7 Conclusiones...................................................................... ...............................14

4. COMANDOS AT.......................................................................................15
4.1 Introduccin...................................................................... ...............................16
4.2 Tipos de Comandos AT....................................................................................16
4.3 Modos De Funcionamiento Del MODEM......................................................16
4.4 Listado de comandos utilizados.......................................................................17
4.4.1 Control Errores....................................................................................17
4.4.2 Codigos De Acceso.............................................................................17
4.4.3 Mensajes Sms........................................... ..........................................17
4.4.4 Transferencia De Datos CSD-HSCSD................................................18
4.4.5 Lectura De La Agenda Y Del Registro Llamadas...............................19
4.4.6 Fecha Y Hora........................................... ...........................................19
4.4.7 Identificacin........................................... ...........................................20

5. PROGRAMACIN DEL PUERTO SERIE RS-232.............................21


5.1 Introduccin......................................................................................................22
5.2 Configuracin del puerto serie........................................................................22
5.3 Acceso al puerto serie mediante el control MsComm...................................23
5.3.1 Propiedades De Configuracin Previa A Su Uso................................23
5.3.2 Propiedades Propias Del Tiempo De Ejecucin..................................26
5.3.3 Eventos Del MsComm........................................... .............................27

Comunicacin Punto a Punto Va Mdem GSM

ndice

6. DISEO DE LA APLICACIN CON VISUAL BASIC.......................29


6.1 Introduccin...................................................................... ...............................30
6.2 Estructura de programacin...........................................................................30
6.2.1 Mdulos de formulario........................................... ............................30
6.2.2 Mdulos estndar........................................... .....................................30
6.2.3 Controles........................................... ..................................................31

7. DIAGRAMAS DE FLUJO.......................................................................34
7.1
7.2
7.3
7.4
7.5

Introduccin..................................... ...............................................................35
Funcionamiento General Del Programa.......................................................36
Formato Gene ral De Comunicacin PC-Mdem.........................................37
Enviar Tramas: Enviar Comando, Obtener Y Tratar Respuesta..............38
Espera De La Respuesta Completa...............................................................39
metodologa a) ........................................... .................................................39
metodologa b) ........................................... .................................................40
metodologa c) ........................................... .................................................41
metodologa d) ........................................... .................................................42
7.6 Tratar Respuesta (Procedimiento Treat_Responses) ..................................43
7.7 Configuracin Del Puerto Serie..................................... ...............................44
7.8 Control Del Cdigo De Acceso (Accin PIN_CONTROL) .........................45
7.9 Formulario De Introduccin Del Cdigo Pin................................................46
7.10 Tratar Respuesta Introduccin De Cdigo Pin (Accin Pin_Code) ........47
7.11 Formulario De Introduccin Del Cdigo PUK............................................48
7.12 Tratar Respuesta a la Introduccin De Cdigo PUK (PUK_Code) .........49
7.13 Men Principal............... ............... ............... ............... ............... ...............50
7.14 Cargar La Configuracin Del Programa............... ............... .....................51
7.15 Registro De Llamadas............... ............... ............... ............... ....................53
7.16 Lectura De La Memoria Del Mdem (Accin Phonebook_Read) ............54
7.17 Men De La Agenda Telefnica............... ............... ............... ....................56
7.18 Bsqueda Por Nombre En La Agenda Telefnica............... .......................57
7.19 Bsqueda Por Posicin En La Agenda Telefnica............... ......................59
7.20 Insertar Nueva Entrada En La Agenda Telefnica............... .....................60
7.21 Men Mensajes SMS............... ............... ............... ............... ......................61
7.22 Configuracin De Los Mensajes SMS............... ............... ..........................62
7.23 Accin Preferred Message Storage............... ............... ............... ...............64
7.24 Leer, Borrar y Reenviar SMS Desde Memoria............... ............... ...........65
7.25 Leer Mensaje (Accin Read_Message) ............... ............... ........................66
7.26 Formulario Escribir Mensajes (Guardar o Enviar) ............... ...................68
7.27 Enviar o Guardar (Accin SEND_OR_WRITE _MESSAGES) ...............69
7.28 Formulario Enviar Mensaje............... ............... ............... ..........................71
7.29 Formulario Transferencia De Datos CSD............... ............... ....................72
7.30 Finalizar Una Llamada, Colgar (Accion Hang Up) ............... ...................73
7.31 Transferencia De Datos CSD (Connected) ............... ............... ..............74
7.32 Acceso Al Modo Comandos (Accin Command Mode) ............... .............75
7.33 Configuracin De Parmetros Para La Transferencia CSD-HSCSD.......76

Comunicacin Punto a Punto Va Mdem GSM

ndice

8. MANUAL DE USUARIO.........................................................................78
8.1 Introduccin............... ............... ............... ............... ............... ......................79
8.2 Configuracin Del Puerto Serie ............... ............... ............... .....................80
8.3 Control De Cdigos............... ............... ............... ............... ..........................81
8.4 Men Principal............... ............... ............... ............... ............... .................82
8.5 Agenda Telefnica............... ............... ............... ............... ............................83
8.6 Mensajes De Texto (SMS) ............... ............... ............... ............... ..............85
8.7 Transferencia De Datos............... ............... ............... ............... ....................88
8.8 Registro De Llamadas............... ............... ............... ............... ......................90

9. CONCLUSIONES.....................................................................................91
10. CDIGO FUENTE COMENTADO.....................................................94
10.1 Introduccin............... ............... ............... ............... ...................................95
10.2 Cdigo Fuente............... ............... ............... ............... ................................95
MDULOS DE FORMULARIO
10.2.1 PRESENTATION.frm........................................... ..............96
10.2.2 COM_PORT_CONFIGURATION.frm...............................97
10.2.3 PIN_CODE.frm........................................... ......................102
10.2.4 PUK_CODE.frm........................................... .....................103
10.2.5 MENU.frm........................................... ..............................104
10.2.6 CALL_REGISTER.frm......................................................109
10.2.7 DATA_TRANSFER_CSD_HSCSD.frm............................111
10.2.8 CSD_CONFIGURATION.frm...........................................114
10.2.9 PHONEBOOK.frm.......................................... ..................119
10.2.10 PHONEBOOK_NAME_SEARCH.frm.............................121
10.2.11 PHONEBOOK_POSITION_SEARCH.frm......................122
10.2.12 PHONEBOOK_SEARCH_RESULTS.frm.......................124
10.2.13 PHONEBOOK_WRITE.frm.............................................125
10.2.14 SMS.frm........................................... .................................127
10.2.15 SMS_CONFIGURATION.frm.........................................128
10.2.16 READ_SMS.frm.......................................... .....................134
10.2.17 WRITE_SMS.frm........................................... ..................136
10.2.18 SEND_SMS.frm........................................... ....................137
10.2.19 NEW_SMS_NOTIFY.frm.................................................139
10.2.20 CALL_NOTIFY.frm................................................. 140
10.2.21 MODULE_SIM_IDENTIFICATION.frm.........................141
10.2.22 TRAMAS_ENV_RECEPC.frm.........................................142
MDULOS ESTANDAR
10.2.23 VARIABLES.bas........................................... ...................143
10.2.24 PROCEDURES.bas........................................... ...............144
10.2.25 TREAT_RESPONSES.bas............................................... 153
10.2.26 Dxb.bas.................................... ............ ................ ...........161
10.2.27 sNi.bas........................................ ............ .............. ..........162
10.2.28 SOUNDS.bas............................... .....................................163

11. ANEXOS................................................................................................164
12. BIBLIOGRAFA..................................................................................166
6

Comunicacin Punto a Punto Va Mdem GSM

Presentacin-Objetivos

2. PRESENTACIN-OBJETIVOS

Comunicacin Punto a Punto Va Mdem GSM

Presentacin-Objetivos

PRESENTACIN - OBJETIVOS
El objetivo del presente proyecto es realizar una comunicacin entre dos terminales,
los cuales pueden ser o bien dos dispositivos mdem de tipo GSM, o entre un dispositivo
mvil (telfono mvil) y un mdem GSM.
Un mdem GSM es un dispositivo que se conecta a la red GSM para enviar y / o
recibir dicha informacin. Considerando que la red GSM es una red totalmente digital, no
es necesaria la utilizacin del mdem (que realizan una conversin analgico-digital
MOdulador-DEModulador), sino que se necesita slo un adaptador especial que adapta el
flujo de datos proveniente del PC, al flujo de datos utilizado en el enlace digital entre el
telfono y la red GSM.
Los mdem GSM empleados en este estudio son modelos GM29 de la compaa
SONY-ERICSSON, que han estado suministrados por el CITEE (Centre dInnovaci
Tecnolgica en Enginyeria Electrnica de Tarragona).
Se estudiaran diferentes tipos de comunicacin mediante la red GSM y se
implementaran dos de ellos: el mensaje de texto SMS (short message service) y la
transferencia de datos CSD (Circuit Switched Data).
Denotar que no nos adentraremos en el formato ni en el sistema de comunicacin
de la red GSM, sino que profundizaremo s en la comunicacin PC-MDEM, realizando
una interficie de usuario que gobierne dicho mdem. Todo ello con el propsito de
conseguir la comunicacin con otro terminal.
La comunicacin PC-MDEM se establece a travs del puerto serie, el cual ser
objeto de anlisis en cuanto a la forma de actuacin y estudio de su programacin y acceso
para controlar el dispositivo conectado a l.
El GM29 trabaja mediante un conjunto de instrucciones denominados comandos
AT (HAYES). El envo de estos comandos y la recepcin y posterior tratamiento de las
respuestas son la base de este proyecto.
Todo ello se realizar mediante la programacin en lenguaje VISUAL BASIC.

Comunicacin Punto a Punto Va Mdem GSM

Sistemas de Comunicacin

3. SISTEMAS DE COMUNICACIN

Comunicacin Punto a Punto Va Mdem GSM

Sistemas de Comunicacin

SISTEMAS DE COMUNICACIN
3.1 Introduccin
A continuacin presentaremos los diferentes tipos de comunicacin existentes, as
como una breve descripcin de sus caractersticas, funcionamiento y principales
aplicaciones de cada una de ellos.
Hablaremos de los mensajes de texto (SMS), de las llamadas de voz, del envo de
faxes, y finalmente de la trasferencia de datos y conexin a Internet (CSD-HSCSD,
GRPS).

3.2 SMS (Mensajes cortos de texto)


SMS (Servicio de mensajes cortos) es un sistema para enviar y recibir mensajes de
texto para y desde telfonos mviles (o dispositivos GSM conectados a algn procesador).
El SMS fue creado como una parte del estndar GSM fase 1 en 1992.

3.2.1 Caractersticas
Hay varias caractersticas nicas del servicio de mensajes cortos (SMS), segn lo
definido dentro del estndar digital de telefona mvil GSM:

Un mensaje corto puede tener una longitud de hasta 160 caracteres. stos pueden
ser palabras, nmeros o una combinacin alfanumrica. Los mensajes cortos
basados en No-texto (por ejemplo, en formato binario) tambin se utilizan.

Los mensajes cortos no se envan directamente del remitente al receptor, sino que
se envan a travs de un centro de SMS. Cada red de telefona mvil que utiliza
SMS tiene uno o ms centros de mensajera para manejar los mensajes cortos.

Los mensajes cortos se pueden enviar y recibir simultneamente a la voz, datos y


llamadas del fax. Esto es posible porque mientras que stas asume n el control de un
canal de radio dedicado durante la llamada, los mensajes cortos viajan sobre un
canal dedicado a sealizacin independiente de los de trfico.

3.2.2 Principales aplicaciones


Las principales aplicaciones basadas en SMS son: Comunicacin entre usuarios,
Notificaciones del buzn de voz, Fax, E- mail, Servicios de Informacin, Comercio
electrnico, Supervisin remota,...

10

Comunicacin Punto a Punto Va Mdem GSM

Sistemas de Comunicacin

3.3 Llamadas de VOZ


Sistema de comunicacin basado en la transferencia digital de paquetes de
informacin en forma to voz a travs de la red inalmbrica. Esta comunicacin se realiza a
travs de ondas hertzianas y a una frecuencia de 900 y 1800 MHz dependiendo del sistema.

3.3.1 Caractersticas
En una comunicacin por voz es necesario una estacin mvil (telfono m vil,
mdem GSM, ...) que adems de permitir el acceso a la red a travs de la interfaz de radio
con funciones de procesado de seales y de radio frecuencia, debe ofrecer tambin una
interfaz al usuario humano (un micrfono, altavoz, display y tarjeta, para la gestin de las
llamadas de voz). Dicha tarjeta (SIM) nos permite el acceso a una operadora que nos preste
el servicio de la conexin.
Para efectuar una comunicacin, una red integrada de estaciones base debe
proporcionar la suficiente cobertura de radio a todas las estaciones mviles. Las estaciones
base, a su vez, deben estar conectadas a un eje central llamado Centro de Conmutacin
Mvil (MSC). El MSC proporciona conectividad entre la Red Telefnica de Conmutacin
Pblica (PSTN) y las numerosas estaciones base, y por ltimo, entre todos los abonados
mviles de un sistema. La PSTN forma la red de telecomunicaciones global que
interconecta los centros de conmutacin de telefona convencional (terrestres), llamados
oficinas centrales, con los MSCs de todo el mundo.

3.3.2 Principales aplicaciones


Comunicacin entre usuarios, comunicaciones rpidas directas y fluidas, en las que
es importante el contacto con el interlocutor, Servicios de Informacin, Centralitas,
Atencin al cliente, ...

3.4 FACSIMIL
Su abreviatura es el FAX.
Sistema para el envo y recepcin de una pgina impresa entre lugares distantes.

3.4.1 Caractersticas
Bsicamente, estos dispositivos digitalizan una o ms hojas de papel, las convierten
en paquetes de datos que se transmiten a travs de una lnea de comunicacin (Internet,
BBS, GSM, cualquier red, etc...) a otro aparato de fax, e imprimen dicha informacin en un
papel para que el receptor del mensaje pueda leerlo. Las mquinas de fax se componen de
un escner, que digitaliza la pgina de papel, un mdem, que transmite la informacin, y
una impresora, que devuelve una copia en papel del documento recibido.

11

Comunicacin Punto a Punto Va Mdem GSM

Sistemas de Comunicacin

Los mdems GSM para computadora son capaces de enviar y recibir facsmiles.
Los datos a enviar provienen de imgenes o textos almacenados en la computadora, y la
impresin de los documentos recibidos es opcional, ya que los podemos ver en pantalla. La
utilizacin de esta caracterstica requiere un software adicional especfico.

3.5 HSCSD (Datos por Conmutacin de Circuitos a Alta Velocidad)


El HSCSD (High Speed Circuit Switched Data) es una especificacin de la Fase 2+
de GSM, homologada por el ETSI (European Stndard Institute) en febrero de 1997 y
comercializada a partir de 1999.

3.5.1 Caractersticas
HSCSD es una plataforma multi-canal para transmisin de datos a alta velocidad
mediante circuitos conmutados GSM. Elimina la barrera de las redes de bajo rendimiento,
proporcionando a los usuarios el mismo rendimiento, o incluso mayor, que las conexiones
fijas. HSCSD puede ofrecer transmisin de datos a una velocidad de hasta 57,6 kbit/s o
superior, cuando se combina con productos de compresin y filtro (combinando varios
canales de 9,6 Kbit/s o 14,4 Kbit/s.)
Con esta tecnologa el nmero de canales usados en cada instante por una
comunicacin de datos es variable dependiendo de la saturacin de la clula en la que est
operando el telfono mvil.

3.5.2 Principales aplicaciones


Las aplicaciones que se pueden beneficiar del HSCSD son: E-mail, Fax, acceso a
LAN, transferencia de fichero, videoconferencia, seguridad, difusin TV, navegacin por
Internet...

3.5.3 Ventajas y desventajas


La mayor ventaja del HSCSD, es que la inversin para ser implantado es mnima,
ya que bsicamente se trata de una modificacin software, unos mnimos cambios
hardware y ninguna dotacin fsica. As pues, aunque algunos operadores y fabricantes se
han volcando directamente con la tecnologa GPRS, el HSCSD permite a aquellos que lo
implanten en su red adelantarse en la oferta de servicios avanzados con una inversin que
no va a perder rentabilidad a largo plazo, ya que muchas de las aplicaciones GPRS, se
inician con el HSCSD; algunas se trasladarn al sistema de transmisin por paquetes, pero
otras seguirn utilizando el HSCSD, ms adecuado a aquellas funciones que necesitan una
velocidad constante y un mnimo retraso, como puede ser la transmisin de imgenes de
vdeo o imgenes en tiempo real.
La mayor desventaja del HSCSD es el coste para los usuarios, el uso de 4 canales
significa que el coste es 4 veces superior al de una llamada de voz (uso de un solo canal).

12

Comunicacin Punto a Punto Va Mdem GSM

Sistemas de Comunicacin

3.6 GPRS (Servicio General de Paquetes por Radio)


A mediados de la dcada de los 90, el ETSI (European Telecommunication
Standard Institute), tom la decisin de establecer un nuevo estndar basado en la interfaz
aire del sistema GSM, para la transmisin de paquetes va radio denominado GPRS
(General Packet Radio System), tambin conocido como GSM-IP ya que permite una
adecuada integracin de los protocolos de Internet TCT/IP con la red mvil instalada GSM
La tecnologa GPRS se basa en la conmutacin de paquetes realizando la
transmisin sobre la red GSM, que bsicamente es la tecnologa de conmutacin de
circuitos. En vez de enviar una corriente continua de datos a travs de una conexin
permanente, la conmutacin de paquetes slo utiliza la red cuando hay datos que enviar. El
uso de GPRS permite a los usuarios enviar y recibir datos a una velocidad mxima de
115kbit./s. La tecnologa GPRS est particularmente indicada para enviar y recibir
pequeos y grandes volmenes de datos, como e- mail y buscador de web.

3.6.1 Caractersticas de Funcionamiento


Cuando un usuario transmite datos, stos son encapsulados en paquetes cortos, en
cuya cabecera se indican las direcciones origen y destino; cada uno de estos paquetes
puede seguir rutas diferentes a travs de la red hasta llegar a su destino, as mismo, los
paquetes originados por distintos usuarios pueden ser intercalados, de esta forma se
comparte la capacidad de transmisin. Los paquetes no son enviados a intervalos de
tiempo, sino que cuando se necesita, se asigna la capacidad de la red, siendo liberada
cuando no es necesaria. GPRS utiliza los recursos radio solamente cuando hay datos que
enviar o recibir, adaptndose as perfectamente a la muy intermitente naturaleza de las
aplicaciones de datos.
Mientras el sistema GSM fue originariamente diseado con un especial nfasis en
las sesiones de voz, el principal objetivo de GPRS es ofrecer un acceso a redes de datos
estndar, como TCT/IP.
El actual sistema GSM opera en un modo de transmisin de circuitos conmutados
"extremo a extremo" (CSD-HSCSD), en el cual los circuitos son reservados a lo largo del
sistema para el uso de una sola comunicacin incluso cuando no se transmiten datos.
El GPRS ofrece una transmisin de paquetes "enlace a enlace" a lo largo de la red
en distintas fases. Por ejemplo, una vez que el paquete de datos ha sido transmitido a travs
de la interfaz area, los recursos radio pueden ser liberados para el uso por parte de otros
usuarios. Despus de esto, el paquete viaja hacia su destino a travs de la red troncal
GPRS, y posiblemente otra serie de redes incluyendo, por ejemplo, Internet.
El uso de los enlaces de este modo conserva la capacidad de red y la interfaz.
Adems permite a los operadores ofrecer un servicio a mejor precio, ya que la facturacin
se puede basar en la cantidad de datos enviados o recibidos.
3.6.2 Principales aplicaciones
Ejemplos de estas aplicaciones son: Correo electrnico, servicios de chat,
informacin visual y textual, mensajes cortos optimizados, transmisin de imgenes fijas,

13

Comunicacin Punto a Punto Va Mdem GSM

Sistemas de Comunicacin

transmisin de imgenes en movimiento, navegacin web, teletrabajo, servicios de audio,


ubicacin de vehculos, acceso remoto a redes locales, transferenc ia de ficheros...

3.7 Conclusiones
Conocidos los diferentes sistemas de comunicacin posibles a travs de la red
GSM, en este proyecto se implementaran el sistema de envo de mensajes cortos (SMS) y
la transferencia de datos CSD-HSCSD (se diferencian en el nmero de slots utilizados, una
es ms rpida que la otra y por tanto ms cara), como comunicaciones significativas de las
anteriormente estudiadas.
La mensajera en formato SMS es un sistema consolidado y en constante auge, dada
su versatilidad y bajo coste, vlido para infinidad de aplicaciones y consideramos que una
comunicacin de este tipo es un modo muy representativo de nuestros tiempos.
La transferencia de datos va CSD nos permitir comunicarnos con otro mdem a
travs de la red inalmbrica desde cualquier punto donde alcance la cobertura suministrada
por la operadora, sin necesidad de la conexin a un sistema fijo. De este modo una
comunicacin de este tipo nos puede ser vlida para aquellos lugares a donde no alcance la
red fija convencional y sea necesario un constante contacto e intercambio de informacin.
Aunque, como hemos estudiado, el sistema GRPS gana usuarios en cuanto a
aplicaciones se implementan y los operadores de red lo potencian dado su optimizacin de
los recursos, su fundamento y su base radican en la transferencia CSD, y por ese motivo
optamos por llevar a cabo el caso prctico de esta ltima.

De este modo, debemos gobernar el mdem y enviarle una serie de instrucciones a


travs del puerto serie para conseguir nuestro propsito y que establezca la comunicacin
deseada con otro terminal.
Esas instrucciones son los denominados comandos HAYES o AT y los presentamos
en el captulo siguiente.

14

Comunicacin Punto a Punto Va Mdem GSM

4. COMANDOS AT

15

Comandos AT

Comunicacin Punto a Punto Va Mdem GSM

Comandos AT

4. COMANDOS AT
4.1 Introduccin
El control del mdem GSM a travs de la interfaz de usuario creada, se basa en el
uso de instrucciones o comandos denominados Hayes o AT, de los que exponemos
brevemente algunas referencias.
Hayes es el nombre de una empresa que en los orgenes de la comunicacin por
mdem defini una serie de comandos u rdenes para que el software de comunicaciones
pudiera comunicarse con el mdem, pudiendo controlar este ltimo.
Estos comandos tuvieron tanto xito que se convirtieron en el virtual estndar de
comunicaciones, y los mdems que los comprenden (el 99,99% de los mdems modernos)
se denominan compatibles Hayes.
Todos los comandos de este protocolo comienzan por AT y acaban por CR (aunque
este ltimo carcter es configurable).

4.2 Tipos de Comandos AT


Existen dos tipos principales de comandos :

Comandos que ejecutan acciones inmediatas (ATD marcacin, ATA contestacin o


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

4.3 Modos De Funcionamiento Del Mdem


El mdem est en modo comandos (command mode) si ste responde a los
comandos que enva el ordenador. En este modo es posible configurar o realizar diversas
operaciones, consulta, lectura o de marcado y conexin.
Cuando el mdem se conecta con otro terminal pasa al modo en lnea (online data
mode). En este modo cualquier informacin que reciba del puerto serie del ordenador ser
enviada al terminal distante. El mdem no procesa la informacin y simplemente la
trasmite a travs de la lnea de comunicacin.
Para salir del modo en lnea y pasar de nuevo al modo comandos se enva al mdem
+++(secuencia de escape).

16

Comunicacin Punto a Punto Va Mdem GSM

Comandos AT

4.4 Listado de comandos utilizados


A continuacin presentamos un listado de comandos AT utilizados en este proyecto
as como una breve explicacin de las instrucciones que ejecuta el mdem al recibir dichos
comandos.
El listado completo de comandos AT soportados por el GM29 de Sony-Ericsson lo
podremos encontrar en el GM29 Integrators Manual R1B ubicado en el Anexo.

4.4.1 CONTROL ERRORES

AT+CMEE (Mobile Equipment Error). Este comando nos permite configurar el


formato de la respuesta en caso de que se produzca algn error. Dependiendo del
parmetro que le pasemos, la respuesta sera ERROR, ERROR + un cdigo
numrico, o, ERROR + descripcin del error. Empleamos este ltimo modo para
poder concretar ms que tipo de error se ha producido en el envo y recepcin de
cada uno de los comandos.

4.4.2 CODIGOS DE ACCESO

AT+CPIN (PIN Control). Dispone de 2 metodologas de uso.


a) mediante la interrogacin AT+CPIN? podemos decretar el estado del mdem en
cuanto a su control de acceso, si es necesario un primer cdigo PIN (personal
identification number), si por el contrario la tarjeta SIM esta anclada y es
necesario un segundo cdigo denominado PUK (personal unlock code) e
incluso si es necesario la introduccin de la tarjeta en el mdulo.
b) Para introducir los cdigos anteriormente comentados (PIN o PUK), debemos
enviar el comando AT+CPIN y el cdigo requerido. En este caso nos informar
si el cdigo es correcto (y el terminal se encuentra preparado), si es incorrecto,
si es necesario el cdigo PUK o si la tarjeta resta bloqueada por una
introduccin repetitiva incorrecta de los cdigos.

4.4.3 MENSAJES SMS


Podemos dividir los comandos en 2 tipos, segn su funcionalidad:
a) configuracin del sistema de envo o recepcin

AT+CMGF (Message Format). Configura el tipo de mensajes que se van a


usar. Existen dos tipos, TEXTO o PDU (modo binario).

AT+CPMS (Preferred Message Storage). Selecciona los valores de las 3


memorias existentes. La primera es la que permite la lectura, borrado y
reenviado de mensajes, la segunda es la que contiene los mensajes escritos
pero no enviados, mientras que la tercera es donde se almacenan los nuevos
17

Comunicacin Punto a Punto Va Mdem GSM

Comandos AT

mensajes recibidos. Estas memorias pueden tomar los valores de mdem o


de tarjeta SIM.

AT+CSCA (Service Centre Address). Establece el nmero del centro de


servicio. Este nmero, correspondiente al servidor, es especfico para cada
operadora y es destinatario intermedio entre el emisor y el receptor.

AT+CSMP (Set Text Mode Parameters). Entre otros, configura el tiempo


mximo de permanencia de un mensaje en el centro de servicio antes de que
sea posible el envo al destinatario final.

+CNMI (New Message Indications to TE). Configura la metodologa de


notificacin de un nuevo mensaje recibido.

b) ejecucin de acciones

AT+CMGR (Read Message). Lee un mensaje almacenado en la posicin


pasada como parmetro.

AT+CMGD (Delete Message). Borra un mensaje almacenado en la posicin


pasada como parmetro.

AT+CMGW (Write Message to Memory). Memoriza un mensaje (el


contenido del cual es pasado como parmetro) en la primera posicin de
memoria libre para un posterior envo, lectura, modificacin, etc.

AT+CMGS (Send Message). Enva un mensaje, cuyo contenido debemos


escribir, a un destinatario especificado.

AT+CMSS (Send From Storage). Enva un mensaje almacenado en una


determinada posicin de memoria.

4.4.4 TRANSFERENCIA DE DATOS CSD-HSCSD


Se dividen tambin en 2 tipos, segn su funcionalidad:
a) configuracin del sistema de envo o recepcin

ATP (Select Pulse Dialling). Selecciona el modo de llamadas por pulsos.

ATT (Select Tone Dialling). Selecciona el modo de llamadas por tonos.

ATS0 (Automatic Answer Control). Controla el formato de respuesta ante


una llamada entrante. ste puede ser manual o automtico, especificando
previamente el nmero de RINGS que deben acontecer antes de la
aceptacin de la llamada.

18

Comunicacin Punto a Punto Va Mdem GSM

Comandos AT

AT+CBST (Select Bearer Service Type). Establece entre otros aspectos, la


velocidad de conexin de la transferencia de datos. Podemos elegir un valor
especfico o configurarlo de modo automtico, ya que permite una seleccin
ptima en cada instante (aumentar la velocidad cuando sea posible).

ATS2 (Escape Sequence Character). Configura el carcter de la secuencia


de escape. Para pasar de modo en lnea a modo comando, debemos enviar al
mdem la secuencia +++AT (donde + es el carcter establecido por este
comando)

b) ejecucin de acciones

ATD (Dial). Establece la comunicacin con un terminal remoto. Se debe


adjuntar el nmero del destinatario. La conexin puede ser de datos o de
voz, aunque nosotros solo implementaremos la de datos.

ATA (Answer). Mediante este comando aceptamos una llamada entrante.

ATH (Hang up). Se finaliza una llamada en curso.

AT+CHUP. Se rechaza una llamada entrante.

ATO (Return to Online Data Mode). Pasamos del modo comando al modo
en lnea.

4.4.5 LECTURA DE LA AGENDA Y DEL REGISTRO LLAMADAS

AT+CPBS (Phone Storage). Se establece el registro al que queremos acceder. Si se


trata de la agenda telefnica podemos escoger entre la agenda guardada en el
mdem o en la tarjeta SIM. Si queremos acceder al registro de llamadas
seleccionaremos entre DC, RC, MC (llamadas enviadas, recibidas o no contestadas
respectivamente).

AT+CPBF (Phonebook Find).Se realiza una bsqueda por nombre de la agenda


seleccionada en el comando anterior.

AT+CPBR (Phonebook Read). Permite realizar la lectura tanto del registro de


llamadas como de la agenda (dependiendo de CPBS). Se especifica una posicin o
un rango.

AT+CPBW (Phonebook Write). Se introduce una nueva entrada en la agenda (se


aportan los campos posicin, nmero y nombre)

4.4.6 FECHA Y HORA

AT+CCLK (Set Clock and Date). Establece la fecha y la hora actual.

19

Comunicacin Punto a Punto Va Mdem GSM

Comandos AT

4.4.7 IDENTIFICACIN
Muestra informacin referente al mdem y a la tarjeta SIM.

AT+CGMI (Read MS Manufacturer Identification). Fabricante.

AT+CGMM (Read MS Model Identification). Modelo.

AT+CGMR (Read MS Revision Identification).Revisin.

AT+CGSN (Read MS Product Serial Number Identification). Nmero de serie.

AT+CIMI (Subscriber Identification). Nmero de serie de la tarjeta.

20

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

5. PROGRAMACIN DEL PUERTO


SERIE RS-232

21

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

PROGRAMACIN DEL PUERTO SERIE RS-232


5.1 Introduccin
El canal serie del PC es uno de los recursos ms comunes para la conexin de
perifricos, como pueden ser dispositivos de puntero (mouse) o de comunicacin (mdem,
cables de conexin entre PCs). Esta compuesto por un integrado del tipo 16550 en
modelos actuales, mientras que anteriormente se utilizaba el UART8250.
Un PC convencional suele disponer de 4 puertos COM, normalmente 2 internos
integrados en la placa base y 2 ms externos para el uso del usuario.
El acceso a cada uno de ellos se realiza a travs de sus direcciones BASE
COM1=3F8, COM2=2F8, COM3=3E8 , COM4=2E8.

5.2 Configuracin del puerto serie


Cada uno de los puertos COM tiene 11 registros a comentar, que son a los que
debemos acceder para realizar las acciones requeridas.
BASE+0: tiene 3 registros
Reciver Buffer Register (RBR): Registro buffer de recepcin. Su funcin es la de
recibir un dato del puerto.
Divisor Latch LSB (DLL): Divisor de Velocidad, parte baja.
Transmitter Holding Register (THR): Registro de retencin de transmisin. Su
funcin es la de transmitir un dato por el puerto.
BASE+1: tiene 2 registros
Divisor latch MSB (DLM): Divisor de velocidad, parte alta.
Interrupt Enable Register (IER): Registro de habilitacin de interrupciones.
BASE +2:
Interrupt Identification Register (IIR): Registro de identificacin de interrupciones.
Controla la prioridad de las mismas.
BASE +3:
Line Control Register (LCR): Registro de control de lnea. Controla los parmetros
de configuracin del canal serie (bits de datos, bits de stop, tipo de paridad...).
BASE +4:
Modem Control Register (MCR): Registro de control del mdem. Activa las seales
del mismo.
BASE +5:
Line Status Register (LSR): Registro de estado de la lnea. Muestra el estado del
canal serie (errores, etc).

22

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

BASE +6:
Modem Status Register (MSR): Registro de estado del mdem. Muestra el estado
del mismo.
BASE +7:
Scratch Register (SCR) :Registro residual.

5.3 Acceso al puerto serie mediante el control MsComm


Ahora bien, dado que programaremos la interfaz de usuario en VISUAL BASIC,
encontramos un control personalizado denominado MSCOMM que nos permite
comunicarnos con el puerto serie para poder transmitir y recibir datos a travs de l.
Este control nos ayudar en gran medida a paliar la ardua tarea de la comunicacin
de nuestra aplicacin con el puerto serie (con tal de configurarlo y permitir el acceso al
puerto) en el caso de que tuviramos que acceder manualmente a cada uno de los registros
que lo componen. Por tanto trabajaremos con l con el fin de simplificar nuestra labor.

Figura 0. Control MsComm

A continuacin destacaremos las propiedades mas importantes de este control, que


son las que nos permiten interactuar con el mdem conectado al puerto serie.

5.3.1 Propiedades De Configuracin Previa A Su Uso


Debemos configurar el puerto serie en tiempo de diseo. Este se corresponde al
modo de funcionamiento cuando se crea una aplicacin. En tiempo de diseo, se generan
los componentes de la aplicacin y se establecen sus propiedades (aun existiendo la opcin
de ser modificados por el usuario una vez iniciado el programa, consideramos que es en
tiempo de diseo porque an no hemos establecido la conexin con el puerto serie).

CommPort
Indica el nmero del puerto serie usado. Cambiando esa propiedad podemos
cambiar el puerto de comunicacin que vamos a usar.
Su valor depender del puerto al que conectemos el dispositivo GM29.

Settings
Indica la velocidad, paridad, nmero de bits y bits de stop (parada) que se van a
usar en la comunicacin.

23

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

*Los valores posibles para velocidad son (en baudios) :


50 100 110 300 600 1200 2400 4800 9600 14400

19200 y 28800

*Los valores posibles para paridad son :


N - No enva bit de paridad ni hace comprobacin de paridad en la recepcin.
O - Enva y comprueba paridad, con el criterio de paridad IMPAR
E - Enva y comprueba paridad, con criterio de paridad PAR
*Los valores para el parmetro Bits de Informacin pueden ser :
7 - Se envan / reciben 7 bits por trama de informacin.
8 - Se envan / reciben 8 bits por trama de informacin
5 - Se envan / reciben 5 bits por trama de informacin.
*Los valores para el parmetro Bits de parada pueden ser :
1 - Se enva un bit de parada
2 - Se envan 2 bits de parada
Tanto el puerto serie al cual conectemos el mdem como la velocidad, paridad,
nmero de bits de informacin y nmero de bits de stop (parada) pueden ser configurados
por el usuario mediante unas listas desplegables que aparecern al iniciarse nuestra
aplicacin.
De todos modos, las recomendaciones del fabricante SONY ERICSSON, las cuales
restan reflejadas en el GM29 Integrators manual (anexo2), son las que presentamos a
continuacin:
Velocidad =9600 baudios, paridad = ninguna, Bits de Informacin = 8, Bits de parada =1

Handshaking
Especifica el mtodo de control sobre el flujo de informacin. En una
comunicacin serie se necesita conocer si el puerto puede enviar informacin (necesita
saber si el mdem est preparado para recibirla) y necesita indicarle al mdem que l est
preparado para recibir informacin. Establece las condiciones de control que uno va a tener
sobre otro.
El Control de Flujo puede hacerse de dos formas :
mediante las seales auxiliares del puerto (RTS, CTS, DSR, DTR), que son cables
adicionales que tendrn una tensin positiva respecto a los 0V del equipo si esa
seal est activada, o una tensin negativa si no lo est.

mediante seales especiales que se envan por los dos cables que transportan la
informacin. Mediante estas dos seales podemos controlar que el ordenador enve
informacin o deje de enviarla. De igual forma, podemos indicarle al mdem que
enve o no enve. Estas seales especiales se denominan X-ON y X-OFF.

La propiedad Handshaking controla la forma de realizar este proceso. Puede tomar los
siguientes valores :
0 - No existe Control de Flujo
1 - Control de Flujo mediante XON - XOFF

24

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

2 - Control de Flujo mediante Request To Send (RTS) y Clear To Send (CTS)


3 - Control de Flujo mediante XON - XOFF y RTS - CTS
Trabajaremos sin control de flujo alguno, ya que para gobernar un mdem de este
tipo la trasferencia de datos no va a ser muy grande y por tanto no necesitamos de un
protocolo que nos gestione ese trfico. Si la aplicacin fuese mayor s que deberamos
implementar algn tipo de control de flujo.

InBufferSize
Mediante esta propiedad establecemos el tamao del Buffer (almacn de datos) de
entrada. Este Buffer sirve para poder recibir datos sin que tenga que intervenir la
aplicacin continuamente para controlar el puerto de entrada.
Configuramos el buffer de entrada a 1024 caracteres. Valor suficiente para nuestra
aplicacin

OutBufferSize
Mediante esta propiedad controlamos el tamao del Buffer de salida.
El tamao de los Buffers depende de la aplicacin y de la velocidad de
comunicacin. Tanto ms grande cunta mayor sea la velocidad de transferencia de datos.
Configuramos el buffer de salida para 512 caract eres de capacidad. Valor
suficiente para nuestra aplicacin.

RThreshold, SThreshold
Estas dos propiedades especifican el nmero de caracteres que deben estar
presentes en los Buffers de Recepcin y Transmisin respectivamente, para que se
produzca el evento OnComm relativo a recepcin y transmisin de caracteres. (Eventos
EvReceive y EvSend)
Dado que la nuestra es una pequea aplicacin forzaremos que se genere el evento
a cada carcter que reciba o enve el puerto serie. De este modo, aunque se ejecutar un
procedimiento asociado a l cada vez que se genere dicho evento (lo que har perder
tiempo a la aplicacin, impidindole realizar otras funciones) hemos comprobado que no
perjudica a la evolucin normal del programa y as tenemos un control ms fiable de las
transferencias.

InputLen
Por defecto, cuando se lee el Buffer de recepcin, se leen todos los caracteres,
quedando el Buffer vaco. Si se le asigna a esta propiedad un valor distinto de 0, cada vez
que leamos el Buffer de recepcin leer un nmero de caracteres igual a esa cantidad,
permaneciendo los caracteres restantes en el Buffer a la espera de una nueva lectura.

25

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

Cada vez que se genere el evento de recepcin leeremos la totalidad del buffer,
dado que la transferencia va a ser discontinua y de tamaos variables cabra la
posibilidad de no leer caracteres del buffer si pusisemos un valor determinado. De este
modo nos aseguramos la lectura de todos los caracteres a medida los vayamos recibiendo.

ParityReplace
Si la comunicacin se realiza con bit de paridad (Par o Impar), en recepcin se
comprueba byte a byte la recepcin de la paridad correcta. Si se recibe un Byte que no
tiene paridad correcta, lo ms probable es que ese Byte (carcter) se haya recibido
defectuoso. Esta propiedad nos permite sustituir un carcter que ha llegado con bit de
paridad incorrecto por otro carcter ( ? predeterminado) o por una cadena de caracteres
(Error, por ejemplo).
Dado que no usaremos paridad alguna, este apartado podemos omitirlo.

RTSEnable
Activa (Pone a 1) la seal RTS (Request To Send - Peticin de envo). Esta seal
debe ponerse a 1 para indicar al mdem (o al equipo que va a recibir nuestra
comunicacin) que deseamos enviar datos. Debe estar activada durante toda la transmisin
de datos.

DTREnable
Activa (Pone a 1) la salida DTR (Data Terminal Ready - Terminal de Datos
Listo). Esta seal se emplea para decirle al mdem que el terminal (Ordenador) est
preparado para recibir datos.

Estas 2 seales (RTSEnable, DTREnable) las tendremos siempre activas ya que al


no tener control de flujo alguno que las gobierne nos interesa que el mdem siempre este
dispuesto tanto para enviar como para recibir informacin.

5.3.2 Propiedades Propias Del Tiempo De Ejecucin


El tiempo de ejecucin es el perodo durante el cual se ejecuta una aplicacin.
Durante este tiempo se puede interactuar con una aplicacin.

PortOpen
Abre el puerto de comunicacin. Puede tener los valores True (para abrirlo) y False
(para cerrarlo).
(Mscomm1.PortOpen = True / False)

26

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

Output
Enva caracteres al Buffer de salida.

(Mscomm1.Output = texto o variable)

Input
Lee el Buffer de recepcin. Se leer un nmero de caracteres igual al valor de la
propiedad InputLen. Cuando la propiedad InputLen tiene el valor 0, el Buffer se lee
completo.

CommEvent
Devuelve el evento ms reciente que ha ocurrido para generar el evento general
OnComm
(MSComm.CommEvent)

5.3.3 Eventos Del MsComm


El MsComm tiene varios eventos, pero un solo Procedimiento: el Procedimiento
OnComm. Este procedimiento se ejecuta cada vez que se produce alguno de los eventos
del MSComm.
Esto quiere decir que para escribir el cdigo apropiado en el procedimiento del
MSComm ser necesario analizar qu evento se ha producido y tratar cada uno de ellos.
Para averiguar qu evento se ha producido puede hacerse consultando el valor de la
propiedad CommEvent.
Se ejecutar el Procedimiento OnComm cuando ocurra alguno de los siguientes eventos :
ComEvRing
Cambio en la lnea de deteccin de llamada (Ring). Este evento se produce cuando
hay un cambio en la lnea Ring (Deteccin de llamada en el mdem).
Destacar que la UART del PC utilizado no soporta esta seal con lo que se ha
tenido que contrastar la llegada de esta seal mediante un polling cada vez que se reciba
un carcter por el puerto serie.

ComEvReceive
Cuando se recibe un nmero igual o mayor de caracteres que el indicado en la
Propiedad Rthreshold
En el momento que recibimos un carcter, lo extraemos del puerto serie y lo
introducimos en una variable para su posterior uso y / o tratamiento.

27

Comunicacin Punto a Punto Va Mdem GSM

Programacin del Puerto Serie

ComEvSend
Cuando quedan en el bfer de transmisin menos caracteres que los indicados en la
Propiedad SThreshold
Se realiza una confirmacin de que el envo ha sido correcto. De este modo
tenemos la certeza de que el envo ha sido satisfactorio.

comEventBreak
Se ha recibido una seal de interrupcin. (Break)

ComEventOverrun
Se sobrepas la capacidad del Buffer de entrada sin haber ledo todos los caracteres.
Los caracteres no ledos se han perdido. Debemos aprovechar este evento para solicitar al
interlocutor una repeticin de los datos perdidos.

ComEventRxOver
Desbordamiento del bfer de recepcin. No hay espacio para ms datos en el bfer
de recepcin.

ComEventRxParity
Error de paridad. El hardware ha detectado un error de paridad.
No tratamos esta circunstancia ya que no utilizamos paridad

ComEventTxFull
Bfer de transmisin lleno. El bfer de transmisin estaba lleno cuando se ha
intentado agregar un carcter a la cola de transmisin.

Para todos estos eventos considerados de error o alerta, debemos realizar un


tratamiento similar que consistir en presentar un mensaje de aviso para posteriormente
tratar dicho evento.
Estos eventos de error estn relacionados con el buffer de transmisin o recepcin
y ser necesario realizar una nueva transferencia para recuperar la informacin o
paralizar las restantes con tal de vaciar el contenido de los buffer en el caso de que estos
resulten completos.

28

Comunicacin Punto a Punto Va Mdem GSM

Diseo de la Aplicacin con VB

6. DISEO DE LA APLICACIN CON


VISUAL BASIC 6.0

29

Comunicacin Punto a Punto Va Mdem GSM

Diseo de la Aplicacin con VB

DISEO DE LA APLICACIN CON VISUAL BASIC


6.1 Introduccin
Una vez contemplados los sistema de comunicacin que queremos implementar, las
instrucciones necesarias para ejecutar dichos procesos y la metodologa de comunicacin
con el propio mdem a travs del puerto serie, realizaremos una aplicacin que nos
permita, mediante una interfaz clara y sencilla, el envo de dichos comandos al mdem
para que ste, finalmente, nos permita establecer la comunicacin deseada a travs de la
red GSM.
Para construir dicha aplicacin, utilizaremos el lenguaje de programacin Visual
Basic en su versin 6.0. Se trata de un producto con una interfaz grfica de usuario que
sirve para crear aplicaciones para Windows basado en el lenguaje Basic y en la
programacin orientada a objetos.
Para crear una aplicacin se crean ventanas y sobre ellas se dibujan objetos
llamados controles (etiquetas, botones, cajas de texto, ...) y a continuacin se escribe el
cdigo fuente relacionado con cada objeto. Esto es, cada objeto est ligado a un cdigo que
permanece inactivo hasta que se d el evento que lo activa (por ejemplo, un clic del ratn).

6.2 Estructura de programacin


La programacin en visual Basic se fundamenta en mdulos. En ellos se almacena
el cdigo. Hay tres tipos de mdulos: de formulario, estndar y de clase.
En este proyecto se han utilizado los dos primeros y procedemos a su explicacin.

6.2.1 Mdulos de formulario


Los mdulos de formulario (extensin de nombre de archivo .frm) son la base de
las aplicaciones de Visual Basic. Pueden contener procedimientos que controlen eventos,
procedimientos generales y declaraciones a nivel de formulario de variables, constantes,
tipos y procedimientos externos. El cdigo que se escribe en un mdulo de formulario es
especfico de la aplicacin a la que pertenece el formulario y puede hacer referencia a otros
formularios u objetos de la aplicacin.

6.2.2 Mdulos estndar


Los mdulos estndar (extensin de nombre de archivo .bas) son contenedores de
los procedimientos y declaraciones a los que tienen acceso otros mdulos de la aplicacin.
Pueden contener declaraciones globales (disponibles para toda la aplicacin) o a nivel de
mdulo de variables, constantes, tipos, procedimientos externos y procedimientos globales.
El cdigo que se escribe en un mdulo estndar no est ligado necesariamente a una
aplicacin determinada; se puede reusar un mdulo estndar en distintas aplicaciones

30

Comunicacin Punto a Punto Va Mdem GSM

Diseo de la Aplicacin con VB

6.2.3 Controles
Son los objetos grficos, como un cuadro de texto, o un botn de comando, que se
colocan en un formulario para mostrar datos, realizar una accin o facilitar la lectura del
formulario. Los controles tienen asociado un cdigo que se ejecuta cuando se activa un
determinado evento de dicho control.
Los controles que hemos usado en este estudio as como los eventos que provocan
la ejecucin del cdigo asociado son los comentados a continuacin.

(7)

(3)

(6)
(2)
(5)
(1)
(4)
Figura1. Controles

CommandButton (1)
Es un control que est asociado a un comando. El evento que lo acciona es el clic
(bien del ratn o mediante el teclado). Cuando se hace clic en el botn de comando en
tiempo de ejecucin, el cdigo asociado al botn se ejecuta.

Textbox (2)
Crea un cuadro de texto con el cual podemos interactuar. Mostrar un determinado
texto, introducir un nuevo valor con el que se podr modificar el contenido de una variable
asociada, etc. Son algunas de sus funciones.
Las propiedades utilizadas son

Maxlenght, con la que establecemos el valor mximo de caracteres (para prevenir


errores en la posible variable asociada)

Multiline + scrollbar, se permiten diversas lneas y desplazarse a travs de ellas


(til para la presentacin de resultados con varias lneas)

Text, es el texto que muestra la caja. Podemos mostrar un texto deseado o asociar
dicho texto a una variable.

31

Comunicacin Punto a Punto Va Mdem GSM

Diseo de la Aplicacin con VB

Los eventos que activan el control son:

Change : Indica que el contenido ha cambiado. Nos servir para saber cuando se ha
modificado una caja de texto y cuando debe asociarse a la variable.

Keypress Ocurre cuando el usuario presiona y suelta una tecla. Vlido para
discriminar posibles entradas errneas. En un texto slo numrico descartamos las
teclas que no se correspondan a este requerimiento.

Label
Es un control grfico que se puede usar para mostrar texto. Se diferencia del
textbox en que el usuario no podr cambiar directamente dicho texto, sino que ser a travs
de la ejecucin del programa.

Timer
Nos Permite Ejecutar cdigo a intervalos peridicos produciendo un evento Timer.
Se configura la frecuencia de ejecucin de ste (en milisegundos), y se asocia un cdigo
que se realizar cuando se produzca el evento.

Optionbutton
Pequeo botn redondo ms una etiqueta (explicativa) que selecciona una opcin.
Los controles de este tipo se utilizan en grupo para mostrar opciones entre las cuales el
usuario slo puede seleccionar una (agrupados dentro de un contenedor como un control
Frame). Cuando un usuario selecciona un OptionButton, los otros controles del mismo
grupo dejan de estar disponibles automticamente.
La opcin se selecciona mediante el evento clic del ratn o teclado.
Cuando un optionbutton est seccionado la propiedad value = verdadera,
mostrndose en el interior del botn una redonda negra.

Frame
Un control de este tipo proporciona un agrupamiento identificable para controles o
para subdividir un formulario funcionalmente; por ejemplo, para separar grupos de
controles OptionButton.
Utilizamos su propiedad enabled para habilitar (true) o deshabilitar (false) los
controles contenidos en l (para preservar su valor y no sea modificado involuntariamente).

32

Comunicacin Punto a Punto Va Mdem GSM

Diseo de la Aplicacin con VB

Combobox
Nos permite introducir informacin en la parte del cuadro de texto o seleccionar
directamente un elemento de la lista desplegable. Se utiliza para seleccionar una opcin
entre las mostradas en dicha lista.
Mediante el evento clic se seleccionar una de las opciones y se efectuar el
tratamiento requerido asociado a dicho evento.

MsComm
Este control nos proporciona comunicarnos con el puerto serie para poder transmitir
y recibir datos a travs de l. Las propiedades y los diferentes eventos han sido
ampliamente comentados en el captulo anterior (5.Programacin del Puerto Serie).

Los mdulos de formulario tambin pueden tener asociado cdigo a eventos


propios no slo de los controles de los que dispone. A continuacin comentaremos los ms
importantes tratados en este proyecto:

Load
Ocurre cuando se carga un formulario. Utilizamos este evento para incluir cdigo
de inicializacin de un formulario (cdigo que especifica los valores predeterminados de
los controles, indica el contenido que se va a cargar en controles ComboBox e inicializa
variables a nivel del formulario).

Unload
Ocurre cuando un formulario est a punto de quitarse de la pantalla. Cuando ese
formulario se vuelve a cargar, el contenido de todos sus controles se reinicializa. Este
evento se desencadena cuando se cierra el formulario mediante el comando Cerrar del
men Control o una instruccin Unload.

Para visualizar u ocultar los formularios utilizamos la propiedad Visible, que estar
con valor true cuando queramos que sea visible y con valor false cuando deseemos
ocultarlo. Utilizaremos este mtodo para mostrar u ocultar el formulario sin necesidad de
descargarlo y volverlo a cargar de memoria.

33

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7. DIAGRAMAS DE FLUJO

34

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

DIAGRAMAS DE FLUJO
7.1 Introduccin
Los diagramas de flujo son representaciones del flujo que siguen las instrucciones
de un programa.
Los diagramas de flujo fueron muy utilizados durante la dcada de los sesenta, pero
resultaron inadecuados como herramienta de modelado de sistemas, debido a que facilitan
la creacin de cdigo no estructurado y complejo. Frente a ellos, el pseudocdigo fue una
alternativa realmente mejor.
Pero si bien estos diagramas han cado en desuso para el diseo de programas, stos
nos resultaran tiles:

Para seguir la secuencia lgica de procesos complejos.


Para intercambiar entre estructuras de control.
Para redireccionar el flujo.
Para cambiar un programa de un lenguaje a otro.
Para esbozar fcilmente un procedimiento complejo.

Figura 2. Figuras Usadas en los Diagramas de Flujo

De este modo presentamos en este formato de representacin nuestro programa.


Mostraremos tanto la evolucin de los diferentes formularios como las acciones que
conllevan asociadas los controles. Todo ello con el fin de aclarar y transmitir la idea
general de funcionamiento del programa, sin la necesidad de conocer y/o comprender el
lenguaje de programacin utilizado en este estudio.

35

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.2 Funcionamiento General Del Programa

INICIO

CONFIGURACIN PUERTO SERIE

CONTROL CODIGOS DE ACCESO

CARGAR CONFIGURACIN
PROGRAMA

MENU PRINCIPAL

Submenus?

MENSAJES (envio,
recepcin)

TRANSFERENCIA
DE DATOS

AGENDA
TELEFONICA

REGISTRO DE
LLAMADAS

FIN

Figura 3. Funcionamiento General del Programa

La evolucin normal del programa sera una vez iniciado ste, configurar el puerto
serie al cual tenemos conectado el mdem.
Posteriormente, tras el anlisis de los cdigos de acceso y su posible necesidad de
introducirlos para acceder al sistema, se procede a la carga de la configuracin del
programa, que abarca aspectos de las llamadas, mensajes, informacin,...
Seguidamente estaremos en disposicin de efectuar cualquiera de las acciones
disponibles en el men principal, accediendo a los diferentes submens de agenda,
mensajes, transferencia de datos o registro de llamadas. Tambin se permite el acceso a
una aplicacin calculadora.

36

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.3 Formato General De Comunicacin PC-Mdem


INICIO
PREPARAR
TRAMA

ENVIAR
TRAMA

TRATAR
RESPUESTA
FIN
Figura 4. Formato General de Comunicacin PC-Mdem

Cada Trama estar compuesta por un comando AT especfico + parmetros


(opcionales) + un retorno de carro (carcter ASCII num.13).
Enviar trama consiste en introducir dicha instruccin en el buffer de datos de salida
del puerto serie (SEND_COMMAND), mediante la instruccin Mscomm.output, y esperar
la respuesta.
Finalmente, cuando tengamos la respuesta del mdem a nuestra peticin de
ejecucin (se generar un evento que nos permitir conocer cuando se ha recibido
respuesta en el puerto serie), haremos un tratamiento especfico dependiendo del resultado
obtenido.

37

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.4 Enviar Tramas: Enviar Comando, Obtener y Tratar Respuesta


INICIO
SEND
COMMAND

Timeout

Respuesta
Completa?

No

Si
TRATAR
TIMEOUT

TRATAR
RESPUESTA

FIN
Figura 5. Enviar Tramas

El envo de tramas se compone del envo del comando AT + la espera de la


respuesta completa para su posterior tratamiento.
En el caso que se exceda un tiempo lmite de espera de la respuesta se considera
timeout (fuera de tiempo) y se trata esta circunstancia.
El proceso de Timeout se compone de 3 acciones, la de ejecucin del Timer + dos
que lo gobiernan

INI_TIMER_OUT: Despus de enviar el comando, habilitaremos el timer que


provocar que una variable timeout_cont se actualice cada segundo.

TIMER Cuando dicha variable timeout_cont tome el valor 70 (segundos), timeout


ser cierto y saldremos del bucle de espera de la respuesta.

TIME_OUT. Una vez fuera del bucle debemos comprobar si la salida se produjo
por timeout. Se deshabilitar el timer y se reiniciar el contador hasta una nueva
llamada. Se tratar el caso de que se haya producido timeout.

38

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.5 Espera De La Respuesta Completa


Dado que tenemos diferenciados 3 tipos de respuestas, la condicin de obtencin
completa de la misma variar dependiendo de dicha respuesta. Los comandos que tienen el
mismo formato de respuesta utilizaran todos ellos el mismo mtodo de resolucin. Los 3
mtodos de tratamiento son los siguientes:
Mtodo a)

ACCIN WAIT_RESULT_CODES
INICIO
DoEvents
STRBUFFER

Condicion Fin
Respuesta

NO

SI
FIN

CONDICION= Instr(Len(str)+2,strBUFFER,vbCrLf)

Figura 6. Metodologa tipo a)

Esta accin es general a todos aquellos comandos AT cuya respuesta sigue el


formato:
AT + instruccin + <parmetros> + Cr + CrLf + mensaje + CrLf
Se considera que se ha recibido toda la respuesta cuando se cumple la condicin
marcada.
sta consiste en saber si han llegado los 2 ltimos caracteres de final de respuesta
(CrLf) a partir del envo del comando y posterior al mensaje de la respuesta.
La funcin Instr (inicio, cadena de caracteres, texto a buscar) realizar la
comprobacin, devolviendo la posicin donde encontr la similitud, en caso contrario
devuelve 0.
La variable strBUFFER se actualiza cada vez que se produce el evento OnComm, y
se activa la propiedad evRECEIVED (llegada de un nuevo carcter al puerto serie).

39

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

Mtodo b)
INICIO

DoEvents
STRBUFFER

straux=strBUFFER
Right(straux,8)

Condicion Fin
Respuesta

NO

SI
FIN

CONDICION= vbCrLf + OK + vbCrLf


Figura 7. Metodologa tipo b)

Mtodo utlizado para la comprobacin de respuestas por parte del mdem a


aquellos comandos en cuya respuesta pueda haber diferentes lneas de mensaje siguiendo
el formato que presentamos a continuacin:
AT + instruccin + <parmetros> + Cr + CrLf + mensaje1 + CrLf +
+ mensaje2 + CrLf +
...
+ mensajeX
+ CrLf + CrLf
+ OK
+ CrLf
Cuando los ltimos 8 caracteres se correspondan a CrLf + CrLf +OK+CrLf, se
considera que se ha recibido completamente la respuesta y podemos tratar la misma.
Las acciones implementadas para la ejecucin de los comandos AT con este tipo de
respuesta son especficas para cada comando, porque no se ha encontrado formato general,
ya que pueden tener varios tipos de respuesta adems de ste (respuesta tipo A si el
mensaje es de error).
Por tanto, la nica manera de comprobar ambos formatos de respuesta en la misma
accin, es consultar por un lado mediante el mtodo b) y si el resultado no es satisfactorio
comparar la totalidad de la respuesta con el mensaje hipotticamente esperado (mtodo c)

40

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

Mtodo c)
Considerar que ha llegado la totalidad de la respuesta cuando coincida exactamente
con una de las respuestas posibles.
No se realiza un tratamiento a la respuesta sino que se compara en su totalidad.
Un ejemplo claro es la accin PIN CONTROL, no podemos utilizar ninguno de los
dos mtodos anteriormente mencionados ya que el formato de la respuesta no est
definido, puede tomar diferentes formatos.
STRBUFFER= cond X, donde condX puede tomar estos valores
condX = str(trama enviada)+CrLf+mensaje1+CrLf
condX = str(trama enviada)+CrLf+mensaje1+CrLf+CrLf+mensaje2+CrLf
...

DoEvents
STRBUFFER

ElseCase

Cond 1

strBUFFER ?
Cond 4
Cond 2

Cond 3

TRATAR
Condicion 1

TRATAR
Condicion 4

TRATAR
Condicion 2

TRATAR
Condicion 3

...
Figura 8. Metodologa tipo c)

41

Comunicacin Punto a Punto Va Mdem GSM


Mtodo d)

Diagramas de Flujo

NOTIFICACIONES (POLLING)

Tambin destacar las notificaciones que nos enva el mdem cuando se recibe una
llamada o un nuevo mensaje de texto.
Son respuestas que debemos comprobar mediante polling cada vez que se reciban
caracteres al puerto serie. Dado que son notificaciones especficas y definidas, debemos
comparar el texto recibido con dichas notificaciones:
CrLf + RING + CrLf en caso de llamada entrante, y
CrLf + "+CMTI: " + mem3 + ",1" + CrLf en caso de recepcin de nuevo mensaje

GENERACIN DEL EVENTO ONCOMM


INICIO

Otras

PROPIEDAD?
EvReceived
Recibido caracter

TRATAR
PROPIEDAD

Read Buffer
(strBUFFER)
RING
(llamada?)

NEW SMS
(lleg msg?)

FIN
Figura 9. Tratamiento Polling

42

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.6 Tratar Respuesta (Procedimiento Treat_Responses)


INICIO

OK

Results
Code?

TRATAR
OK

ERROR

TRATAR
ERROR

FIN
Figura 10. Tratar Respuesta

TREAT_RESPONSES es el procedimiento de tratamiento de la respuesta comn a


todos aquellos comandos cuyo formato de respuesta es
AT + instruccin + <parmetros> + Cr + CrLf + mensaje + CrLf,
pero la accin que realiza dicho tratamiento es especfica para cada uno de ellos,
llevando cada una como nombre el del comando AT para facilitar la asociacin y
comprensin.
A partir de la respuesta completa, la funcion RESULTS_CODE discrimina tanto la
secuencia enviada por el usuario como los caracteres de control y de separacin (Cr,Lf) y
devuelve el mensaje.
Con la parte importante de la respuesta, el mensaje, realizaremos un tratamiento
conforme el mismo.
Destacar que la mayora de comandos slo disponen de la respuesta OK y ERROR
de confirmacin o error de la llegada de la trama, aunque podemos comprobar que en otros
comandos tambin existe alguno de los mensajes CONNECT, BUSY, NO
CARRIER,+CME: INCORRECT PASSWORD,BLOCKED,...
En futuros diagramas podr encontrar el siguiente bloque:
TREAT_RESPONSE
NOMBRE ACCION
Figura 11. Bloque TREAT_RESPONSE

Esto responde a que el tratamiento de la respuesta al envio anterior del comando se


efecta segn la metodologa TREAT_RESPONSE. Obviamente cada comando tendr un
tratamiento a los resultados diferente y por ello se especifica el nombre de la accin que se
ejecuta (del mismo nombre que el comando enviado).
43

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.7 Configuracin Del Puerto Serie


INICIO

Establecer
Configuracin

SALIR
Botn?
AbrirPuerto

CerrarPuerto
Ok

Si

No

No

Abierto?

Msg Error

Si
Cerrado?

ABRIR

CERRAR

Msg Error

PrepararTrama
AT+CMEE

TRAMA

TREAT
RESPONSE
M.EQUIP.ERROR

Controlar el cdigo
de acceso

FIN
Figura 12. Configurar Puerto Serie

Mediante las diferentes listas desplegables debemos configurar el puerto serie en


cuanto a su ubicacin, velocidad, paridad, bits de datos y bits de parada.
Queda reflejada la configuracin anterior mediante el registro de Windows y cabe
la posibilidad de acceder a una predeterminada. Una vez aceptados los cambios podemos
proceder a la apertura el puerto.
Se realiza tratamiento de errores en cuanto a la apertura y el cierre del puerto, si
queremos modificar algun parmetro antes debe estar ste cerrado.
Una vez abierto, pulsando OK se envan diferentes tramas, una de configuracin
AT+CMEE (el mensaje de error, en caso de que se produjera, se presenta mediante un
formato explicativo, no numrico) y una de control de acceso AT+CPIN? (que determina
el estado del cdigo de bloqueo de la tarjeta SIM).
44

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.8 Control Del Cdigo De Acceso (Accin PIN_CONTROL)


INICIO

PrepararTrama
AT+CPIN?

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

NO

SI
...Sim PIN...
SI

ElseCase
strBUFFER ?

Timeout?

...Sim PUK...
TRATAR
TIMEOUT

NO

...Sim Not
Inserted...

...READY...

CARGAR FORM
PIN. Aux=1

Introducir Tarjeta +
ACEPTAR

CARGAR FORM
PUK. Aux=1

CARGAR FORM
MENU. Aux=1

FIN
Figura 13. Control del Cdigo de Acceso (PIN_CONTROL)

Mediante la trama AT+CPIN? se comprueba el estado del cdigo de acceso.


Se prepara la trama, se enva el comando (mediante la accin SEND_COMMAND)
y se espera a obtener la respuesta completa para su posterior tratamiento.
El sistema de esperar a la respueta completa sigue la metodologa tipo c) explicada
anteriormente. No finalizar hasta que no coincida exactamente con una de las 4 posibles
respuestas (se opta por este mtodo, ya que se combinan diferentes formatos de respuesta y
no es viable otra forma de proceder), o en el caso de que se produzca Error de Tiemout.
La respuesta nos indica
si es necesario el cdigo PIN (en cuyo caso accederemos al formulario de
introducin de dicho cdigo),
si es necesario el cdigo PUK (accederemos a otro formulario donde se nos
reclamar este cdigo),
si no es necesario ningun cdigo y el sistema ya est READY (se accede al men
principal directamente)
o si por el contrario es necesario INTRODUCIR LA TARJETA (una vez
introducida se har una rellamada a esta accin).
45

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.9 Formulario De Introduccin Del Cdigo Pin


INICIO

Text_PIN

Boton?
Salir

Introducir
cdigo PIN

Salir

Boton?
OK
PrepararTrama
AT+CPIN

TRAMA

TREAT
RESPONSE
PIN_CODE

FIN
Figura 14. Formulario Cdigo PIN

En este formulario introducimos el cdigo PIN.


El cdigo PIN (personal identification number) es un cdigo de seguridad que se
requiere cuando queremos acceder a los servicios de comunicacin que la operadora
ofrece.
Se enva la trama correspondiente (AT+CPIN = PIN + Cr) y se trata la respuesta.
Existe la posibilidad de salir del programa si desconocemos el cdigo PIN, para
evitar un posible bloqueo de la tarjeta SIM.

46

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.10 Tratar Respuesta Introduccin De Cdigo Pin (Accin Pin_Code)

INICIO

OK

Results
Code?

SIM PUK

Incorrect Psw
Cargar Form
MENU

Recargar
Form PIN

Cargar Form
PUK

FIN
Figura 15. Accin PIN_CODE

Tratamiento de la respuesta.
Dependiendo de la validez del cdigo PIN introducido podemos encontrarnos con 3
tipos de respuesta:
OK Cdigo correcto. Accederemos al men principal.
+CME ERROR: Incorrect password Cdigo incorrecto. Tenemos la posibilidad de
introducirlo de nuevo.
+CME ERROR: SIM PUK required: Hemos introducido errneamente 2 veces el
cdigo PIN. Accederemos al formualrio 03 con el fn de introducir el cdigo PUK.

47

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.11 Formulario De Introduccin Del Cdigo PUK


INICIO

Text_PUK,Text_PIN

Boton?
Salir

Introducir
cdigo PUK

Introducir
cdigo PIN

Salir

Boton?
OK
PrepararTrama
AT+CPIN

TRAMA

TREAT
RESPONSE
PUK_CODE

FIN
Figura 16. Formulario Cdigo PUK

En este formulario introducimos el cdigo PUK y un nuevo cdigo PIN.


El cdigo PUK (personal unlock code) es un segundo cdigo de seguridad que se
requiere cuando se ha introducido errneamente 2 veces el cdigo PIN.
Se enva la trama correspondiente (AT + CPIN = PUK , NUEVO PIN + Cr ) y
se trata la respuesta.
Existe la posibilidad de salir del programa si no conocemos el cdigo PUK, con tal
de no bloquear la tarjeta SIM definitivamente

48

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.12 Tratar Respuesta a la Introduccin De Cdigo PUK (PUK_Code)

INICIO

OK

Results
Code?

BLOCKED

Incorrect Psw
Cargar Form
MENU

Recargar
Form PUK

Msg ERROR

END (salir del


programa)

FIN
Figura 17. Accin PUK_CODE

Tratamiento de la respuesta.
Dependiendo de la validez del cdigo introducido podemos encontrarnos con 3
tipos de respuesta:
OK y accederemos al men principal
+CME ERROR: Incorrect password Contrasea incorrecta y tendremos la posibilidad
de introducirlo de nuevo.
BLOCKED hemos introducido errneamente 8 veces el cdigo PUK. Aparece un mensaje
de error y salimos del programa ya que la tarjeta SIM ha quedado bloqueada por la
operadora que presta el servicio.

49

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.13 Men Principal

INICIO

CERRAR
FORMULARIOS
Cargar Config. Del
Programa (1 vez)

AGENDA

CALC

BOTON ?
SMS
CSD

CARGAR FORM
MENSAJES

CARGAR FORM
AGENDA

LLAMADAS

CARGAR FORM
INFO MODEM

SALIR

CARGAR FORM
TRANSFER. CSD

ACERCA del
MODEM

CARGAR FORM
Registro Llamadas

CARGAR
Aplicacin CALC

FIN
Figura 18. Formulario Men Principal

Pantalla principal del programa, es la base del mismo.


Cerraremos los formularios de procedencia.
La 1 vez que accedemos al men principal se carga la configuracion del programa,
a partir de la lectura de un archivo (que conserva la ltima configuracin guardada por el
usuario) o de una configuracin predeterminada (en el caso de no existir dicho archivo). Se
envan una serie de tramas configurando los mensajes, el formato de llamada, etc
Mediante la pulsacin de diferentes botones accederemos a los submens que lo
componen: Agenda, Mensajes, Transferencia De Datos, Registro De Llamadas,
Informacin Del Mdem y Calculadora.
Existe la posibilidad de dejarlo en Standby (apareciendo el icono en la barra de
tareas) a la espera de nuevas acciones.

50

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.14 Cargar La Configuracin Del Programa


INICIO

PrepararTrama
AT+CCLK

TRAMA

TREAT
RESPONSE
SET_CLOCK

...

PREFERRED
MESSAGE
STORAGE

FIN
Figura 19. Cargar Configuracin del Programa

La primera vez que iniciemos el formulario del men principal realizaremos la


carga de la configuracin del programa. Mediante una serie de envos consecutivos de
tramas (envo de comando + espera y tratamiento de la respuesta) se realizar dicho
establecimiento de los parmetros de funcionamiento de nuestro programa acorde a
nuestras necesidades.
El procedimiento consiste en recoger del fichero (o de una predeterminada
guardada en el mismo cdigo) los valores del registro config (creado por el programador)
utilizados en la ltima ocasin.
Posteriormente se prepararan las tramas, para, a continuacin, enviarlas y tratar su
respuesta.
Una vez finalizado este proceso, se procede a repetir ste mismo para la siguiente
instruccin.
Esta configuracin responde tanto a parmetros de los mensajes, como a la
transferencia de datos o llamada, as como del reloj del sistema, metodologa de la
notificacin de nuevos mensajes, etc.
Presentamos a continuacin dichos parmetros o comandos implementados en la
carga inicial:
RELOJ
Clock "AT+CCLK" (configura la hora y la fecha actual, referente importante para
el conocimiento de la recepcin de llamadas u mensajes)
51

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

AGENDA
Phonebook Storage, "AT+CPBS" (establece el lugar de almacenamiento de la
agenda telefnica: Mdem o tarjeta SIM)
MENSAJES
Service Centre Address, "AT+CSCA" (establece el nmero del centro de
mensajes, que canaliza el envo de los mensajes)
Message Format, "AT+CMGF" (establece el tipo de mensajes: texto o binario)
Message Text Time Max, "AT+CSMP" (se configura el tiempo mximo de
almacenamiento de mensajes)
Preferred Message Storage, (selecciona las diferentes memorias para las
diferentes acciones con los mensajes) NOTA: al tener un formato de respuesta que
combina
tipo
b)
y
c)
se
crea
una
accin
especifica
PREFERRED_MSG_STORAGE, donde se prepara y se trata la respuesta en la
misma accin
New Message Indication, "AT+CNMI configura el modo de alerta al recibir un
nuevo mensaje
LLAMADA-TRANSFERENCIA DE DATOS
Select Dialling, ATT o ATP (selecciona el modo de llamada: tono o pulsos)
Automatic Answer Control, "ATS0" (configura el modo de respuesta de llamada:
manual o automtico)
Select Bearer Service, "AT+CBST" configura la velocidad de la conexin
Escape Sequence Character, "ATS2" configura el carcter de escape del modo
online data mode

52

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.15 Registro De Llamadas


INICIO

BOTON ?

Recibidas

Enviadas

CARGAR
Call_reg=RC
FORMULARIO
Preparar TRAMA9

Call_reg=DC
Preparar TRAMA

Menu

Perdidas

Call_reg=MC
Preparar TRAMA

TRAMA

TREAT
RESPONSE
Ph_CallStorage

PhoneBook
READ

FIN
Figura 20. Formulario Registro de Llamadas

Mediante la pulsacion de 3 botones se mostrarn: Llamadas RECIBIDAS,


ENVIADAS o NO CONTESTADAS, segn corresponda al botn pulsado.
Se prepara la trama oportuna a cada una de ellas, configurando mediante el
parmetro call_reg (distintivo entre ambas), el registro de la memoria del mdem a leer:
AT+CPBS=RC
AT+CPBS=DC
AT+CPBS=MC

para consultar llamadas recibidas


para consultar llamadas enviadas
para consultar llamadas no contestadas

Se enva mediante la accin TRAMA y se trata la respuesta.


Posteriormente se ejecuta la accin PHONEBOOK READ, que es la accin que
realizar la lectura del registro de llamadas y presentar los resultados en el caso de que los
hubiera. Dicha accin se puede ver detallada en la pg.siguiente.
Se retorna al MEN principal cuando haya finalizado la consulta, previo
accionamiento del botn correspondiente.

53

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.16 Lectura De La Memoria Del Mdem (Accin Phonebook_Read)


INICIO

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

NO

SI

OTRA
StrBuffer?

SI

Timeout?

Cond1

Cond2

NO
No Resultados
(aux=1)

TRATAR
TIMEOUT

ERROR en la
Trama (aux=1)

straux=strBUFFER
Right(straux,8)

SI
Straux=cond3?

SHOW RESULTS

NO

En Form Llamadas
(aux=1)

i?

2
En Busqueda
Agenda (aux=1)

FIN
Figura 21. Accin PHONEBOOK_READ

Esta accin permite la lectura de la memoria del mdem. ste tiene varios registros
destinados cada uno de ellos a un almacenamiento de informacin determinada.
Por lo tanto, antes de realizar una lectura, debemos especificar que registro
queremos leer (comando AT+CPBS). Esta configuracin se realizar previamente a la
llamada de esta accin.
Nosotros implementaremos el acceso al registro de las llamadas y a la agenda.
Como la metodologa es la misma en ambos casos, hemos implementado una sola
accin que tendr acceso a cualquiera de los registros.
De este modo, pasaremos como parmetro el tipo de lectura queremos realizar
i=1 ser para leer el registro de llamadas e
i=2 para la agenda telefnica.

54

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

El proceso consistir en enviar la trama correspondiente y esperar la respuesta


completa pars su posterior tratamiento.
Esta accin combina 2 tipos de respuesta y debemos usar metodologas diferentes.
Metodologa tipo c. Comparar respuesta completa (strBUFFER) a una determinada:

strBUFFER = str + vbCrLf + "OK" + vbCrLf ? (Cond1)


Se obtiene esta respuesta en el caso de que no haya resultados a la peticin de bsqueda
requerida
strBUFFER = str + vbCrLf + "ERROR" + vbCrLf ? (Cond2)
en el caso de error en el envo del comando.
Si no coincidiera con ninguna de estas 2 condiciones deberamos realizar otra
comprobacin de la respuesta. Se implementa, para este segundo anlisis, la metodologa b
(ya que si existen resultados, pueden obtenerse diferentes lneas en la respuesta). Por tanto
debemos leer los 8 ltimos caracteres de la respuesta y comparar con la condicin 3.
straux = vbCrLf + vbCrLf + "OK" + vbCrLf? (Cond3)
En este caso debemos utilizar la variable i, pasada como parmetro, como
discriminatoria para conocer quien realiz la peticin de lectura de los registros del
mdem.
Si i = 1
se muestran los resultados mediante la funcin SHOW_RESULTS
en el formulario del registro de llamadas, mientras que
Si i=2
se mostrarn los resultados obtenidos en el formulario de resultados
de la agenda telefnica.
Como en el resto de acciones anteriores se tratara la condicin de tiemout al salir
del bucle de espera de la respuesta, por si se hubiese producido dicha situacin.

55

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.17 Men De La Agenda Telefnica


INICIO

BOTON ?

Busq Nombre

Configuracin
memoria

Insertar New

Busq Posicion
CARGAR
FORMULARIO 9

Configurar
Memoria (ME-SM)

CARGAR
FORMULARIO 10

CARGAR
FORMULARIO 11

FIN
Figura 22. Formulario Agenda Telefnica

Se puede seleccionar (mediante un botn de opcin) tanto la memoria del telfono


como la de la tarjeta SIM para realizar las funciones asociadas, que son

Bsqueda de un nmero de telfono por su nombre o inicial


Bsqueda de un nmero de telfono por su posicin en la agenda o visualizar un
rango determinado
Insertar un nuevo nmero al listado existente

Para ello se debe acceder a los diferentes submens pulsando el botn correspondiente.

56

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.18 Bsqueda Por Nombre En La Agenda Telefnica


INICIO

PrepararTrama
AT+CPBS

TRAMA

TREAT
RESPONSE
PhBook Storage

Text

Boton?
Salir

Recoger TEXTO
BUSQUEDA

Salir
Boton?
OK
PrepararTrama
AT+CPBF

PhoneBook
READ

Salir
Boton?
Nueva Bsqueda
Ocultar Resultados
Anteriores

FIN
Figura 23. Formulario Bsqueda por nombre

Se inicia este formulario enviando la configuracin correspondiente a la memoria


escogida para realizar la consulta (ME o SIM). (AT+CPBS).
57

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

Posteriormente se introduce el texto de bsqueda que puede ser una cadena


alfanumrica o la inicial del nombre a buscar (de este modo aparecern todas las entradas
que se correspondan que empiecen por ese carcter).
Al pulsar el botn OK se ejecutar la accin PHONEBOOK_READ que ser la
encargada de realizar la consulta y presentar resultados en el caso de que los hubiera.
Se pueden realizar tantas bsquedas como se desee. PULSANDO NUEVA
BSQUEDA, se vaciar el texto de bsqueda as como la pantalla de los resultados de
bsquedas anteriores.
Al salir, accederemos al men principal o al formulario que hizo la llamada (enviar
SMS, o transferencia de datos).

58

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.19 Bsqueda Por Posicin En La Agenda Telefnica


INICIO

PrepararTrama
AT+CPBS

TRAMA

TREAT
RESPONSE
PhBook Storage

Text

Boton?
Salir

Recoger RANGO
BUSQUEDA

Salir
Boton?
OK
PrepararTrama
AT+CPBR

PhoneBook
READ

Salir
Boton?
Nueva Bsqueda
O cultar Resultados
Anteriores

FIN
Figura 24. Formulario Bsqueda por Posicin

Este formulario acta de manera idntica al de la bsqueda por nombre. La nica


diferencia radica en el motor de bsqueda, que en ste se realiza por posicin o rango.
A partir de un valor nmerico pasado como parmetro, se presenta a modo de
resultado la entrada (nombre y numero de telfono) correspondiente a dicha posicin que
ocupa en la memoria.
Si se introduce un rango se mostrarn todas las entradas comprendidas entre esos
valores.

59

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.20 Insertar Nueva Entrada En La Agenda Telefnica


INICIO

PrepararTrama
AT+CPBS

TRAMA

TREAT
RESPONSE
PhBook Storage

Cancelar

Boton?
TextBoxs
RELLENAR
CAMPOS

Cancelar
Boton?
OK
TRAMA

TREAT
RESPONSE
PhoneBookwrite

FIN
Figura 25. Formulario Insertar Nueva Entrada

Inicialmente se carga la memoria de la agenda (mdem o SIM) seleccionada en el


men de la agenda (AT+CPBS).
Posteriormente se rellenan los campos correspondientes a posicin (si se deja en
blanco ocupar la primera posicin libre de la memoria), nmero de telfono y nombre del
mismo.
Al aceptar estos campos, se enviar la trama correspondiente (AT+CPBW) que
establecer los cambios si no se produce algn error de envo de trama (en cuyo caso se
tratar con la accin correspondiente a este coma ndo).
Cabe la posibilidad de cancelar el proceso y retornar la men de la agenda.

60

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.21 Men Mensajes SMS

INICIO

BOTON ?

Escribir
Leer
CARGAR
CARGAR
FORM
FORMULARIO
ESCRIBIR (16) 9

Configuracion
Menu

CARGAR FORM
LEER MSG (15)

CARGAR FORM
CONFIG (14)

FIN
Figura 26. Men Mensajes

Este es el formulario del men de los mensajes SMS.


Desde l, pulsando el botn correspondiente accederemos a los diferentes submens
Configuracin de los mensajes
Lectura de mensajes (borrado, y reenviado)
Escritura y envo de mensajes
Finalmente retornaremos al men principal.

61

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.22 Configuracin De Los Mensajes SMS


INICIO

VISUALIZAR
CONFIG.
DESHABILITAR
CONTROLES

Modificar
Memoria Msgs

BOTON ?

Modificar N
Centro Servicio
Modificar
Formato Msg

Modificar
T.permanencia
HABILITAR
CONTROLES

HABILITAR
CONTROLES

HABILITAR
CONTROLES

HABILITAR
CONTROLES

MODIFICAR
PARMETROS

MODIFICAR
PARAMETROS

MODIFICAR
PARAMETROS

MODIFICAR
PARAMETROS

OK
PREFERRED
MESSAGE
STORAGE

OK

OK

OK

PREPARAR TRAMA
AT+CSMP

PREPARAR TRAMA
AT+CMGF

PREPARAR TRAMA
AT+CSCA

TRAMA

TRAMA

TRAMA

TREAT
RESPONSE
MSG_FORMAT

TREAT
RESPONSE
MSG_TIME_MAX

TREAT
RESPONSE
SERV_CENTRE

SMS-MENU

FIN
Figura 27. Configuracin de los Mensajes

Este formulario controla el envo de comandos que configuran los mensajes.


Al cargarse ste, se muestra la configuracin que existe actualmente.
Para modificar alguno de los 4 parmetros existentes, debemos pulsar el botn
modificar especfico de cada uno de ellos. Con esta accin se habilita el resto de controles
y se posibilita la modificacin.
Una vez realizados los cambios oportunos, pulsamos OK, que tiene asociado el
cdigo de recoger los cambios obtenidos en el panel, preparar la trama de envo y enviarla.
Posteriormente tratar la respuesta.
Por ltimo se volvern a deshabilitar los controles con tal de preservar posibles
cambios no deseados.

62

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

Los parmetros de configuracin que se han implementado son

Seleccin de la memoria de almacenaje


Tiempo mximo de permanencia en el centro servidor antes del envo
Formato del mensaje (texto o binario)
Nmero del centro de servicio

Todos ellos siguen el formato de envo TRAMA y TREAT_RESPONSE, a


excepcin del primero, para el cual se ha generado una accin especfica
(PREFERRRED_MESSAGE_STORAGE) ya que combina varios tipos de respuesta.
Dicha accin se puede ver detallada en la pg.siguiente.

63

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.23 Accin Preferred Message Storage


INICIO

PrepararTrama
AT+CPMS

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

SI
SI

NO

straux=strBUFFER
Right(straux,8)

Timeout?

SI
Straux=cond1?
TRATAR
TIMEOUT

NO
NO

Tratar Envo
Correcto (aux=1)

SI
StrBuffer=cond2?

NO

Tratar Error Envo


(aux=1)

FIN
Figura 28. Accin PREFERRED_MSGE_STORAGE

Mediante esta accin enviamos la trama de configuracin de la memoria de los


mensajes. Comprobamos que llegue correctamente la respuesta y se trata el resultado.
Existen 3 tipos de memorias: la primera es la que permite la lectura, borrado y
reenviado de mensajes, la segunda es la que contiene los mensajes escritos pero no
enviados, mientras que la tercera es donde se almacenan los nuevos mensajes recibidos.
Estas memorias pueden tomar los valores de mdem o tarjeta SIM.
Se prepara la trama con los diferentes parmetros (las 3 memorias) y se procede al
envo. Realizamos una accin especfica para el envo, recepcin y tratamiento de la
respuesta, ya que sta ultima se nos presenta de forma variable :
AT+CPMS + parmetros + CR +CRLF+ mensaje +CRLF+CRLF+ OK +CRLF
(para denotar que lleg esta respuesta utilizamos straux= CrLf+ CrLf +OK+ CrLf ?)
AT+CPMS + parmetros + CR +CRLF+ ERROR +CRLF
(debemos comprobar si se corresponde con la respuesta contenida en StrBUFFER)
As, debemos considerar 2 tipos de respuestas y, por tanto, un tratamiento especial.

64

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.24 Leer, Borrar y Reenviar SMS Desde Memoria


INICIO

READMsg
(true)

BOTON ?

Leer Anterior

Borrar

Reenviar
Index++
(Variable Lectura)

Leer Siguiente

CARGAR FORM
ENVIAR (17)

READMsg
(false)

Preparar TRAMA
AT+CMGD

Index-(Variable Lectura)

TRAMA

READMsg
(true)

TREAT
RESPONSE
DELETE

Menu SMS

FIN
Figura 29. Leer, Borrar y Reenviar Mensajes

Este formulario implementa adems de la lectura de mensajes otras acciones como


borrar y reenviar mensajes desde la memoria.
Al iniciarse se ejecuta la accin READ_MESSAGE (Dicha accin se puede ver
detallada en la pg. siguiente) que nos presentar por pantalla el primer mensaje de la
memoria1 (va desplazndose posicin a posicin hasta que encuentra un mensaje o ha
revisado la memoria completa).
La variable index contendr la posicin del mensaje actual, y sta nos ser til para
posteriores aplicaciones.
Se podr tratar ese mensaje,
borrndolo (al pulsar el botn borrar se enva el comando especfico
AT+CMGD, que borra la posicin de memoria que especifiquemos,
contenida en index)
reenvindolo (se cargar el formulario 17 de envo de mensaje, para
introducir el nmero del destinatario y el posterior envo a travs de la trama
AT+CMSS).
La funcin de lectura se ve mejorada con la posibilidad de acceder a los mensajes
de forma secuencial en ambos sentidos, hacia adelante o hacia atrs, lo que facilita en gran
medida el acceso a ellos. Pulsando siguiente o anterior incrementaremos o
decrementaremos index, desplazndonos as por las diferentes posiciones de memoria.
65

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.25 Leer Mensaje (Accin Read_Message)


INICIO

PrepararTrama
AT+CPMS

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

SI
SI

NO

straux=strBUFFER
Right(straux,8)

Timeout?

SI
Straux=cond1?
TRATAR
TIMEOUT

NO
SHOW RESULTS
(aux=1)

NO
SI
StrBuffer=cond2?

NO

Posicin vacia
(aux=1)

Avanzar o
Retroceder index

FIN
Figura 30. Accin READ_MESSAGE

Esta accin realiza la lectura de los mensajes.


Inicialmente se prepara la trama a enviar, que consiste en el comando AT+CMGR+
la posicin de memoria a leer (variable index). Se enva dicha trama y se espera respuesta
completa.
Si los ltimos 8 caracteres de la respuesta se corresponden con la condicin 1
(vbCrLf + "OK" + vbCrLf ), en la posicin index s hay mensaje de texto y se muestra su
contenido mediante la funcin SHOW_RESULTS. Se usa esta metodologa, tipo b), ya que
un mensaje de texto puede componerse de varias lneas.
Si la posicin requerida se encontrase vaca se cumplira la condicin 2
strBUFFER = str + vbCrLf + "+CMS ERROR: 500" + vbCrLf Or _
strBUFFER = str + vbCrLf + "+CMS ERROR: 321" + vbCrLf
66

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

Se realiza una comparacin de la respuesta en su totalidad con las posibles


respuestas de error.
En este caso el tratamiento consistira en avanzar o retroceder posiciones hasta
encontrar una posicin que contenga un mensaje y mostrarlo, o hasta que recorriramos
todas las posiciones de la memoria.
El sentido de lectura de los mensajes es determinado por la variable pasada por
parmetro Front, que determina si el recorrido por la memoria se produce en sentido
ascendente o descendente, incrementando o decrementando el valor de index.

67

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.26 Formulario Escribir Mensajes (Guardar o Enviar)


INICIO

ESCRIBIR
TEXTO

Guardar

Boton?

PrepararTrama

CARGAR FORM
ENVIAR (17)

AT+CMGW

SEND OR
WRITE MSG

Enviar

Cancelar

FIN
Figura 31. Formulario Escribir Mensajes (guardar-enviar)

El formulario consta de una caja de texto en la cual escribimos el texto del mensaje.
ste puede ser guardado en la memoria (en la primera posicin libre) o bien ser enviado.
Cuando pulsamos guardar, se prepara la trama AT+CMGW y se ejecuta la accin
SEND_OR_WRITE_MESSAGE (dicha accin se puede ver detallada en la pg. siguiente).
Si queremos enviar, accederemos al formulario 17, en el que especificaremos el
nmero del destinatario primero y se enviar la trama correspondiente despus.
Se puede cancelar cualquiera de estos procesos y retornaremos al men de los
mensajes.

68

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.27 Enviar o Guardar (Accin SEND_OR_WRITE _MESSAGES)


INICIO

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

NO

SI

SI
StrBuffer=cond1?

SI

Timeout?

Ready Par a Enviar


Texto (aux=1)

NO
NO
TRATAR
TIMEOUT

PrepararTrama
TEXTO+CrtlZ

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

SI
SI

NO

straux=strBUFFER
Right(straux,8)

Timeout?

NO
TRATAR
TIMEOUT

Straux=cond2?

SI

NO

i?

SMS Guardado
(aux=1)

2
SMS Enviado
(aux=1)

SI
Straux=cond3?

NO

1
ERROR Guardar
(aux=1)

i?

2
ERROR Enviar
(aux=1)

FIN
Figura 32. Accin SEND_OR_WRITE_MESSAGES

Accion comn tanto para el envo como para el almacenamiento de un mensaje.


Se opta por esta accin compartida ya que los 2 comandos se componen de una primera
parte idntica y un tratamiento similar en cuanto a la obtencin de la respuesta completa.
Por tanto, slo deberemos discriminar en la parte final qu comando hizo la llamada para
hacer un tratamiento especfico para cada uno.

69

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

En un principio se enva el comando, ya sea AT+CMGW o AT+CMGS,


dependiendo de si queremos guardar o enviar el mensaje respectivamente. Tambin
deberemos especificar la posicin de memoria donde se almacenar (o omitirla y se
colocar en la primera libre) y el nmero del destinatario al cual queremos enviar.
Debemos esperar a que el mdem responda
(Trama enviada) + vbCrLf + "> " + Chr(0)

indicativo de que el sistema esta listo para la recepcin del texto. Dado que es una
respuesta concreta, debemos esperar a que se produzca la coincidencia en su totalidad
(metodologa tipo c).
Una vez se haya obtenido dicha respuesta o se haya producido timeout mientras se
esperaba la misma, se saldr del bucle de espera, y se tratar la posible incidencia de
timeout.
Posteriormente enviaremos la trama formada por el Texto del Mensaje + CRTL-Z
(carcter de finalizacin del texto), y esperaremos la respuesta final del mdem.
Esta puede acontecer de 2 formas, o un mensaje de error o de un correcto envo.
Ambas las trataremos del mismo modo, leyendo los ltimos 8 caracteres de la respuesta y
comparndolas con las siguientes condiciones:
Condicin2 = vbCrLf + vbCrLf + "OK" + vbCrLf

El mensaje ha sido guardado o enviado correctamente,


Condicin3 = vbLf + "ERROR" + vbCrLf

Ha ocurrido un error al guardar o enviar el mensaje.


El tratamiento a ambas respuestas ser discriminado por la variable i (pasada como
parmetro) indicadora de si el comando a ejecutar era el almacenamiento (i=1) o envo
(i=2) de mensajes.

70

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.28 Formulario Enviar Mensaje

INICIO

Agenda

Num Destinatario

Boton?

Salir
Escribir
Msg

CARGAR FORM
AGENDA (08)

Llamada
desde?

SEND OR
WRITE MSG

Reenviar
Msg

PrepararTrama
AT+CMSS

TRAMA

TREAT
RESPONSE
Send Storage

FIN
Figura 33. Formulario Enviar Mensaje

Para realizar el envo debemos aportar el nmero de telfono del destinatario con el
que se realizar la comunicacin. Este nmero puede ser consultado en la agenda de
telfonos (a la cual se tiene acceso mediante un pulsador) o introducindolo manualmente.
El envo puede tener 2 formas de proceder:

Si provenimos de la escritura de un mensaje, entonces ejecutaremos la accin


SEND_OR_WRITE_MESSAGE, la cual se encargar de construir la trama con los
diferentes parmetros (texto, nm. destinatario), realizar el envo y tratar la
respuesta.

Si queremos reenviar un mensaje, entonces mediante la instruccin AT+CMSS y el


valor de index (posicin en la memoria), enviaremo s la trama y analizaremos
posteriormente los resultados.

71

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.29 Formulario Transferencia De Datos CSD

INICIO

Dial
PrepararTrama

Aceptar
Llamada

BOTON ?

Rechazar
Llamada

Colgar
Opciones

ATD

Agenda

PrepararTrama
ATA

PrepararTrama
HANG UP

MENU

AT+CHUP

TRAMA

TREAT
RESPONSE
ATD

TRAMA
CARGAR FORM
CONFIG. CSD

CARGAR FORM
aGENDA

TRAMA

TREAT
RESPONSE
ANSWER

TREAT
RESPONSE
HANGUPCALL

FIN
Figura 34. Formulario Transferencia de Datos

Este es el formulario destinado a realizar transferencias de datos.


Se implementan distintos botones que tienen asociadas distintas funcionalidades.
De este modo tenemos ESTABLECER LLAMADA, que prepara la trama de envo
del comando ATD + nmero destinatario, se ejecuta la accin TRAMA que enva y espera
la respuesta completa y finalmente se trata dicha respuesta obtenida.
Se puede acceder a la AGENDA tambin desde este formulario, para consultar el
nmero del futuro interlocutor.
Si seleccionamos COLGAR, se ejecuta la accin HANG UP (se puede observar
con ms detalle en la pgina xxxx) con el objetivo de finalizar una comunicacin,
existente o en proceso de establecerse.
Mediante Aceptar llamada o Rechazar llamada, aceptamos o rehuimos la
comunicacin con una llamada entrante. Ambas actuaciones se componen de preparar la
trama correspondiente (comandos ATA y AT+CHUP, respectivamente), ejecutar la accin
TRAMA y tratar la respuesta obtenida.
Pulsando Opciones o men, tendremos acceso al formulario de configuracin de la
transferencia de datos CSD o al men principal respectivamente.

72

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.30 Finalizar Una Llamada, Colgar (Accion Hang Up)


INICIO

PrepararTrama
ATH

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

NO

SI
SI

ElseCase

Timeout?

NO
TRATAR
TIMEOUT

StrBuffer?
Cond1

Cond3
Cond2

Fin de Llamada
(aux=1)

Ll. Interrumpida
(aux=1)

Error Envo Trama


(aux=1)

FIN
Figura 35. Accin HANG_UP

Con esta accin finalizaremos una llamada.


En un principio enviaremos la trama ATH, para posteriormente esperar y tratar la
respuesta obtenida.
La respuesta puede presentarse de 3 formas:
Cond1 = ATH +Cr + CrLf + OK + CrLf
Cond2 = ATH +Cr + CrLf + ERROR + CrLf
Cond3 = CrLf + OK + vbCrLf

'estamos en una conexin y la finalizamos


error en el intento de colgar
llamada interrumpida

Dado que son 2 formatos distintos, y a causa de la estructura de la ltima, no


podemos implementar la metodologa a. As que debemos optar por el tipo c, esperar a que
alguna de las respuestas coincida en su totalidad con alguna de estas tres condiciones, y
posteriormente tratar la respuesta.

73

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.31 Transferencia De Datos CSD (Connected)


INICIO

Texto Enviar
ESCRIBIR
TEXTO

Modo
Comandos

ENVIAR

Modo en
linea

Colgar
Command
MODE

Texto Recibido

BOTON ?

HANG UP

GUARDAR
T.RECIBIDO

MOSTRAR
T.RECIBIDO
PrepararTrama
ATO=0

TRAMA

TREAT
RESPONSE
ONLINEDATA

FIN
Figura 36. Transferencia de Datos

Una vez est establecida la comunicacin con el interlocutor, podremos realizar las
siguientes acciones:

Escribir texto y enviarlo, simplemente se coloca en el buffer de transmisin.

Recibir texto y visualizarlo, realizando la lectura del buffer y mostrndolo por


pantalla.

Acceder al modo comandos, mediante la accin COMMAND MODE (la cual


podemos ver desarrollada en la pgina XXXX) se enva la secuencia de escape y se
comprueba que la respuesta certifica que estamos en ese estado de funcionamiento.

Para retornar al modo en lnea debemos enviar el comando ATO (se repite el
proceso preparar trama, envo y espera de respuesta, tratamiento-confirmacin del
nuevo modo de operacin).

Finalizar la comunicacin. Debemos colgar y se ejecutar la accin HANG UP. Se


debe recordar que debemos estar en modo comandos para que esta accin tenga
efecto ya que sino enviaremos al interlocutor el comando como si de un dato se
tratara.

Posteriormente se pueden GUARDAR en un fichero de texto los datos recibidos.

74

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.32 Acceso Al Modo Comandos (Accin Command Mode)


INICIO

PrepararTrama
+++AT (seqEsc)

SEND
COMMAND
DoEvents
STRBUFFER

Aux=1 or
Timeout

NO

SI
SI

ElseCase

Timeout?

NO
TRATAR
TIMEOUT

StrBuffer?
Cond1

Cond2

modo comando
(aux=1)

error trama
(aux=1)

FIN
Figura 37. Accin COMMAND_MODE

Para pasar de modo en lnea a modo comando debemos enviar la trama +++AT
(denominada secuencia de escape donde + es el char(43), aunque es configurable).
Posteriormente debemos esperar y tratar la respuesta. Dado que las posibles respuestas son
Cond1 = vbCrLf + "OK" + vbCrLf
Cond2 = vbCrLf + "ERROR" + vbCrLf

acceso correcto al modo comandos


error al intentar acceder

no podemos hacer un tratamiento del tipo a, ya que la respuesta no contiene la instruccin


enviada y por tanto es de longitud inferior para tratarla con la accin TRAMA
As pues, utilizaremos un tipo c puro, que consistir en comprobar si corresponde
totalmente la respuesta obtenida con una de estas 2 posibles.

75

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

7.33 Configuracin De Parmetros Para La Transferencia CSD-HSCSD


INICIO

VISUALIZAR
CONFIG.
DESHABILITAR
CONTROLES

Modificar Velocidad
Conexion

BOTON ?

Modificar Modo
Llamada

Modificar
Carcter Escape
Modificar Modo
Respuesta

HABILITAR
CONTROLES

HABILITAR
CONTROLES

HABILITAR
CONTROLES

HABILITAR
CONTROLES

MODIFICAR
PARMETROS

MODIFICAR
PARAMETROS

MODIFICAR
PARAMETROS

MODIFICAR
PARAMETROS

OK

OK

OK

OK

PREPARAR TRAMA
AT+CBST

PREPARAR TRAMA
ATT/ATP

PREPARAR TRAMA
ATS0

PREPARAR TRAMA
ATS2

TRAMA

TRAMA

TRAMA

TRAMA

TREAT
RESPONSE
BEARER_SERV

TREAT
RESPONSE
SEL_DIALLING

TREAT
RESPONSE
ANSWER_MODE

TREAT
RESPONSE
ESC_SEQ_CHAR

CSD-MENU

FIN
Figura 38. Formulario Configuracin Transferencia de Datos

Se configuran los parmetros necesarios para la transferencia de datos CSDHSCSD.


Al cargarse este formulario, se muestra la configuracin que existe actualmente.
Para modificar alguno de los 4 parmetros existentes, debemos pulsar el botn
modificar especfico de cada uno de ellos.Con esta accin se habilita el resto de controles y
se posibilita la modificacin.
Una vez realizados los cambios oportunos, pulsamos OK, que realizar el proceso
de recoger los cambios obtenidos en el panel, preparar la trama de envio y la enviar.
Posteriormente tratar la respuesta.
Por ltimo se volvern a deshabilitar los controles con tal de preservar posibles
cambios no deseados.

76

Comunicacin Punto a Punto Va Mdem GSM

Diagramas de Flujo

Los parmetros de configuracin que se han implementado son:


Velocidad de conexin
Modo de llamada
Modo de Respuesta
Carcter de escape
Todos ellos siguen el formato de envo TRAMA y TREAT_RESPONSE

77

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

8. MANUAL DE USUARIO

78

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

MANUAL DE USUARIO
8.1 Introduccin
Se presenta un pequeo manual explicativo de la aplicacin programada.
En l se contemplan las posibles acciones a realizar as como la asociacin de stas
a los controles de los formularios. De este modo ser mucho ms sencillo implementar una
accin, ya que stas estn desglosadas por pasos mostrando imgenes de la aplicacin e
indicando que controles deben pulsarse en cada ocasin.
El manual se desglosar en 7 apartados
Configuracin Del Puerto Serie
Control De Cdigos
Men Principal
Agenda Telefnica
Mensajes De Texto (SMS)
Transferencia De Datos
Registro De Llamadas

79

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

8.2 Configuracin Del Puerto Serie


Al iniciar el programa aparecer esta pantalla:

Listas desplegables:
Seleccin del puerto
Velocidad
Paridad
Bits de informacin
Bits de stop

Guarda los cambios


Muestra la config.
predeterminada

Abrir puerto serie

Cerrar el puerto serie

Salir del programa

Acceder al mdem
Figura 39. Configuracin Puerto Serie

Para configurar el puerto serie debe

Seleccionar en las listas desplegables los valores adecuados.


Pulsar Aceptar Cambios, para que los cambios resten guardados.
Pulsar Abrir Puerto.
Pulsar OK.

Recuerde que para efectuar cambios en la configuracin el puerto serie debe estar cerrado.
El fabricante expone en su manual la configuracin necesaria, aunque sta se puede
modificar. Es la siguiente:
Velocidad =9600 baudios,
Bits de Informacin = 8,

Paridad = ninguna,
Bits de parada =1.

sta aparecer cuando pulsemos


Configuracin Predeterminada.
Cada vez que se inicie el programa se visualizar la ultima configuracin utilizada,
recogida del registro de Windows.

Para salir del programa


Pulse EXIT.

80

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

8.3 Control De Cdigos


Si nos aparece la siguiente ventana es indicativo de que la tarjeta SIM est
protegida con un cdigo denominado PIN (Personal Identification Number) de 4 hasta 8
dgitos.

Introduzca aqu
el cdigo
Salir del programa

Aceptacin del cdigo


Figura 40. Formulario Cdigo PIN

Introduzca el cdigo PIN


Pulse OK

Si el cdigo introducido es correcto, el terminal estar activado a la red, y


accederemos al men principal.

Si desea salir del programa


Pulse EXIT

En el caso de introduccin errnea del cdigo se le permite introducirlo de nuevo.


Si resultara fallido en 2 ocasiones, sera necesario un segundo cdigo de seguridad
denominado PUK (Personal Unblock Code).

Introduzca aqu
el cdigo PUK
Introduzca aqu
un nuevo codigo PIN
Salir del programa

Aceptacin de cdigos

Figura 41. Formulario Cdigo PUK

Introduzca el cdigo PUK


Introduzca el cdigo PIN
Pulse OK

81

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

Si el cdigo PUK introducido es correcto, el terminal estar activado a la red, y se


acceder al men principal.
En el caso de introduccin errnea del cdigo se le permite introducirlo de nuevo.
Si resultara fallido en 8 ocasiones, la tarjeta restara bloqueada por la operadora, y debera
recurrir a ella.
Si desea salir del programa
Pulse EXIT

8.4 Men Principal


En este momento el mdem se encuentra en estado espera a llamada y listo para
servicio. El men principal se nos presenta de la siguiente manera:

Reloj del sistema

Standby

Acceso a la
Agenda

Transferencia
de datos

Aplicacin extra
(calculadora)

Libre

Informacin del
mdem y SIM

Salir del
Programa
Mensajes (SMS)

Registro de llamadas

Figura 42. Formulario Men Principal

Pulsando en el botn correspondiente se accede a los diferentes submens.

Esta pantalla puede estar en STANDBY, esto es, una vez no necesitamos operar
con la aplicacin pero queremos seguir conectados al servicio, sta se minimizar y
aparecer un icono en la barra de tareas para su posterior reapertura, y que aun estando
minimizado nos notificar los eventos que se produzcan, ya sea un llamada o un nuevo
mensaje recibido.

Figura 43. Programa en STANDBY

82

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

8.5 Agenda Telefnica


Es posible almacenar nmeros de telfono y los nombres asociados a ellos en la
memoria del telfono (agenda interna de telfono) o en la tarjeta SIM (agenda SIM del
telfono).
Bsqueda
Seleccin de
memoria

Nueva Entrada

Salir de la
agenda
Figura 44. Men AGENDA

Puede acceder a la agenda desde


el men principal
la transferencia de datos
el envo de mensajes SMS.
Seleccin de la agenda de telfonos (Memoria)
Pulse uno de los dos botones
o ME (corresponde a la memoria del modulo)
o SIM (memoria de la tarjeta)
Memorizacin de un nmero de telfono con un nombre (nueva entrada)
Es posible memorizar nombres y nmeros de telfono en la agenda interna de
telfonos o en la agenda SIM.

Pulse NUEVA ENTRADA, y aparecer una nueva pantalla

Campos
de texto

Cancelar

Insertar
Figura 45. Nueva Entrada AGENDA

Rellene los campos POSICIN, NMERO Y NOMBRE


Pulse INSERTAR para grabar el nuevo registro
Pulse CANCELAR para anular el proceso
83

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

Bsqueda de un nombre y un numero de telfono


Pulse
Bsqueda por nombre si desea buscar por la inicial o el nombre del destinatario
Bsqueda por posicin si desea visualizar una posicin concreta o un rango de
posiciones

Dependiendo de la opcin seleccionada le aparecer una de estas dos ventanas.

Introduzca el texto de bsqueda en la caja de texto


Pulse OK

Texto de
bsqueda

Iniciar

Nueva
bsquela

Salir
Figura 46. Bsqueda por Nombre

Figura 47. Bsqueda por Posicin

Si existen resultados se presentarn como se muestra a continuacin, en caso


contrario parecer un mensaje de aviso comentando la incidencia

Resultados de
la bsqueda

Figura 48. Resultados de la Bsqueda

Si desea realizar otra bsqueda pulse


NUEVA BSQUEDA, y la bsqueda y resultados anteriores desaparecern.
Para salir de la agenda pulse
SALIR

84

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

8.6 Mensajes De Texto (SMS)


Se presenta el siguiente formulario.

Escritura y
almacenamiento

Leer, borrar y reenviar


msj. desde la memoria

configuracin

retorno al men
Figura 49. Men de Mensajes SMS

Las opciones que dispone este Men son:


LEER mensaje (para leer, borrar o reenviar un mensaje)
ESCRIBIR mensaje (para guardarlo o enviarlo)
CONFIG. Mensajes (establecer los parmetros de los mensajes)
Volver al MEN PRINCIPAL
Lectura de un mensaje
Si proviene de una notificacin
Pulse LEER AHORA,
CANCELAR si desea leerlo mas tarde
Si se encuentra en el MEN PRINCIPAL
Acceda al men SMS
Pulse LEER MENSAJE
Pulse SIGUIENTE para leer el prximo mensaje (2)
Pulse ANTERIOR para leer el mensaje anterior (1)

Leer
Ahora

Cancelar
(1)

(2)

Figura 50. Notificacin mensaje recibido Borrar

Reenviar
Men
Figura 51.Ventana LEER Mensaje

Borrar un mensaje
Acceda al men SMS
Pulse leer mensaje
Una vez mostrado el mensaje a borrar
Pulse borrar mensaje

85

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

Escribir un mensaje

Texto del mensaje

Enviar
Guardar

Cancelar y volver al men SMS


Figura 52. Escribir mensaje

Acceda al men SMS


Pulse ESCRIBIR mensaje
Escriba el texto

SI PULSA
GUARDAR, se guardar en la primera posicin libre de memoria
CANCELAR, se borra el texto y se retorna al MEN-SMS
ENVIAR, se abrir formulario de envo y deber:
o *introducir el nmero del destinatario y
o *pulsar ENVIAR, o
o *CANCELAR, para anular el envo

Num. Destino

Acceso a la agenda

Cancelar envo

Enviar mensaje
Figura 53. Enviar mensaje

Reenviar un mensaje
Acceda al men SMS
Pulse leer mensaje
Una vez mostrado el mensaje a reenviar
Pulse REENVIAR mensaje
Se abrir un formulario de envo y deber:
o *introducir el nmero del destinatario y
o *pulsar ENVIAR, o
o *CANCELAR, para anular el envo

86

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

Configurar los mensajes

Formato
Memoria
Validar
cambios

Centro
Servicio

Permanencia

Modificar
Men
Figura 54. Ventana de Configuracin de los mensajes

Acceda al men SMS


Pulse CONFIG. Mensajes
Pulse el botn MODIFICAR del parmetro que desea cambiar
Modifique su valor
Pulse OK para validar los cambios
Repita el proceso tantas veces como desee cambiar la configuracin
Pulse SMS-MEN para retornar al men de los mensajes

Se puede configurar:
*Almacenamiento (mem1,mem2,mem3, ME o SIM)
Configura las memorias para el tratamiento de los mensajes. Seleccin entre ME (memoria
del MODEM GM29) y SIM (tarjeta)
La memoria 1 corresponde a la lectura y borrado de mensajes.
La memoria 2 para la escritura y envo.
La memoria 3 almacena los nuevos mensajes recibidos.
*Formato (tipo texto o PDU)
Determina el tipo de mensaje, modo texto o modo binario.
*Numero del centro de mensajes
Configura el nmero del centro que nos proporciona el servicio de mensajera SMS.
*Permanencia
Establece el tiempo mximo de validez de los mensajes. El tiempo mximo de
permanencia en el centro servidor hasta que sea posible el envo al destinatario (el envo
depende de la disponibilidad del receptor)

87

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

8.7 TRANSFERENCIA DE DATOS


Se accede a travs del Men Principal, pulsando TRANSFER CSD-HSCSD.
(1)

(5)

(2)

(6)

(3)

(7)

(4)

(8)

(9)

(10)

(13)
(11)

(14)
(12)

Figura 55. Formulario de Transferencia de datos CSD-HSCSD

Cuando reciba una llamada de peticin de transferencia de datos le aparecer por


pantalla el siguiente dilogo conjuntamente con el formulario de transferencia de datos

Figura 56. Notificacin de llamada entrante

Aceptar la llamada
Pulse Aceptar Llamada (5)
Rechazar la llamada
Pulse rechazar Llamada (8)
Para Establecer una comunicacin de transferencia de datos, acceda al
formulario a travs del Men principal:
Introduzca el nmero del destinatario(2)
Puede acceder a la Agenda si pulsa el botn (3)
Pulse Establecer conexin (1)
Finalizar la comunicacin
Pulse Colgar (4)
(si ha establecido una comunicacin, recuerde estar en modo comandos)

88

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

Para retornar al men principal


Pulse MEN (7)
ENVO Y RECEPCIN DE DATOS
Una vez establecida comunicacin con el interlocutor, puede realizar diversas acciones
Enviar datos
Introduzca el texto a enviar en la caja de texto (11)
Pulse ENVIAR (13)
Recibir Datos
Aparecern en la caja de texto (12) los datos recibidos
Acceder al modo comandos
Pulse COMMAND MODE (9)
Retornar al modo en lnea
Pulse ONLINE DATA MODE (10)
Guardar datos
Pulse GUARDAR (14) y los datos recibidos se guardarn en un fichero de texto.

Para configurar los parmetros de la transferencia CSD

(1)

(1)

(1)
(1)

(1)
Figura 57. Configuracin CSD-HSCSD

Pulse OPCIONES del formulario de transferencia CSD


Pulse el botn MODIFICAR del parmetro que desea cambiar
Modifique su valor
Pulse OK para validar los cambios
Repita el proceso tantas veces como desee cambiar la configuracin
Pulse VOLVER A CSD-HSCSD para retornar a la pantalla de transferencias

Se puede configurar:
*Velocidad de conexin
Establece o bien el modo automtico de velocidad (velocidad segn posibilidades) o bien
un valor de los mostrados en la lista desplegable.

89

Comunicacin Punto a Punto Va Mdem GSM

Manual de Usuario

*Modo de llamada (Tono o Pulsos)


Puede seleccionar el formato de llamada, por tonos o por pulsos.
*Modo de respuesta (tipo Manual o Automtico)
Determina el sistema de actuacin a una llamada entrante. Bien modo manual o
automtico, en cuyo caso se deber especificar el numero de RINGS que deben acontecer
antes de aceptar dicha llamada.
*Carcter de la secuencia de escape
Establece el carcter que formara la secuencia de escape (+++AT, donde + es el carcter de
escape). Esta secuencia nos permitir pasar de modo en lnea a modo comandos.

8.8. Registro De Llamadas


El formulario que se presenta es el siguiente:
Ll. Perdidas
Ll. Enviadas

Ll. Recibidas
Resultados

Men Principal
Figura 58. Formulario de lectura del Registro de Llamadas

Para acceder al registro de llamadas a travs del men principal


Pulse REGISTRO DE LLAMADAS
Tiene la opcin de acceder a 3 registros (pulse el botn correspondiente a cada uno
de ellos para visualizar los resultados).
Pulsando Llamadas enviadas
visualizar una lista de los 30 ltimos nmeros de telfono a los que ha llamado o ha
intentado llamar ms recientemente, as como la fecha y la hora de cada llamada.
Pulsando Llamadas recibidas
visualizar una lista de los 30 ltimos nmeros de telfono de los que ha aceptado llamadas
ms recientemente, as como la fecha y la hora de cada llamada.
Pulsando Llamadas perdidas
visualizar una lista de los 30 ltimos nmeros de telfono desde los que alguien ha
intentado llamarle sin xito, as como la fecha y la hora de cada llamada.

Pulsando MENU retornar al Men Principal.


90

Comunicacin Punto a Punto Va Mdem GSM

9. CONCLUSIONES

91

Conclusiones

Comunicacin Punto a Punto Va Mdem GSM

Conclusiones

CONCLUSIONES
El objetivo de comunicar 2 terminales, sean mbos dos mdems GSM o un mdem
GSM y un telfono mvil, se ha conseguido establecer.
Las posibilidades que nos proporciona la red inalmbrica GSM ha permitido
establecer un tipo de comunicacin mvil que anteriormente no hubiese sido imposible
realizar.
Hace unos aos estbamos sometidos a un sistema fijo, esttico. El sistema
convencional de comunicacin telefnica limitaba las comunicaciones a la conexin de
una toma fija. sta poda o no existir, a causa de imposibilidades geogrficas, en aquellos
lugares donde era complicado el acceso y establecimiento de los sistemas de cableado y
centralitas (valles, montaas, etc).
Tambin exista la limitacin de que las comunicaciones deban hacerse desde dos
lugares concretos, estticos, siendo imposible la movilidad de los interlocutores.
Con la implantacin del sistema GSM y de las diferentes subestaciones que
proporcionan servicio o cobertura (actualmente existe cobertura GSM en el 87 % del
estado espaol y se permite la interaccin con el resto de redes mundiales) las
comunicaciones son mviles. Esto es, podremos realizar cualquier tipo de comunicacin
desde una oficina, un medio de transporte en movimiento, nuestro lugar de residencia o
vacaciones, y en lugares donde la red fija convencional no tiene alcance (alto de una
montaa, valle, etc).

Para conseguir dichas comunicaciones, se ha tenido que analizar los diferentes


sistemas de comunicacin que la red GSM permite para evaluar el sistema ms adecuado a
nuestro propsito. Entre ellos se ha optado por el servicio de mensajes cortos y la
trasferencia de datos CSD.

Adems de las comunicaciones entre interlocutores se ha debido estudiar el


funcionamiento del terminal que nos permita dichas comunicaciones. El mdem GSM
GM29 trabaja, como el 99% de los mdems convencionales, mediante comandos AT o
Hayes.
La metodologa de envo y recepcin de diferentes tramas (compuestas por el
comando AT correspond iente a cada accin a ejecutar ms los parmetros que lo
componen y diversos caracteres de control) ha sido la base de este estudio. Posteriormente
se deban tratar las respuestas que el mdem enviaba a nuestras instrucciones conforme los
resultados esperados.
La recepcin y anlisis de dichas respuestas (de diferentes formatos) ha sido la
tarea principal para el programador, ya que la no existencia de un formato general ha
generado que se deba realizar un tratamiento especial a cada respuesta.

La nter actuacin con el mdem se deba realizar mediante el puerto serie (RS232),
el cual se ha debido estudiar con anterioridad para conocer su funcionamiento.
92

Comunicacin Punto a Punto Va Mdem GSM

Conclusiones

La implementacin de estas comunicaciones ha sido realizada mediante el lenguaje


de programacin VISUAL BASIC.
El desconocimiento por parte del programador de este lenguaje antes de este
proyecto, provoc que debiera estudiarlo en profundidad con tal de llevar a cabo la
programacin. La fuente de aprendizaje fueron diferentes libros los cuales quedan
detallados en la bibliografa correspondiente a este proyecto.
Trabajar con VISUAL BASIC facilita al programador que el usuario final pueda
disponer de una interfaz simple, clara y sencilla de comprender y utilizar. Mediante los
diferentes controles empleados (botones, cajas de texto, etc) el usuario puede ejecutar los
diferente sistemas de comunicacin sin necesidad de conocer la metodologa de
funcionamiento de los comandos AT.
La aplicacin generada en este proyecto puede tener suma importancia en aspectos
como el control remoto de procesos, tanto a nivel informativo como a nivel de actuacin, o
el intercambio de informacin desde recnditos lugares.
La gestin de alarmas poda ser una de ellas. La posibilidad de ser alertados
mediante un mensaje SMS de cualquier incidencia respecto a nuestro trabajo, anomalas
varias, error en un proceso automatizado, vlvula defectuosa, necesidad de reposicin de
stock ..., podra considerarse tarea de nuestra aplicacin.
Tambin puede sernos til para mantenernos informados peridicamente de una
serie de datos que un dispositivo (por ejemplo un sensor) capte desde algn lugar donde no
exista red telefnica convencional o como auxiliar en caso de que sta fallase. Podra ser el
caso de un proceso automatizado o estaciones meteorolgicas a altitudes elevadas.

93

Comunicacin Punto a Punto Va Mdem GSM

10. CDIGO FUENTE

94

Cdigo Fuente

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

CDIGO FUENTE
10.1 Introduccin
En este apartadao incluiremos el cdigo fuente redactado para la ejecucin de la
aplicacin.
Presentamos el cdigo comentado extensamente haciendo referencia a las
particularidades y evolucin del mismo.

10.2 Cdigo
Divideremos el cdigo en 2 partes: mdulos de formulario y mdulos estndar.
La estructura de presentacin ser la compuesta por el diseo grfico de cada uno
de los mdulos de formulario (dado el carcter visual del lenguaje de programacin
utilizado,VISUAL BASIC) y el cdigo asociado a dicho mdulo y a los controles que lo
componen.
En los mdulos estndar se incluirn las acciones y funciones generales, que
pueden ser ejecutadas desde cualquier mdulo de formulario.

95

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.1 FORMULARIO 00.(PRESENTATION.FRM)


PRESENTACIN DEL PROGRAMA

Figura 59. PRESENTATION.frm

'SE CARGA EL FORMULARIO. SE PRESENTAN LAS DIFERENTES ETIQUETAS


Private Sub Form_Load()
lblVersion.Caption = "Versin " & App.Major & "." & App.Minor & "." &
App.Revision
lblProductName.Caption = App.Title
End Sub
************************************************************************
'AL PULSAR EL BOTN SE VISUALIZA EL FORMULARIO DE CONFIGURACIN DEL
PUERTO SERIE Y DEL FORMULARIO DE CONTROL DE TRAMAS DE ENVO-RECEPCION
Private Sub cmdOK_Click()
Form01.Visible = True
Form21.Visible = True
Unload Me
End Sub
************************************************************************

96

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.2 FORMULARIO 01.(COM_PORT_CONFIG.FRM)


CONFIGURACIN DEL PUERTO SERIE

Figura 60. COM_PORT_CONFIG.frm

'DECLARACION DE VARIABLES LOCALES DE FORMULARIO


Private port As Integer
Private baud As String
Private parity As String
Private databits As String
Private stopbits As String
************************************************************************
'CARGA DEL FORMULARIO
Private Sub Form_Load()
DisableX Form01
'se deshabilita el botn CERRAR del formulario
GET_SETTINGS
VIEW_CONFIGURATION
End Sub
************************************************************************
'ADQUISICION DE INFORMACIN DEL REGISTRO DE WINDOWS
'DE LA ULTIMA CONFIGURACIN UTILIZADA
Private Sub GET_SETTINGS()
port = GetSetting(App.Title, "Mscomm", "puerto", 1)
baud = GetSetting(App.Title, "Mscomm", "baudios", "9600")
parity = GetSetting(App.Title, "Mscomm", "paridad", "NONE")
databits = GetSetting(App.Title, "Mscomm", "bitscar", "8")
stopbits = GetSetting(App.Title, "Mscomm", "bitsparada", "1")
End Sub
************************************************************************
'VISUALIZACION EN LAS LISTAS DESPLEGABLES DE LA ULTIMA CONFIG UTILIZADA
Private Sub VIEW_CONFIGURATION()
Combo_Port.Text = "COM" & port
Combo_Baudrate.Text = baud

97

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

Combo_Parity.Text = parity
Combo_DataBits.Text = databits
Combo_StopBits.Text = stopbits
End Sub
************************************************************************
'SE GUARDAN LOS CAMBIOS EFECTUADOS EN LAS LISTAS DESPLEGABLES
Private Sub cmdSaveChanges_Click()
If MSComm1.PortOpen = True Then
'confirmacin si puerto esta abierto
MsgBox ("cierra primero el puerto")
Exit Sub
'salida de la rutina
End If
'se guardan los cambios en las variables correspondientes
port = Mid(Combo_Port.Text, 4)
baud = Combo_Baudrate.Text
parity = Combo_Parity.Text
databits = Combo_DataBits.Text
stopbits = Combo_StopBits.Text
End Sub
************************************************************************
'SE CARGA LA CONFIGURACIN PREDETERMINADA(RECOMENDADA POR EL FABRICANTE)
Private Sub cmdDefaultConfig_Click()
Combo_Port.Text = "COM1"
Combo_Baudrate.Text = "9600"
Combo_Parity.Text = "NONE"
Combo_DataBits.Text = "8"
Combo_StopBits.Text = "1"
End Sub
************************************************************************
'SE CONFIGURA Y SE ABRE EL PUERTO SERIE. SE TRATAN LOS POSIBLES ERRORES
Private Sub cmdOpenPort_Click()
On Error GoTo treat_errors
'tratamiento de errores
PORT_CONFIG
'configuracin del puerto serie
MSComm1.PortOpen = True
'abrimos el puerto
cmdOK.Enabled = True
'permitimos el acceso al siguiente form
GoTo salir
treat_errors:
MsgBox ("Error al intentar abrir COM") 'mensajes de error
detectados
MsgBox ("Error detectado por Visual Basic: " + Err.Description)
salir:
End Sub
************************************************************************
'CONFIGURACIN DEL PUERTO SERIE
Private Sub PORT_CONFIG()
Select Case parity
Case "NONE"
parity = "N"
Case "ODD"
parity = "O"
Case "EVEN"
parity = "E"
End Select

seleccin de paridad

With MSComm1
se configura Mscomm
.InputLen = 0
.InputMode = comInputModeText

98

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

.RThreshold = 1
.SThreshold = 1
.Handshaking = comNone
.InBufferSize = 1024
.OutBufferSize = 512
.Settings = baud + "," + parity + "," + databits + "," + stopbits
.CommPort = port
End With
End Sub
************************************************************************
'SE CIERRA EL PUERTO SERIE. SE TRATAN LOS POSIBLES ERRORES
Private Sub cmdClosePort_Click()
On Error GoTo treat_errors
'tratamiento de errores
MSComm1.PortOpen = False
'se cierra puerto serie
cmdOK.Enabled = False
'botn OK deshabilitado
GoTo salir
treat_errors:
MsgBox ("Error al intentar cerrar COM")
'mensajes de error
detectados
MsgBox ("Error detectado por Visual Basic: " + Err.Description)
salir:
End Sub
************************************************************************
'ENVO DE LA TRAMA DE MODO DE NOTIFICACIN DE ERRORES Y SE TRATA LA
RESPUESTA OBTENIDA + ENVO DE LA TRAMA DE CONTROL DEL CDIGO PIN
Private Sub cmdOK_Click()
'trama MOBILE_EQUIPMENT_ERROR,selecciona el modo de anuncio de errores
str = "AT+CMEE=2" + vbCr
TRAMA
'envo
MOBILE_EQUIPMENT_ERROR
'tratamiento de la respuesta
PIN_CONTROL
'envo AT+CPIN? + tratamiento respuesta
End Sub
************************************************************************
'SALIDA DEL PROGRAMA
Private Sub cmdEXIT_Click()
If MSComm1.PortOpen = True Then _
MSComm1.PortOpen = False
'se cierra el puerto si esta abierto
End
End Sub
************************************************************************
'CIERRE DEL FORMULARIO
Private Sub Form_Unload(Cancel As Integer)
SAVE_SETTINGS
End Sub
************************************************************************
'SE SALVAN LOS CAMBIOS EFECTUADOS EN LA CONFIGURACIN DEL PUERTO SERIE EN
EL REGISTRO DE WINDOWS
Private Sub SAVE_SETTINGS()
SaveSetting App.Title, "Mscomm", "puerto", port
SaveSetting App.Title, "Mscomm", "baudios", baud
SaveSetting App.Title, "Mscomm", "paridad", parity
SaveSetting App.Title, "Mscomm", "bitscar", databits
SaveSetting App.Title, "Mscomm", "bitsparada", stopbits
End Sub
************************************************************************

99

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'CONTROL DEL EVENTO ONCOMM A TRAVS DE LA PROPIEDAD COMMEVENT


'MENSAJES DE AVISO Y ACTUACIONES A CADA UNO DE ELLOS
Public Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvSend
Form21.Text_StateSending.Text = "CORRECTO"
Case comEvReceive
READ_BUFFER

'lectura del buffer

Case comEvRing
'INCOMPATIBILIDAD VISUAL BASIC - ERICSSON GM29
Case comEvCD
MsgBox ("Cambio en la lnea CD.")
Case comEvCTS
MsgBox ("Cambio en la lnea CTS.")
Case comEvDSR
MsgBox ("Cambio en la lnea DSR.")
' Errores
Case comBreak
MsgBox ("Se ha recibido una interrupcin.")
Case comEventFrame
MsgBox ("Error de trama.")
Case comEventOverrun
MsgBox ("Puerto desbordado. No se ley un carcter desde el
hardware antes de llegar otro carcter y el primero se ha perdido!!")
Case comEventRxOver
MsgBox ("Desbordamiento del bfer de recepcin.No hay espacio
suficiente en el bfer de recepcin.")
Case comEventRxParity
MsgBox ("Error de paridad.")
Case comEventTxFull
MsgBox ("Bfer de transmisin lleno. Se ha intentado colocar un
carcter ms en la cola mientras el bfer de transmisin estaba lleno.")
Case comEventDCB
MsgBox ("Error inesperado al recuperar el DCB.")
End Select
End Sub
************************************************************************

'LECTURA DEL BUFFER DEL PUERTO SERIE


Private Sub READ_BUFFER()
strBUFFER = strBUFFER & MSComm1.Input
Form21.Text_Response.Text = strBUFFER

'visualizacin del buffer

'En modo online, la lectura del buffer se visualiza en Text_CSDReceived


If online_data = True Then
Form06.Text_CSDReceived.Text = Form06.Text_CSDReceived.Text & strBUFFER

100

Comunicacin Punto a Punto Va Mdem GSM


strBUFFER = ""
End If

Cdigo Fuente

'se vacia la variable que recoge contenido del buffer

'POLLING PARA DENOTAR UNA LLAMADA ENTRANTE


RING
'POLLING PARA AVISAR DE NUEVO MENSAJE RECIBIDO
NEW_SMS
End Sub
************************************************************************
'TIMER CONTROLADOR DEL TIMPO DE ESPERA PARA RECIBIR RESPUESTA
'configurado para que se jecute cada segundo
Private Sub Timer_Mscomm_Timer()
timeout_cont = timeout_cont + 1
'actualizacin cont timeout
If timeout_cont = 70 Then
'70 seg maximo tiempo de espera
Timer_Mscomm.Enabled = False
'deshabilitamos timer
timeout_cont = 0
'reinicializamos contador
timeout = True
'se ha producido timeout
End If
End Sub
************************************************************************

101

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.3 FORMULARIO 02.(PIN_CODE.FRM)


FORMULARIO DE CONTROL DE ACCESO MEDIANTE CDIGO PIN

Figura 61. PIN_CODE.FRM

'CARGA DEL FORMULARIO


Private Sub Form_Load()
Form01.Visible = False 'se hace invisible el formulario 01
DisableX Form02
'se deshabilita el botn CERRAR del form
TEXT_PIN.Text = ""
'se borra el texto de la caja TEXT_PIN
End Sub
************************************************************************
'CDIGO PIN SOLO ADMITE VALORES NUMRICOS. TAMBIN SE PERMITE LA TECLA
BORRAR (8)
Private Sub TEXT_PIN_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'ENVO DE LA TRAMA DEL CDIGO PIN Y TRATAMIENTO DE LA RESPUESTA OBTENIDA
Private Sub cmdOK_PIN_Click()
Dim PIN As String
If TEXT_PIN.Text = "" Then
'confirmacin si TEXT_PIN en blanco
MsgBox ("INTRODUZCA CDIGO PIN EN LA CAJA DE TEXTO")
Exit Sub
'se sale de la rutina
End If
PIN = Chr(34) + TEXT_PIN.Text + Chr(34) 'cdigo PIN entre comillas
str = "AT+CPIN=" + PIN + vbCr
TRAMA
'envo de la trama
PIN_CODE
'tratamiento de la respuesta
End Sub
************************************************************************
'SE SALE DEL PROGRAMA
Private Sub cmdEXIT_PIN_Click()
End
End Sub
************************************************************************

102

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.4 FORMULARIO 03.(PUK_CODE.FRM)


FORMULARIO DE INTRODUCCIN DEL CDIGO PUK

Figura 62. PUK_CODE.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
Form01.Visible = False
'se hace invisible el formulario 01
Unload Form02
'se cierra el formulario 02
DisableX Form03
'se deshabilita el botn CERRAR del form
TEXT_PUK.Text = ""
'se borra el texto de la caja TEXT_PIN
TEXT_PIN.Text = ""
'se borra el texto de la caja TEXT_PUK
End Sub
************************************************************************
'CDIGO PUK SOLO ADMITE VALORES NUMRICOS. SE PERMITE LA TECLA BORRAR (8)
Private Sub TEXT_PUK_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'CDIGO PIN SOLO ADMITE VALORES NUMRICOS. SE PERMITE LA TECLA BORRAR (8)
Private Sub TEXT_PIN_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'ENVO DE LA TRAMA DEL CDIGO PUK Y TRATAMIENTO DE LA RESPUESTA OBTENIDA
Private Sub cmdOK_Click()
Dim PUK As String * 10
Dim PIN As String
PUK = Chr(34) + TEXT_PUK.Text + Chr(34)
PIN = Chr(34) + TEXT_PIN.Text + Chr(34)
str = "AT+CPIN=" + PUK + "," + PIN + vbCr
TRAMA
'envo trama PUK
PUK_PIN_CODES
'tratamiento de la respuesta
End Sub
************************************************************************
'SE SALE DEL PROGRAMA
Private Sub cmdEXIT_Click()
End
End Sub
************************************************************************

103

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.5 FORMULARIO 04.(MEN.FRM)


FORMULARIO DEL MEN PRINCIPAL

Figura 63. MENU.FRM

Figura 64. Programa en STANDBY

'DECLARACION DE VARIABLES LOCALES PARA ESTE FORMULARIO


Private NUMFICH As Integer
Private ruta As String
Private nid As NOTIFYICONDATA
************************************************************************
'SE CARGA EL FORMULARIO DEL MEN PRINCIPAL
Private Sub Form_Load()
DisableX Form04
'se deshabilita el botn CERRAR del form.
UNLOAD_FORMS
SETVALUES_NOTFYICONDATA
READ_ONCE_CONFIGURATION_FILE
End Sub
************************************************************************
'SE CIERRAN EL RESTO DE FORMULARIOS ABIERTOS
Private Sub UNLOAD_FORMS()
Unload Form02
Unload Form03
Unload Form05
Unload Form06
Unload Form08
Unload Form09
Unload Form10
Unload Form11
Unload Form13

104

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

Unload Form15
Unload Form16
Unload Form17
Unload Form18
Unload Form19
Unload Form20
End Sub
************************************************************************

'ESTABLECE VALORES PARA EL TIPO NOTIFYICONDATA


Private Sub SETVALUES_NOTFYICONDATA()
With nid
.cbSize = Len(nid)
.hWnd = Me.hWnd
.uId = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon
.szTip = "MDEM GSM GM29" & vbNullChar
End With
End Sub
************************************************************************
'LECTURA DEL FICHERO DE CONFIGURACIN DEL PROGRAMA
Private Sub READ_ONCE_CONFIGURATION_FILE()
Static cont_reg As Integer
If cont_reg <> 1 Then
'solo la primera vez que carguemos form04
READ_CONFIGURATION_FILE
cont_reg = 1
End If
End Sub
************************************************************************
'LECTURA DEL FICHERO DE CONFIGURACIN DEL PROGRAMA
Private Sub READ_CONFIGURATION_FILE()
Dim a As String
'variable local de la accin
NUMFICH = FreeFile
ruta = CurDir
ruta = ruta + "\CONFIGURACIN.alb"
a = Dir(ruta)

'posicin libre
'directorio actual
'CONFIGURACIN.alb = fichero

If (a <> "") Then


'el fichero s existe
Open ruta For Random As #NUMFICH Len = Len(config) 'abrir fichero
Get #NUMFICH, 1, config
'se recoge la informacin
Close NUMFICH
'se cierra el fichero
SEND_CONFIGURATION
'envo de tramas
Else
'si no existe
LOAD_DEFAULT_CONFIGURATION
'se carga la config. predeterminada
SEND_CONFIGURATION
'envo de tramas
End If
End Sub
************************************************************************
'SE CARGA LA CONFIGURACIN PREDETERMINADA
Private Sub LOAD_DEFAULT_CONFIGURATION()
config.mem1 = Chr(34) + "SM" + Chr(34)
config.mem2 = Chr(34) + "SM" + Chr(34)
config.mem3 = Chr(34) + "SM" + Chr(34)
config.MsgFormat = "1"

105

'memoria1 = tarjeta SIM


'memoria2 = tarjeta SIM
'memoria3 = tarjeta SIM
'formato mensaje= TEXTO

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

config.PhoneBook = Chr(34) + "SM" + Chr(34) 'agenda telfonos = SIM


config.SERV_CENT = "+34607003110"
'ncentro msjes vodafone
config.time_max = "17,167,0,0"
'tiempo max permanencia
config.dialling = "ATT"
'llamada por tonos
config.answer_mode = "0"
'contestacion manual
config.bearer_Service = "0"
'seleccin automat. bps
config.escape_sequence = "43"
'char de escape = 43
End Sub
************************************************************************
'ENVO DE TRAMAS DE CONFIGURACIN
Private Sub SEND_CONFIGURATION()
'trama CLOCK , establece la fecha y hora. La coge del reloj de Windows
Dim FECHA As String
Dim HORA As String
Dim clock As String
FECHA = Date
HORA = Time
clock = Chr(34) + FECHA + "," + HORA + "+00" + Chr(34)
str = "AT+CCLK=" + clock + vbCr
TRAMA
'envo de la trama SET_CLOCK
SET_CLOCK
'tratamiento de la respuesta
'trama SERVICE CENTRE ADRESS,establece el nmero del centro de mensajes
str = "AT+CSCA=" + Chr(34) + config.SERV_CENT + Chr(34) + vbCr
TRAMA
'envo
SERVICE_CENTRE_ADRESS
'tratamiento de la respuesta
'trama MESSAGE FORMAT, establece el tipo de mensajes
str = "AT+CMGF=" + config.MsgFormat + vbCr
TRAMA
'envo
MESSAGE_FORMAT
'tratamiento de la respuesta
'trama PHONEBOOK STORAGE,establece el lugar de la agenda telefonica
str = "AT+CPBS=" + config.PhoneBook + vbCr
TRAMA
'envo
PHONEBOOK_STORAGE
'tratamiento de la respuesta
'trama MESSAGE TEXT TIME MAX, configura el tiempo maximo de
almacenamiento de mensajes
str = "AT+CSMP=" + config.time_max + vbCr
TRAMA
'envo
MSGTXT_TIME_MAX
'tratamiento de la respuesta
'trama SELECT DIALLING, selecciona el modo de llamada
str = config.dialling + vbCr
TRAMA
'envo
SELECT_DIALLING
'tratamiento de la respuesta
'trama AUTOMATIC ANSWER CONTROL, configura el modo de respuesta de
'llamada
str = "ATS0=" + config.answer_mode + vbCr
TRAMA
'envo
AUTOMATIC_ANSWER_CONTROL
'tratamiento de la respuesta

'trama SELECT BEARER SERVICE,configura la velocidad de la conexin


str = "AT+CBST=" + config.bearer_Service + ",0,1" + vbCr
TRAMA
'envo
SELECT_BEARER_SERVICE
'tratamiento de la respuesta

106

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'trama ESCAPE SEQUENCE CHARACTER, configura el carcter de escape del


'modo online data mode
str = "ATS2=" + config.escape_sequence + vbCr
TRAMA
'envo
ESCAPE_SEQUENCE_CHARACTER
'tratamiento de la respuesta
'trama NEW MESSAGE INDICATION, configura el modo de alerta al recibir un
nuevo mensaje
str = "AT+CNMI=3,1,0,0" + vbCr
TRAMA
'envo
NEWMSG_INDICATION
'tratamiento de la respuesta
'trama PREFERRED MESSAGE STORAGE,selecciona las diferentes memorias para
'los diferentes acciones con los mensajes. Se trata respuesta obtenida
PREFERRED_MSG_STORAGE
End Sub
************************************************************************
'PRESENTACION DE LA HORA ACTUAL
Private Sub Timer_clock_Timer()
Lblclock.Caption = Time
End Sub
************************************************************************
'ACCESO A LA AGENDA DE TELFONOS
Private Sub cmdPhoneBookMenu_Click()
Form08.Visible = True
End Sub
************************************************************************
'ACCESO AL MEN DE LOS MENSAJES SMS
Private Sub CmdSMSMEN_Click()
Form13.Visible = True
End Sub
************************************************************************
'ACCESO A LA TRANSFERENCIA CSD
Private Sub cmdCSDMEN_Click()
Form06.Visible = True
End Sub
************************************************************************
'ACCESO A LA CALCULADORA (aplicacin extra)
Private Sub cmdCALC_Click()
Dim vr As Long
Dim aplic As String
On Error GoTo treat_errors
'deteccion de errores
aplic = CurDir
aplic = aplic + "\calc\CALCDEF.EXE"
'calculadora de inf.ind. 1
vr = Shell(aplic, vbNormalFocus)
'se ejecuta la aplicacion
Exit Sub
treat_errors:
MsgBox Err.Description 'mensaje de error detectado
End Sub
************************************************************************
'ACCESO AL REGISTRO DE LLAMADAS
Private Sub cmdCallRegister_Click()
Form05.Visible = True
End Sub
************************************************************************

107

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'INFORMACIN ACERCA DEL MDEM Y LA TARGETA SIM


Private Sub cmdABOUTmdem_Click()
Form20.Visible = True
ABOUT_MODEM
End Sub
************************************************************************
'ESCONDER EL FORMULARIO.DEJARLO EN STANDBY
Private Sub cmdSTANDBY_Click()
Me.Hide
'esconder formulario
Shell_NotifyIcon NIM_ADD, nid
'mostrar icono en barra de tareas
End Sub
************************************************************************
'AL FINALIZAR PROGRAMA ELIMINAR ICONO
Private Sub Form_Terminate()
Shell_NotifyIcon NIM_DELETE, nid
End Sub
************************************************************************
'CONTROL DE MOVIMIENTO DEL RATON SOBRE EL FORMULARIO
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Dim lngButtonAction As Long
lngButtonAction = X / Screen.TwipsPerPixelX
If (lngButtonAction = WM_LBUTTONDBLCLK) Then
'doble click botn izquierdo del raton sobre el icono
If Me.Visible = False Then
'si el formulario esta ocultado
Me.Show
'se muestra el formulario
Shell_NotifyIcon NIM_DELETE, nid
'y se borra el icono de
la barra de tareas
End If
End If
End Sub
************************************************************************
'SALIR DEL PROGRAMA
Private Sub cmdEXIT_Click()
Form01.MSComm1.PortOpen = False
'se cierra puerto serie
SAVE_CONFIGURATION_FILE
'se salva la config del programa
End
End Sub
************************************************************************
'SALVAR LA CONFIGURACIN EN EL ARCHIVO
Private Sub SAVE_CONFIGURATION_FILE()
Open ruta For Random As #NUMFICH Len = Len(config)
'abrir fichero
Put #NUMFICH, 1, config
'escribir
Close NUMFICH
'cerrar
End Sub
************************************************************************

108

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.6 FORMULARIO 05.(CALL_REGISTER.FRM)


FORMULARIO DEL REGISTRO DE LLAMADAS

Figura 65. CALL_REG.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
Unload Form04
'se cierra MEN principal
DisableX Form05
'se deshabilita el botn CERRAR del formulario
End Sub
************************************************************************
'PETICIN DE LISTADO DE LLAMADAS REALIZADAS
Private Sub cmdDialledCalls_Click()
call_reg = Chr(34) + "DC" + Chr(34)
'DC = LLAMADAS REALIZADAS
'trama PHONEBOOK STORAGE, selecciona la memoria del registro de llamadas
str = "AT+CPBS=" + call_reg + vbCr
TRAMA
'envo
PHONE_CALL_STORAGE
'tratamiento de la respuesta
'trama PHONEBOOK READ, envia trama y presenta resultados de la lectura
str = "AT+CPBR=1,30" + vbCr
PHONEBOOK_READ (1)
'1=lectura de llamadas
End Sub
************************************************************************
'PETICIN DE LISTADO DE LLAMADAS RECIBIDAS
Private Sub cmdReceiveCalls_Click()
call_reg = Chr(34) + "RC" + Chr(34)
'RC = LLAMADAS RECIBIDAS
str = "AT+CPBS=" + call_reg + vbCr
TRAMA
PHONE_CALL_STORAGE
str = "AT+CPBR=1,30" + vbCr
PHONEBOOK_READ (1)
End Sub
************************************************************************

109

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'PETICIN DE LISTADO DE LLAMADAS NO CONTESTADAS


Private Sub cmdMissedCalls_Click()
call_reg = Chr(34) + "MC" + Chr(34)
'MC = LLAMADAS NO CONTESTADAS
str = "AT+CPBS=" + call_reg + vbCr
TRAMA
PHONE_CALL_STORAGE
str = "AT+CPBR=1,30" + vbCr
PHONEBOOK_READ (1)
End Sub
************************************************************************
'RETORNO AL MEN PRINCIPAL
Private Sub cmdMEN_Click()
Form04.Visible = True
'se hace visible el MEN principal
End Sub
************************************************************************

110

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.7 FORMULARIO 06.(DATA_TRANSFER_CSD_HSCSD.FRM)


FORMULARIO DE TRANSFERENCIA DE DATOS CSD

Figura 66. DATA_TRANSFER_CSD_HSCSD.FRM

'CARGA DEL FORMULARIO


Private Sub Form_Load()
Unload Form04
'se cierran el resto de formularios
Unload Form07
DisableX Form06
'se deshabilita el botn CERRAR del formulario
End Sub
************************************************************************
'SE REALIZA UNA LLAMADA A UN DESTINATARIO ESPECIFICADO
Private Sub cmdDIAL_Click()
Unload Form19
'se cierra el formulario 19 si estaba abierto
'trama DIAL, establece conexin con un destinatario
str = "ATD" + Text_DestinationNumber.Text + vbCr
TRAMA
'envo
ATD
'tratamiento de la respuesta
End Sub
************************************************************************
'EL NUMER0 DE TELFONO DEL DESTINATARIO ES UN VALOR NUMRICO
'TAMBIN SE PERMITE LA TECLA BORRAR (8) Y EL PREFIJO +
Private Sub Text_DestinationNumber_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii <> 43) And (KeyAscii < 48 Or
KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************

111

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'ACCESO A LA AGENDA DE TELFONOS


Private Sub cmdPhoneBook_Click()
Form08.Visible = True
End Sub
************************************************************************
'ACEPTAR LLAMADA ENTRANTE
Private Sub cmdAcceptCall_Click()
Unload Form19
'trama ANSWER, acepta una llamada entrante
str = "ATA" + vbCr
TRAMA
'envo
ANSWER
'tratamiento de la respuesta
End Sub
************************************************************************
'FINALIZAR UNA LLAMADA
Private Sub cmdHangUP_Click()
Unload Form19
'trama HANG UP, finaliza una llamada establecida o un intento de
'conexin y se trata la respuesta obtenida
HANG_UP
End Sub
************************************************************************
'RECHAZAR UNA LLAMADA ENTRANTE
Private Sub cmdRejectCall_Click()
Unload Form19
str = "AT+CHUP" + vbCr
TRAMA
'envo
HANG_UP_CALL
'tratamiento de la respuesta
End Sub
************************************************************************
'SE ACCEDE AL MODO COMANDO
Private Sub cmdCommandMode_Click()
COMMAND_MODE
End Sub
************************************************************************
'SE ACCEDE AL MODO ONLINE DATA MODE
Private Sub cmdOnlineDataMode_Click()
str = "ATO=0" + vbCr
TRAMA
'envo
RETURN_TO_ONLINE_DATA_MODE
'tratamiento de la respuesta
End Sub
************************************************************************
'ENVO DE DATOS EN LA TRNSFERENCIA CSD
Private Sub cmdCSDSend_Click()
'los datos a enviar se colocan en el buffer
Form01.MSComm1.Output = Text_CSDSend.Text + vbCrLf
Text_CSDSend.Text = "" 'se vaca la caja de texto
End Sub
************************************************************************
'GUARDAR DATOS RECIBIDOS
Private Sub CmdSaveCSD_Click()
Dim NUMFICH As Integer
'variables locales de esta accion
Dim ruta As String
NUMFICH = FreeFile
'posicin libre

112

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

ruta = CurDir
'directorio actual
ruta = ruta + "\CSD_RECEIVE.alb "
'CSD_RECEIVE.alb nombre del
fichero
Open ruta For Output As #NUMFICH
'se abre para escritura
Write #NUMFICH, Text_CSDReceived.Text
'se escriben los datos recibidos
Close #NUMFICH
'cierre del fichero
End Sub
************************************************************************
'ACCESO A LA CONFIGURACIN DE LA TRANSFERENCIA CSD
Private Sub cmdCSDconfig_Click()
Unload Form19
Form07.Visible = True
End Sub
************************************************************************
'ACCESO AL MEN PRINCIPAL
Private Sub cmdMEN_Click()
Form04.Visible = True
End Sub
************************************************************************

113

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.8 FORMULARIO 07.(CSD_CONFIGURATION.FRM)


FORMULARIO DE CONFIGURACIN DE LA TRANSFERENCIA CSD

Figura 67. CSD_CONFIGURATION.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
Unload Form06
'se cierra el formulario de CSD
DisableX Form07
'se deshabilita el botn CERRAR del
formulario
LOAD_combo_speed_connection
VIEW_CONFIGURATION
DISABLE_FRAMES
End Sub
************************************************************************
'SE CARGA LA LISTA DESPLEGABLE CON LOS VALORES
Private Sub LOAD_combo_speed_connection()
combo_speed_connection.AddItem ("AUTO SELECTION OF BAUDRATE")
combo_speed_connection.AddItem ("2400 bps V.22bis")
combo_speed_connection.AddItem ("4800 bps V.32")
combo_speed_connection.AddItem ("9600 bps V.32")
combo_speed_connection.AddItem ("9600 bps V.34")
combo_speed_connection.AddItem ("19200 bps V.34")
combo_speed_connection.AddItem ("2400 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("4800 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("9600 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("14400 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("19200 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("28800 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("38400 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("48000 bps V.110 (ISDN)")
combo_speed_connection.AddItem ("56000 bps V.110 (ISDN)")
End Sub
************************************************************************
'SE VISUALIZA LA CONFIGURACIN ACTUAL
Private Sub VIEW_CONFIGURATION()
'velocidad de conexin
Select Case config.bearer_Service
Case "0"
combo_speed_connection.Text = "AUTO SELECTION OF BAUDRATE"

114

Comunicacin Punto a Punto Va Mdem GSM


Case "4"
combo_speed_connection.Text
Case "6"
combo_speed_connection.Text
Case "7"
combo_speed_connection.Text
Case "12"
combo_speed_connection.Text
Case "15"
combo_speed_connection.Text
Case "68"
combo_speed_connection.Text
Case "70"
combo_speed_connection.Text
Case "71"
combo_speed_connection.Text
Case "75"
combo_speed_connection.Text
Case "79"
combo_speed_connection.Text
Case "80"
combo_speed_connection.Text
Case "81"
combo_speed_connection.Text
Case "82"
combo_speed_connection.Text
Case "83"
combo_speed_connection.Text
End Select

Cdigo Fuente

= "2400 bps

V.22bis"

= "4800 bps

V.32"

= "9600 bps

V.32"

= "9600 bps

V.34"

= "19200 bps

V.34"

= "2400 bps

V.110 (ISDN)"

= "4800 bps

V.110 (ISDN)"

= "9600 bps

V.110 (ISDN)"

= "14400 bps

V.110 (ISDN)"

= "19200 bps

V.110 (ISDN)"

= "28800 bps

V.110 (ISDN)"

= "38400 bps

V.110 (ISDN)"

= "48000 bps

V.110 (ISDN)"

= "56000 bps

V.110 (ISDN)"

'modo de llamada
If config.dialling = "ATT" Then
Opt_Tone.Value = True
Else
Opt_Pulse.Value = True
End If

'tonos
'pulsos

'modo de respuesta de llamadas


If config.answer_mode = "0" Then
Opt_Manual_Answer.Value = True
Else
Text_AutoRings.Text = config.answer_mode
Opt_Auto_Answer.Value = True
End If

'modo manual

'modo automatico,
'n de rings

'carcter de escape
Text_EscapeSEQ.Text = config.escape_sequence
End Sub
************************************************************************
'DESHABILITAR CONTROLES
'(de este modo no se pueden modificar valores involuntariamente)
Private Sub DISABLE_FRAMES()
FrmMODE_DIALLING.Enabled = False
cmdOKMODEDIAL.Enabled = False
FrmANSWER.Enabled = False
cmdOKANSWER.Enabled = False
FrmBEARER_SERVICE.Enabled = False
cmdOKBEARSERV.Enabled = False
FrmESCAPESEQ.Enabled = False
cmdOKESCSEQ.Enabled = False

115

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

End Sub
************************************************************************
'MODIFICAR MODO DE RESPUESTA A UNA LLAMADA ENTRANTE
Private Sub cmdModifyANSWER_Click()
FrmANSWER.Enabled = True
cmdOKANSWER.Enabled = True
End Sub
************************************************************************
'SELECCIN DE MODO MANUAL
Private Sub Opt_Manual_Answer_Click()
Text_AutoRings.Text = ""
config.answer_mode = "0"
End Sub
************************************************************************
'SELECCIN DE MODO AUTOMATICO
Private Sub Opt_Auto_Answer_Click()
config.answer_mode = Text_AutoRings.Text
'n rings
End Sub
************************************************************************
'CAPTACIN DEL VALOR DE RINGS
Private Sub Text_AutoRings_Change()
config.answer_mode = Text_AutoRings.Text
'n rings
End Sub
************************************************************************
'NMERO DE RINGS ES UN VALOR NUMRICO DEL 1 AL 7
'TAMBIN SE PERMITE LA TECLA BORRAR (8)
Private Sub Text_AutoRings_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii < 49 Or KeyAscii > 55) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'VALIDAR MODO DE RESPUESTA A UNA LLAMADA ENTRANTE
Private Sub cmdOKANSWER_Click()
FrmANSWER.Enabled = False
cmdOKANSWER.Enabled = False
'trama AUTOMATIC ANSWER CONTROL, configura modo de respuesta de llamada
str = "ATS0=" + config.answer_mode + vbCr
TRAMA
'envo
AUTOMATIC_ANSWER_CONTROL
'tratamiento de la respuesta
End Sub
************************************************************************
'MODIFICAR MODO DE LLAMADA
Private Sub cmdModifyMODEDIAL_Click()
FrmMODE_DIALLING.Enabled = True
cmdOKMODEDIAL.Enabled = True
End Sub
************************************************************************
'SELECCIN DE LLAMADA POR PULSOS
Private Sub Opt_Pulse_Click()
config.dialling = "ATP"

116

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

End Sub
************************************************************************
'SELECCIN DE LLAMADA POR TONOS
Private Sub Opt_Tone_Click()
config.dialling = "ATT"
End Sub
************************************************************************
'VALIDAR MODO DE LLAMADA
Private Sub cmdOKMODEDIAL_Click()
FrmMODE_DIALLING.Enabled = False
cmdOKMODEDIAL.Enabled = False
'trama SELECT DIALLING, selecciona el modo de llamada
str = config.dialling + vbCr
TRAMA
'envo
SELECT_DIALLING
'tratamiento de la respuesta
End Sub
************************************************************************
'MODIFICAR VELOCIDAD DE CONEXIN
Private Sub cmdModifyBEARSERV_Click()
FrmBEARER_SERVICE.Enabled = True
cmdOKBEARSERV.Enabled = True
End Sub
************************************************************************
'SELECCIN DE VELOCIDAD DE CONEXIN
Private Sub combo_speed_connection_Click()
Select Case combo_speed_connection.Text
Case "AUTO SELECTION OF BAUDRATE"
config.bearer_Service = "0"
Case "2400 bps V.22bis"
config.bearer_Service = "4"
Case "4800 bps V.32"
config.bearer_Service = "6"
Case "9600 bps V.32"
config.bearer_Service = "7"
Case "9600 bps V.34"
config.bearer_Service = "12"
Case "19200 bps V.34"
config.bearer_Service = "15"
Case "2400 bps V.110 (ISDN)"
config.bearer_Service = "68"
Case "4800 bps V.110 (ISDN)"
config.bearer_Service = "70"
Case "9600 bps V.110 (ISDN)"
config.bearer_Service = "71"
Case "14400 bps V.110 (ISDN)"
config.bearer_Service = "75"
Case "19200 bps V.110 (ISDN)"
config.bearer_Service = "79"
Case "28800 bps V.110 (ISDN)"
config.bearer_Service = "80"
Case "38400 bps V.110 (ISDN)"
config.bearer_Service = "81"
Case "48000 bps V.110 (ISDN)"
config.bearer_Service = "82"
Case "56000 bps V.110 (ISDN)"
config.bearer_Service = "83"

117

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

End Select
End Sub
************************************************************************
'VALIDAR VELOCIDAD DE CONEXIN
Private Sub cmdOKBEARSERV_Click()
FrmBEARER_SERVICE.Enabled = False
cmdOKBEARSERV.Enabled = False
'trama SELECT BEARER SERVICE, configura la velocidad de la conexin
str = "AT+CBST=" + config.bearer_Service + ",0,1" + vbCr
TRAMA
'envo
SELECT_BEARER_SERVICE
'tratamiento de la respuesta
End Sub
************************************************************************
'MODIFICAR CARCTER DE LA SECUENCIA DE ESCAPE
Private Sub cmdModifyESCSEQ_Click()
FrmESCAPESEQ.Enabled = True
cmdOKESCSEQ.Enabled = True
End Sub
************************************************************************
'CONFIGURACIN DEL CARCTER DE LA SECUENCIA DE ESCAPE
Private Sub Text_EscapeSEQ_Change()
config.escape_sequence = Text_EscapeSEQ.Text
End Sub
************************************************************************
'CARCTER DE ESCAPE ES UN VALOR NUMRICO. SE PERMITE LA TECLA BORRAR (8)
Private Sub Text_EscapeSEQ_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'VALIDAR CARCTER DE LA SECUENCIA DE ESCAPE
Private Sub cmdOKESCSEQ_Click()
FrmESCAPESEQ.Enabled = False
cmdOKESCSEQ.Enabled = False
'trama ESCAPE SEQUENCE CHARACTER, configura el carcter de escape del
'modo online data mode
str = "ATS2=" + config.escape_sequence + vbCr
TRAMA
'envo
ESCAPE_SEQUENCE_CHARACTER
'tratamiento de la respuesta
End Sub
************************************************************************
'RETORNA AL FORMULARIO CSD
Private Sub cmdReturnCSD_Click()
Form06.Visible = True
End Sub
************************************************************************

118

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.9 FORMULARIO 08.(PHONEBOOK.FRM)


FORMULARIO DE LA AGENDA DE TELFONOS

Figura 68. PHONEBOOK.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
Unload Form04
'cerrar resto de formularios que restan visibles
Unload Form12
DisableX Form08
'se deshabilita el botn CERRAR del formulario
VIEW_CONFIGURATION
End Sub
************************************************************************
'SE VISUALIZA LA CONFIGURACIN DE LA AGENDA DE TELFONOS
Private Sub VIEW_CONFIGURATION()
If config.PhoneBook = Chr(34) + "SM" + Chr(34) Then
'tarj. SIM
Optmem_SIM.Value = True
Else
'mdem GM29
Optmem_ME.Value = True
End If
End Sub
************************************************************************
'SELECCIN DEL ALMACENAMIENTO DE LA AGENDA, mdulo GM29
Private Sub Optmem_ME_Click()
config.PhoneBook = Chr(34) + "ME" + Chr(34)
End Sub
************************************************************************
'SELECCIN DEL ALMACENAMIENTO DE LA AGENDA, tarjeta SIM
Private Sub Optmem_SIM_Click()
config.PhoneBook = Chr(34) + "SM" + Chr(34)
End Sub
************************************************************************
'ACCESO A LA BSQUEDA POR NOMBRE
Private Sub cmdNameSearch_Click()
Form09.Visible = True
Unload Me
End Sub
************************************************************************
'ACCESO A LA BSQUEDA POR POSICIN
Private Sub cmdSearchPosition_Click()
Form10.Visible = True
Unload Me

119

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

End Sub
************************************************************************
'INSERTAR NUEVA ENTRADA EN LA AGENDA
Private Sub cmdAddToPhoneBook_Click()
Form12.Visible = True
End Sub
************************************************************************
'SALIR DE LA AGENDA
Private Sub cmdSALIR_Click()
If Form06.Visible = True Or Form17.Visible = True Then
Unload Me
cerrar form08 y volver a CSD o envo SMS
Else
Form04.Visible = True
'ir al MEN principal
End If
End Sub
************************************************************************

120

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.10 FORMULARIO 09.(PHONEBOOK_NAME_SEARCH.FRM)


FORMULARIO DE LA BSQUEDA POR NOMBRE EN LA AGENDA

Figura 69. PHONEBOOK_NAME_SEARCH.FRM

SE CARGA EL FORMULARIO
Private Sub Form_Load()
DisableX Form09

'se deshabilita el botn CERRAR del formulario

'trama PHONEBOOK STORAGE, establece el lugar de la agenda telefnica


str = "AT+CPBS=" + config.PhoneBook + vbCr
TRAMA
'envo
PHONEBOOK_STORAGE
'tratamiento de la respuesta
End Sub
************************************************************************
'INICIA LA BSQUEDA
Private Sub cmdOK_Click()
Form11.Text_ResultPhoneBook.Text = "" 'borrar resultados anteriores
If Text_NameSearch.Text = "" Then
'tratar posible error
MsgBox ("INTRODUZCA TEXTO DE BSQUEDA")
Exit Sub
End If
'trama PHONEBOOK READ, envia trama y presenta nombres y nmeros de tlf.
'de la agenda
str = "AT+CPBF=" + Chr(34) + Text_NameSearch.Text + Chr(34) + vbCr
PHONEBOOK_READ (2) '2=agenda telfonos
End Sub
************************************************************************
'REALIZAR NUEVA BSQUEDA
Private Sub cmdNewSearch_Click()
Text_NameSearch.Text = ""
'borrar texto de bsqueda anterior
Unload Form11
'ocultar form. de resultados anteriores
End Sub
************************************************************************
'SALIR DE LA BSQUEDA
Private Sub cmdExitSearch_Click()
Unload Form11
If Form06.Visible = True Or Form17.Visible = True Then
Unload Me
'si proviene de CSD o de envo SMS, cerrar form
Else
Form04.Visible = True
'sino mostrar MEN principal
End If
End Sub
************************************************************************

121

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.11 FORMULARIO 10.(PHONEBOOK_POSITION_SEARCH.FRM)


FORMULARIO DE LA BSQUEDA POR POSICIN O RANGO EN LA AGENDA

Figura 70. PHONEBOOL_POSITION_SEARCH.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
DisableX Form10

'se deshabilita el botn CERRAR del formulario

'trama PHONEBOOK STORAGE, establece el lugar de la agenda telefonica


str = "AT+CPBS=" + config.PhoneBook + vbCr
TRAMA
'envo
PHONEBOOK_STORAGE
'tratamiento de la respuesta
End Sub
************************************************************************
'INICIA LA BSQUEDA
Private Sub cmdOK_Click()
Form11.Text_ResultPhoneBook.Text = "" 'borrar resultados anteriores
If Text_PositionSearch.Text = "" Then
MsgBox ("INTRODUZCA TEXTO DE BSQUEDA")
Exit Sub
End If

'tratar posible error

'trama PHONEBOOK READ, envia trama y presenta nombres y nmeros de


'telfonos de la agenda
str = "AT+CPBR=" + Text_PositionSearch.Text + vbCr
PHONEBOOK_READ (2)
'2=agenda telfonos
End Sub
************************************************************************
'POSICIN O RANGO SON VALORES NUMRICOS
'TAMBIN SE PERMITE LA TECLA BORRAR (8) Y "," (44) COMO SEPARADOR
Private Sub Text_PositionSearch_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii <> 44) And (KeyAscii < 48 Or
KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'REALIZAR NUEVA BSQUEDA
Private Sub cmdNewSearch_Click()
Text_PositionSearch.Text = ""
'borrar texto de bsqueda anterior
Unload Form11
'ocultar form de resultados anteriores
End Sub
************************************************************************

122

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'SALIR DE LA BSQUEDA
Private Sub cmdExitSearch_Click()
Unload Form11
If Form06.Visible = True Or Form17.Visible = True Then
Unload Me
'si proviene de CSD O de envo SMS, cerrar form
Else
Form04.Visible = True
'sino mostrar MEN principal
End If
End Sub
************************************************************************

123

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.12 FORMULARIO 11.(PHONEBOOK_SEARCH_RESULTS.FRM)


FORMULARIO DE PRESENTACION DE RESULTADOS DE LA BSQUEDA EN LA
AGENDA DE TELFONOS

Figura 71. PHONEBOOK_SEARCH_RESULTS.FRM

SE CARGA EL FORMULARIO
Private Sub Form_Load()
DisableX Form11
'se deshabilita el botn CERRAR del formulario
End Sub
************************************************************************

124

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.13 FORMULARIO 12.(PHONEBOOK_WRITE.FRM)


FORMULARIO INSERTAR NUEVA ENTRADA A LA AGENDA DE TELFONOS

Figura 72. PHONEBOOK_WRITE.FRM

'SE CARGA FORMULARIO


Private Sub Form_Load()
Unload Form08
DisableX Form12

'se deshabilita el botn CERRAR del formulario

'trama PHONEBOOK STORAGE, establece el lugar de la agenda telefonica


str = "AT+CPBS=" + config.PhoneBook + vbCr
TRAMA
'envo
PHONEBOOK_STORAGE
'tratamiento de la respuesta
End Sub
************************************************************************
'AADIR NUEVA ENTRADA
Private Sub cmdADD_Click()
Dim position As String
Dim number As String
Dim name As String

'variables locales

position = Text_SavePosition.Text
'posicin en la agenda
number = Chr(34) + Text_SaveNumber.Text + Chr(34)
'num de telf
name = Chr(34) + Text_SaveName.Text + Chr(34)
'nombre
trama PHONEBOOK WRITE, aade un nuevo registro en la agenda de telf
str = "AT+CPBW=" + position + "," + number + ",," + name + vbCr
TRAMA
'envo
PHONEBOOK_WRITE
'tratamiento de la respuesta
End Sub
************************************************************************
'LA POSICIN EN LA AGENDA ES UN VALOR NUMRICO.
'TAMBIN SE PERMITE LA TECLA BORRAR (8)
Private Sub Text_SavePosition_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'EL NMERO DE TELFONO ES UN VALOR NUMRICO. TAMBIN SE PERMITE LA TECLA
BORRAR (8) Y EL PREFIJO + (43)
Private Sub Text_SaveNumber_KeyPress(KeyAscii As Integer)

125

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

If (KeyAscii <> 8) And (KeyAscii <> 43) And (KeyAscii < 48 Or


KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'SE CANCELA LA INSERCION
Private Sub cmdCancel_Click()
Form08.Visible = True
'retorno al MEN de la agenda
End Sub
************************************************************************

126

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.14 FORMULARIO 13.(SMS.FRM)


FORMULARIO MEN DE MENSAJES SMS

Figura 73. SMS.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
UNLOAD_FORMS
'se cierran resto de formularios abiertos
DisableX Form13
'se deshabilita el botn CERRAR del formulario
End Sub
************************************************************************
'SE CIERRAN FORMULARIOS
Private Sub UNLOAD_FORMS()
Unload Form04
Unload Form14
Unload Form15
Unload Form16
Unload Form17
End Sub
************************************************************************
'ACCESO A LA LECTURA DE MENSAJES
Private Sub cmdReadMsg_Click()
Form15.Visible = True
End Sub
************************************************************************
'ACCESO A LA ESCRITURA DE MENSAJES
Private Sub cmdWriteMsg_Click()
Form16.Visible = True
End Sub
************************************************************************
'ACCESO A LA CONFIGURACIN DE LOS MENSAJES
Private Sub cmdMsgConfig_Click()
Form14.Visible = True
End Sub
************************************************************************
'ACCESO AL MEN PRINCIPAL
Private Sub cmdMEN_Click()
Form04.Visible = True
End Sub
************************************************************************

127

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.15 FORMULARIO 14.(SMS_CONFIGURATION.FRM)


FORMULARIO CONFIGURACIN DE MENSAJES SMS

Figura 74. SMS_CONFIGURATION.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
Unload Form13
DisableX Form14
'se deshabilita el botn CERRAR del formulario
DISABLE_CONTROLS
VIEW_CONFIGURATION
End Sub
************************************************************************
'DESHABILITAR CONTROLES
Private Sub DISABLE_CONTROLS()
frmMEM1.Enabled = False
frmMEM2.Enabled = False
frmMEM3.Enabled = False
cmdOKPREFMES.Enabled = False
FrmSERV_CENT2.Enabled = False
cmdOKSERVCENT.Enabled = False
FrmMESS_FORMAT2.Enabled = False
cmdOKMESSFORMAT.Enabled = False
FrmSET_TEXT_PARAM2.Enabled = False
cmdOKtimeMax.Enabled = False
End Sub
************************************************************************

128

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'VISUALIZAR CONFIGURACIN
Private Sub VIEW_CONFIGURATION()
'Almacenamiento de mensajes
'3 MEMORIAS:mem1,mem2,mem3.2 TIPOS: SM(SIM), ME(GM29)
If config.mem1 = Chr(34) + "SM" + Chr(34) Then
Optm1SM.Value = True
Else
Optm1ME.Value = True
End If
If config.mem2 = Chr(34) + "SM" + Chr(34) Then
Optm2SM.Value = True
Else
Optm2ME.Value = True
End If
If config.mem3 = Chr(34) + "SM" + Chr(34) Then
Optm3SM.Value = True
Else
Optm3ME.Value = True
End If
'Numero del Centro de servicio de mensajes
Select Case config.SERV_CENT
Case "+34607003110"
Opt_Vodafone.Value = True
Case "+34609090909"
Opt_Movistar.Value = True
Case "+34656000311"
Opt_Amena.Value = True
Case Else
Opt_Other.Value = True
End Select
'Formato del mensaje
If config.MsgFormat = "1" Then
OptTEXT.Value = True
Else
OptPDU.Value = True
End If

'TEXT
'PDU

'Tiempo mximo permanencia


Select Case config.time_max
Case "17,011,0,0"
Opt1h.Value = True
Case "17,071,0,0"
Opt6h.Value = True
Case "17,167,0,0"
Opt24h.Value = True
Case "17,169,0,0"
Opt72h.Value = True
Case "17,173,0,0"
Opt1w.Value = True
Case "17,255,0,0"
OptTmax.Value = True
End Select
End Sub
************************************************************************
'MODIFICAR MEMORIAS ALMACENAMIENTO
'se habilitan los controles correspondientes
Private Sub cmdModifyPREFMES_Click()
frmMEM1.Enabled = True

129

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

frmMEM2.Enabled = True
frmMEM3.Enabled = True
cmdOKPREFMES.Enabled = True
End Sub
************************************************************************
'SELECCIN DE ME PARA LA MEMORIA 1
Private Sub Optm1ME_Click()
config.mem1 = Chr(34) + "ME" + Chr(34)
End Sub
************************************************************************
'SELECCIN DE SM PARA LA MEMORIA 1
Private Sub Optm1SM_Click()
config.mem1 = Chr(34) + "SM" + Chr(34)
End Sub
************************************************************************
'SELECCIN DE ME PARA LA MEMORIA 2
Private Sub Optm2ME_Click()
config.mem2 = Chr(34) + "ME" + Chr(34)
End Sub
************************************************************************
'SELECCIN DE SM PARA LA MEMORIA 2
Private Sub Optm2SM_Click()
config.mem2 = Chr(34) + "SM" + Chr(34)
End Sub
************************************************************************
'SELECCIN DE ME PARA LA MEMORIA 3
Private Sub Optm3ME_Click()
config.mem3 = Chr(34) + "ME" + Chr(34)
End Sub
************************************************************************
'SELECCIN DE SM PARA LA MEMORIA 2
Private Sub Optm3SM_Click()
config.mem3 = Chr(34) + "SM" + Chr(34)
End Sub
************************************************************************
'VALIDAR CAMBIOS
Private Sub cmdOKPREFMES_Click()
frmMEM1.Enabled = False
'deshabilitar controles
frmMEM2.Enabled = False
frmMEM3.Enabled = False
'trama PREFERRED MESSAGE STORAGE,selecciona las diferentes memorias para
'los diferentes acciones con los mensajes. Se trata respuesta obtenida.
PREFERRED_MSG_STORAGE
cmdOKPREFMES.Enabled = False
End Sub
************************************************************************
'MODIFICAR NMERO DEL CENTRO DE SERVICIO
'se habilitan los controles correspondientes
Private Sub cmdModifySERVCENT_Click()
FrmSERV_CENT2.Enabled = True
cmdOKSERVCENT.Enabled = True
End Sub
************************************************************************

130

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'SELECCIN DE LA OPERADORA AMENA


Private Sub Opt_Amena_Click()
config.SERV_CENT = "+34656000311"
End Sub
************************************************************************
'SELECCIN DE LA OPERADORA MOVISTAR
Private Sub Opt_Movistar_Click()
config.SERV_CENT = "+34609090909""+34656000311"
End Sub
************************************************************************
'SELECCIN DE LA OPERADORA VODAFONE
Private Sub Opt_Vodafone_Click()
config.SERV_CENT = "+34607003110"
End Sub
************************************************************************
'SELECCIN DE OTRA OPERADORA. INTRODUCIR VALOR
Private Sub Opt_Other_Click()
Text_SCA.SetFocus
config.SERV_CENT = Text_SCA.Text
'introducir nmero
End Sub
************************************************************************
'CAPTACION DEL VALOR DEL CENTRO DE SERVICIO
Private Sub Text_SCA_Change()
config.SERV_CENT = Text_SCA.Text
End Sub
************************************************************************
'NMERO DEL CENTRO DE SERVICIO SOLO ADMITE VALORES NUMRICOS
'Y EL PREFIJO + (43). TAMBIN SE PERMITE LA TECLA BORRAR (8)
Private Sub Text_SCA_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii <> 43) And (KeyAscii < 48 Or
KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************
'VALIDAR CAMBIOS
Private Sub cmdOKSERVCENT_Click()
FrmSERV_CENT2.Enabled = False
'trama SERVICE CENTRE ADRESS,establece el nmero del centro de mensajes
str = "AT+CSCA=" + Chr(34) + config.SERV_CENT + Chr(34) + vbCr
TRAMA
'envo
SERVICE_CENTRE_ADRESS
'tratamiento de la respuesta
cmdOKSERVCENT.Enabled = False
End Sub
************************************************************************
'MODIFICAR FORMATO DEL MENSAJE
'se habilitan los controles correspondientes
Private Sub cmdModifyMESSFORMAT_Click()
FrmMESS_FORMAT2.Enabled = True
cmdOKMESSFORMAT.Enabled = True
End Sub
************************************************************************

131

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'SELECCIN DE FORMATO DE MENSAJES = PDU


Private Sub OptPDU_Click()
config.MsgFormat = "0"
End Sub
************************************************************************
'SELECCIN DE FORMATO DE MENSAJES = TEXTO
Private Sub OptTEXT_Click()
config.MsgFormat = "1"
End Sub
************************************************************************
'VALIDAR CAMBIOS
Private Sub cmdOKMESSFORMAT_Click()
FrmMESS_FORMAT2.Enabled = False
'trama MESSAGE FORMAT, establece el tipo de mensajes
str = "AT+CMGF=" + config.MsgFormat + vbCr
TRAMA
'envo
MESSAGE_FORMAT
'tratamiento de la respuesta
cmdOKMESSFORMAT.Enabled = False
End Sub
************************************************************************
'MODIFICAR TIEMPO MAXIMO PERMANENCIA
'se habilitan los controles correspondientes
Private Sub cmdModifyTimeMax_Click()
FrmSET_TEXT_PARAM2.Enabled = True
cmdOKtimeMax.Enabled = True
End Sub
************************************************************************
'SELECCIN DE TIEMPO MAXIMO = 1H
Private Sub Opt1h_Click()
config.time_max = "17,011,0,0"
End Sub
************************************************************************
'SELECCIN DE TIEMPO MAXIMO = 1SEMANA
Private Sub Opt1w_Click()
config.time_max = "17,173,0,0"
End Sub
************************************************************************
'SELECCIN DE TIEMPO MAXIMO = 24H
Private Sub Opt24h_Click()
config.time_max = "17,167,0,0"
End Sub
************************************************************************
'SELECCIN DE TIEMPO MAXIMO = 6H
Private Sub Opt6h_Click()
config.time_max = "17,071,0,0"
End Sub
************************************************************************
'SELECCIN DE TIEMPO MAXIMO = 72H
Private Sub Opt72h_Click()
config.time_max = "17,169,0,0"
End Sub
************************************************************************

132

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'SELECCIN DE TIEMPO MAXIMO = TIEMPO MAXIMO


Private Sub OptTmax_Click()
config.time_max = "17,255,0,0"
End Sub
************************************************************************
'VALIDAR CAMBIOS
Private Sub cmdOKtimeMax_Click()
FrmSET_TEXT_PARAM2.Enabled = False
'trama MESSAGE TEXT TIME MAX, se configura el tiempo maximo de
almacenamiento de mensajes
str = "AT+CSMP=" + config.time_max + vbCr
TRAMA
'envo
MSGTXT_TIME_MAX
'tratamiento de la respuesta
cmdOKtimeMax.Enabled = False
End Sub
************************************************************************
'RETORNAR AL MEN DE MENSAJES SMS
Private Sub CmdSMSMEN_Click()
Form13.Visible = True
End Sub
************************************************************************

133

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.16 FORMULARIO 15.(READ_SMS.FRM)


FORMULARIO DE LECTURA, BORRADO Y REENVIADO DE SMS

Figura 75. READ_SMS.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
Unload Form13
'cerrar resto de formularios
Unload Form18
DisableX Form15
'se deshabilita el botn CERRAR del formulario
index = 1
'posicin del mensaje a leer
'trama READ MESSAGE, envo de la trama y lectura del mensaje SMS
READ_MESSAGE (True)
End Sub
************************************************************************
'LEER PRXIMO MENSAJE
Private Sub cmdNEXT_Click()
Text_ReadSMS.Text = ""
index = index + 1
'se avanza una posicin de lectura
If (index = 18) Then
'final de los mensajes
MsgBox ("NO HAY MAS MENSAJES")
index = 1
'retornamos al inicial
End If
'trama READ MESSAGE, envo de la trama y lectura del mensaje SMS
READ_MESSAGE (True)
'true=sentido de lectura hacia adelante
End Sub
************************************************************************
'LEER MENSAJE ANTERIOR
Private Sub cmdPREVIOUS_Click()
Text_ReadSMS.Text = ""
index = index - 1
'se retrocede una posicin de lectura
If (index = 0) Then
'final de los mensajes
MsgBox ("NO HAY MAS MENSAJES")
index = 17
'retornamos al inicial
End If
READ_MESSAGE (False)
'false=sentido de lectura hacia atras
End Sub
************************************************************************

134

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'BORRAR MENSAJE
Private Sub cmdDELETE_Click()
Dim index2 As String
index2 = CStr(index)
'Conversion de tipo integer a tipo string
'trama DELETE MESSAGE, borra un mensaje de una posicin determinada
str = "AT+CMGD=" + index2 + vbCr
TRAMA
'envo
DELETE_MESSAGE
'tratamiento de la respuesta
End Sub
************************************************************************
'REENVIAR MENSAJE
Private Sub cmdFORWARD_Click()
Form17.Visible = True
End Sub
************************************************************************
'RETORNAR AL MEN DE MENSAJES SMS
Private Sub CmdSMSMEN_Click()
Form13.Visible = True
End Sub
************************************************************************

135

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.17 FORMULARIO 16.(WRITE_SMS.FRM)


FORMULARIO ESCRIBIR MENSAJES,GUARDAR O ENVIAR

Figura 76. WRITE_SMS.FRM

'SE CARGA FORMULARIO


Private Sub Form_Load()
Unload Form13
DisableX Form16
'se deshabilita el botn CERRAR del formulario
End Sub
************************************************************************
'GUARDAR MENSAJE EN LA MEMORIA
Private Sub cmdSaveSMS_Click()
str = "AT+CMGW=" + Chr(34) + "2" + Chr(34) + vbCr
'trama para guardar mensaje en la memoria
SEND_OR_WRITE_MESSAGE_TO_MEMORY Text_SMS.Text, 1
'1=guardar
End Sub
************************************************************************
'ENVIAR MENSAJE
Private Sub cmdSendSMS_Click()
Form17.Visible = True
End Sub
************************************************************************
'CANCELAR
Private Sub cmdCancel_Click()
Text_SMS.Text = ""
'borrado del texto
Form13.Visible = True
'retorno al MEN de mensajes
End Sub
************************************************************************

136

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.18 FORMULARIO 17.(SEND_SMS.FRM)


FORMULARIO ENVIAR MENSAJES

Figura 77. SEND_SMS.FRM

'SE CARGA FORMULARIO


Private Sub Form_Load()
DisableX Form17
'se deshabilita el botn CERRAR del formulario
End Sub
************************************************************************

'ENVIAR MENSAJE
Private Sub cmdSendSMS_Click()
'variables locales
Dim DestinationNumber As String
Dim index2 As String

'nmero de telfono
'posicin

DestinationNumber = Chr(34) + Text_DestinationNumber.Text + Chr(34)


index2 = CStr(index)
'conversion integer-string
If Form16.Visible = True Then
str = "AT+CMGS=" + DestinationNumber + vbCr 'escribir y enviar sms
SEND_OR_WRITE_MESSAGE_TO_MEMORY Form16.Text_SMS.Text, 2
'2=enviar
Else
'trama SEND FROM STORAGE,envia un sms guardado en una posicin de memoria
str = "AT+CMSS=" + index2 + "," + DestinationNumber + vbCr
TRAMA
'envo
SEND_FROM_STORAGE
'tratamiento de la respuesta
End If
End Sub
************************************************************************

'EL NMERO DE TELFONO ES UN VALOR NUMRICO


'TAMBIN SE PERMITE LA TECLA BORRAR (8) Y EL PREFIJO + (43)
Private Sub Text_DestinationNumber_KeyPress(KeyAscii As Integer)
If (KeyAscii <> 8) And (KeyAscii <> 43) And (KeyAscii < 48 Or
KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
************************************************************************

137

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'ACCESO A LA AGENDA DE TELFONOS


Private Sub cmdPhoneBook_Click()
Form08.Visible = True
End Sub
************************************************************************
'CANCELAR
Private Sub cmdCancel_Click()
Unload Me
End Sub
************************************************************************

138

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.19 FORMULARIO 18.(NEW_SMS_NOTIFY.FRM)


FORMULARIO DE NOTIFICACIN DE NUEVO MENSAJE RECIBIDO

Figura 78. NEW_SMS_NOTIFY.FRM

'SE CARGA FORMULARIO


Private Sub Form_Load()
strBUFFER = ""

'se vacia la variable que contine la informacin


'del buffer
'se deshabilita el botn CERRAR del formulario

DisableX Form18
End Sub
************************************************************************
'LEER MENSAJE
Private Sub cmdReadNOW_Click()
Form15.Visible = True
index = 1
'posicin de lectura
'trama READ MESSAGE, envo de la trama y lectura del mensaje SMS
READ_MESSAGE (True)
'true=sentido de lectura hacia adelante
End Sub
************************************************************************

139

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.20 FORMULARIO 19.(CALL_NOTIFY.FRM)


FORMULARIO DE NOTIFICACIN DE LLAMADA ENTRANTE

Figura 79. CALL_NOTIFY.FRM

AL CERRARSE EL FORMULARIO SE REINICIALIZA LA VARIABLE CONTADOR


Private Sub Form_Unload(Cancel As Integer)
RINGS = 0
End Sub
************************************************************************

140

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.21 FORMULARIO 20.(MODULE_SIM_IDENTIFICATION.FRM)


FORMULARIO DE INFORMACIN DEL MDEM Y DE LA TARGETA SIM

Figura 80. MODULE_SIM_IDENTIFICATION.FRM

'SE CARGA EL FORMULARIO


Private Sub Form_Load()
Unload Form04
'cerramos el MEN principal
DisableX Form20
'se deshabilita el botn CERRAR del formulario
End Sub
************************************************************************
'RETORNO AL MEN PRINCIPAL
Private Sub cmdOK_Click()
Form04.Visible = True
End Sub
************************************************************************

141

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.22 FORMULARIO 21.(TRAMAS_ENV_RECEPC.FRM)


FORMULARIO DE VISUALIZACIN DE LAS TRAMAS DE ENVO Y RECEPCIN

Figura 81. TRAMAS_ENV_RECEP.FRM

142

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.23 MODULE VARIABLES.(Variables.bas)


'MDULO de declaracin de variables
'Declaracion
Public
Public
Public
Public
Public
Public
Public

de variables publicas
str As String
index As Integer
online_data As Boolean
strBUFFER As String
RINGS As Integer
timeout_cont As Integer
timeout As Boolean

'preparacion de tramas
'lectura de sms
'modo online o comand
'contiene datos del buffer
'nmero de rings (llamadas)
'contador de segundos (timeout)
'fuera de tiempo?

'Declaracion de registro tipo reg


Public Type REG
mem1 As String * 4
mem2 As String * 4
mem3 As String * 4
PhoneBook As String * 4
MsgFormat As String * 1
SERV_CENT As String * 12
time_max As String * 10
dialling As String * 3
answer_mode As String * 1
bearer_Service As String
escape_sequence As String
End Type
Public config As REG

'constantes definidas por visual basic


'vbCr = Chr(13)
'vbLf = Chr(10)
'vbCrLf = Chr(13)+Chr(10)

143

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.24 MODULE PROCEDURES.(Procedures.bas)


'MDULO de declaracin de acciones de envo de tramas
DECLARACION DE VARIABLES LOCALES PARA ESTE MDULO
Private aux As Integer
Private straux As String
************************************************************************
'ACCIN GENERAL TRAMA. ENVIA COMANDO, ESPERA RESPUESTA Y TRATA TIMEOUT
'COMUN PARA TODOS AQUELLOS COMANDOS CUYO FORMATO DE RESPUESTA ES TIPO A
'AT...+<parametros>+CR + CRLF+ mensaje + CRLF
Public Sub TRAMA()
SEND_COMMAND
INI_TIMER_OUT
WAIT_RESULT_CODES
TIME_OUT
End Sub
************************************************************************
'ENVO DEL COMANDO AT
Public Sub SEND_COMMAND()
aux = 0
'variable de control de respuesta completa
Form01.MSComm1.Output = str
'introduce en el buffer el comando AT
Form21.Text_CommandSent.Text = str
'se visualiza la transferencia
End Sub
************************************************************************
'INICIALIZACIN DEL TIMER PRA EL CONTROL DEL TIMEOUT
Public Sub INI_TIMER_OUT()
timeout_cont = 0
'reinicio de la variable de control
Form01.Timer_Mscomm.Enabled = True
'se activa timer
End Sub
************************************************************************
'ESPERA DE LA RESPUESTA COMPLETA PARA SU POSTERIOR TRATAMIENTO
'Restaremos en el bucle hasta que que se encunetren los caracteres CRLF
de final de respuesta. Para ello debemos comparar con la variable que lee
el buffer strBUFFER a partir de len(str)+2 caracteres (tamao de la trama
de envo)
Public Sub WAIT_RESULT_CODES()
Do
DoEvents
'se permiten eventos para la actualizacin de strBUFFER
Loop Until (InStr(Len(str) + 2, strBUFFER, vbCrLf) Or timeout)
End Sub
************************************************************************
'TIMEOUT.SE COMPRUEVBA SI HA EXISTIDO UN TIEMPO EXCESIVAMENTE GRANDE PARA
RESPONDER. Si ha ocurrido timeout se trata, sino se deshabilita el timer
y se reinican los contadores para la proximo envo de comandos
Public Sub TIME_OUT()
If timeout Then
'ha ocurrido timeout
MsgBox "ERROR DE TIMEOUT" + vbCrLf + "Compruebe que el mdem este
enchufado correctamente y ejecute de nuevo el programa", vbOKOnly +
vbCritical
End
'finalizamos el programa. Ha ocurrido un error en el mdem
Else
Form01.Timer_Mscomm.Enabled = False
'dehabilita el timer
timeout_cont = 0
'reinician contadores
timeout = False
'condicion falsa
End If
End Sub
************************************************************************

144

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'ACCIN QUE REALIZA EL CONTROL DE LOS CDIGOS DE ACCESO.


'INTERROGA A LA TARJETA SIM PARA CONOCER SU ESTADO: READY,
SIMPUK
Public Sub PIN_CONTROL()
str = "AT+CPIN?" + vbCr
SEND_COMMAND
INI_TIMER_OUT
Do
DoEvents

SIM

PIN,

'se prepara la trama


'se envia comando
'se inicia el timer

'bucle de espera a la respuesta completa o timeout


'se permiten eventos (actualizacin strBUFFER)

'TIPO C. Comparacin completa de la respuesta


Select Case strBUFFER
Case str + vbCrLf + "+CPIN: " + "READY" + vbCrLf + vbCrLf + "OK" + vbCrLf
'tratamiento de la respuesta: SISTEMA PREPARADO
strBUFFER = ""
'se vacia contenido (lectura buffer)
MsgBox "SISTEMA PREPARADO", vbOKOnly + vbInformation
'msg control
Form21.Text_StateSending.Text = ""
Form01.Visible = False
'se oculta formulario inicial
Form04.Visible = True
'se muestra MEN principal
aux = 1
'salimos del bucle
Case str + vbCrLf + "+CPIN: " + "SIM PIN" + vbCrLf + vbCrLf + "OK" +
vbCrLf
'tratamiento de la respuesta: NECESARIO CDIGO PIN
MsgBox "ES NECESARIO QUE INTRODUZCA EL CDIGO PIN", vbOKOnly +
vbInformation
strBUFFER = ""
'se vacia contenido (lectura buffer)
Form02.Visible = True
'se muestra form introduccion cdigo PIN
aux = 1
'salimos del bucle
Case str + vbCrLf + "+CPIN: " + "SIM PUK" + vbCrLf + vbCrLf + "OK" +
vbCrLf
'tratamiento de la respuesta:NECESARIO CDIGO PUK
MsgBox "ES NECESARIO QUE INTRODUZCA EL CDIGO PUK", vbOKOnly +
vbInformation
strBUFFER = ""
'se vacia contenido (lectura buffer)
Form03.Visible = True
'se muestra form. introduccion cdigo PUK
aux = 1
'salimos del bucle
Case str + vbCrLf + "+CME ERROR: SIM not inserted" + vbCrLf
'tratamiento de la respuesta
MsgBox "INTRODUZCA LA TARJETA SIM Y PULSE ACEPTAR", vbOKOnly +
vbExclamation
'mensaje de aviso
strBUFFER = ""
'se vacia contenido (lectura buffer)
aux = 1
'salimos del bucle
PIN_CONTROL
'rellamada a la accion
End Select
'condiciones de salida(respuesta completa o timeout)
Loop Until (aux = 1 Or timeout)
TIME_OUT
'se produjo timeout? tratamiento del mismo
End Sub
************************************************************************

145

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'LECTURA DEL REGISTRO DEL TELFONO O DE LA TARJETA SIM.


'DEPENDIENDO DE LA CONFIGURACIN DE AT+CPBS (ver accion) SE TIENE ACCESO
AL REGISTRO DE LLAMADAS (RECIBIDAS, ENVIADAS, NO CONTESTADAS) O A LA
AGENDA TELEFONICA (ME o SIM)
'accion compartida por lectura de llamadas(1) y bsquedas en la agenda(2)
Public Sub PHONEBOOK_READ(i As Integer)
SEND_COMMAND
'envo del comando correspondiente. (AT+CPBF o AT+CPBR)
INI_TIMER_OUT
'se inicia el timer
Do
DoEvents

'bucle de espera a la respuesta completa o timeout


'se permiten eventos (actualizacin strBUFFER)

straux = strBUFFER
straux = Right(straux, 8)

'leemos los 8 ltimos caracteres del buffer

'Respuesta tipo c. Coincidencia respuesta con la esperada?


'comun para bsqueda por nombre,posicin y reg llamadas
Select Case strBUFFER
Case str + vbCrLf + "OK" + vbCrLf
'tratamiento de la respuesta: no hay resultados
MsgBox "NO SE HAN ENCONTRADO RESULTADOS", vbOKOnly + vbExclamation
aux = 1
Case str + vbCrLf + "ERROR" + vbCrLf
'tratamiento de la respuesta: error en el envo
MsgBox "ERROR EN LA TRAMA DE BSQUEDA", vbOKOnly + vbCritical
aux = 1
End Select
'Respuesta tipo b. Consultamos 8 ltimos caracteres ya que anteriormente
'hay diversas lineas con distintos mensajes
If (straux = vbCrLf + vbCrLf + "OK" + vbCrLf) Then
'tratamiento de la respuesta: existen resultados
MsgBox "PRESENTACIN RESULTADOS", vbOKOnly + vbInformation
Select Case i
'discriminamos si agenda o llamadas, presentacion diferente
Case 1
Form05.text_ShowCalls.Text = SHOW_RESULTS
'funcin
discrimina y se queda solo con los mensajes
Case 2
Form11.Visible = True
Form11.Text_ResultPhoneBook.Text = SHOW_RESULTS
End Select
aux = 1
End If

que

'condiciones de salida(respuesta completa o timeout)


Loop Until (aux = 1 Or timeout)
strBUFFER = ""
TIME_OUT

'se vacia contenido (lectura buffer)


'se produjo timeout? tratamiento del mismo

End Sub
************************************************************************

146

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'VISUALIZA INFORMACIN DEL MDEM Y DE LA TARGETA SIM


'SE REALIZA BUCLE FOR CON TAL DE MOSTRAR TODA LA INFORMACIN A LA VEZ
Public Sub ABOUT_MODEM()
Dim i As Integer
i = 1
str = "AT+CGMI" + vbCr 'trama MANUFACTURED
For i = 1 To 5
SEND_COMMAND
INI_TIMER_OUT
Do
DoEvents

'Envio de todas lsa tramas de informacion consecutivas


'envo de comandos
'se inicia el timer

'bucle de espera a la respuesta completa o timeout


'se permiten eventos (actualizacin strBUFFER)

straux = strBUFFER
straux = Right(straux, 8)

'leemos los 8 ltimos caracteres del buffer

'RESPUESTA tipo b. Consultamos 8 ltimos caracteres ya que anteriormente


'hay diversas lineas con distintos mensajes
If (straux = vbCrLf + vbCrLf + "OK" + vbCrLf) Then
'tratamiento de la respuesta: se presenta resultado, y se prepara trama
siguiente
Select Case i
Case 1
Form20.LblMANUFACTURED2.Caption = SHOW_RESULTS
str = "AT+CGMM" + vbCr 'MODEL
Case 2
Form20.LblMODEL2.Caption = SHOW_RESULTS
str = "AT+CGMR" + vbCr 'REVISION
Case 3
Form20.LblREVISION2.Caption = SHOW_RESULTS
str = "AT+CGSN" + vbCr 'PRODUCT SERIAL (IMEI)
Case 4
Form20.LblPRODUCTSERIAL2.Caption = SHOW_RESULTS
str = "AT+CIMI" + vbCr 'INDIVIDUAL SIM
Case 5
Form20.LblIMSI2.Caption = SHOW_RESULTS
End Select
aux = 1
strBUFFER = ""
ElseIf (straux = vbLf + "ERROR" + vbCrLf) Then
'tratamiento de la respuesta: error
MsgBox "ERROR EN LAS TRAMAS DE INFORMACIN
vbOKOnly + vbCritical
aux = 1
strBUFFER = ""
End If

ACERCA

DEL

MDEM",

'condiciones de salida(respuesta completa o timeout)


Loop Until (aux = 1 Or timeout)
TIME_OUT
Next i

'se produjo timeout? tratamiento del mismo


'siguiente trama

End Sub
************************************************************************

147

Comunicacin Punto a Punto Va Mdem GSM


'FINALIZA UNA
COMUNICACIN

LLAMADA

INTERRUMPE

Cdigo Fuente
UN

INTENTO

DE

ESTABLECER

UNA

Public Sub HANG_UP()


strBUFFER = ""
str = "ATH" + vbCr
SEND_COMMAND
INI_TIMER_OUT
Do
DoEvents

'se prepara la trama


'envo del comando
'se inicia el timer
'bucle de espera a la respuesta completa o timeout
'se permiten eventos (actualizacin strBUFFER)

'Respuesta TIPO C. Comparacin completa de la respuesta


Select Case strBUFFER
Case str + vbCrLf + "OK" + vbCrLf
'tratamiento de la respuesta: estamos en una conexin y la finalizamos
online_data = False
strBUFFER = ""
MsgBox "LLAMADA FINALIZADA", vbOKOnly + vbInformation
aux = 1
ase str + vbCrLf + "ERROR" + vbCrLf
'tratamiento de la respuesta: error. imposible finalizar la conexin
strBUFFER = ""
MsgBox "ERROR AL INTENTAR FINALIZAR LA LLAMADA.INTENTELO DE NUEVO",
vbOKOnly + vbCritical
aux = 1
Case vbCrLf + "OK" + vbCrLf
'tratamiento de la respuesta: llamada interrumpida antes de establecer
conexin
strBUFFER = ""
MsgBox "LLAMADA INTERRUMPIDA", vbOKOnly + vbInformation
aux = 1
End Select
'condiciones de salida(respuesta completa o timeout)
Loop Until (aux = 1 Or timeout)
TIME_OUT

'se produjo timeout? tratamiento del mismo

End Sub
************************************************************************
'SE PASA DE MODO EN LINEA A MODO COMANDOS
Public Sub COMMAND_MODE()
'de este modo no enviamos al interlocutor la peticin de pasar a modo
comandos
online_data = False
strBUFFER = ""
'se prepara la trama +++AT, siendo + el carcter de escape
str = Chr(config.escape_sequence) + Chr(config.escape_sequence) +
Chr(config.escape_sequence) + "AT" + vbCr
SEND_COMMAND
INI_TIMER_OUT

'se envia comando


'se inicia el timer

148

Comunicacin Punto a Punto Va Mdem GSM


Do
DoEvents

Cdigo Fuente

'bucle de espera a la respuesta completa o timeout


'se permiten eventos (actualizacin strBUFFER)

'Respuesta TIPO C. Comparacin completa de la respuesta


Select Case strBUFFER
Case vbCrLf + "OK" + vbCrLf
'tratamiento de la respuesta:paso correcto a modo comandos
strBUFFER = ""
MsgBox "ACCESO CORRECTO AL MODO COMANDO", vbOKOnly + vbInformation
aux = 1
Case vbCrLf + "ERROR" + vbCrLf
'tratamiento de la respuesta:error al intentar pasar a modo comandos
strBUFFER = ""
MsgBox "ERROR AL INTENTAR ACCEDER AL MODO COMANDO. INTENTELO DE
NUEVO", vbOKOnly + vbCritical
online_data = True
'permitimos el envo de datos al interlocutor
aux = 1
End Select
'condiciones de salida(respuesta completa o timeout)
Loop Until (aux = 1 Or timeout)
TIME_OUT
'se produjo timeout? tratamiento del mismo
End Sub
************************************************************************
'CONFIGURA EL ALMACENAMIENTO DE LOS MENSAJES
Public Sub PREFERRED_MSG_STORAGE()
'se prepara la trama
str = "AT+CPMS=" +config.mem1+ "," +config.mem2+ "," +config.mem3+ vbCr
SEND_COMMAND
'se envia comando
INI_TIMER_OUT
'se inicia el timer
Do
DoEvents

'bucle de espera a la respuesta completa o timeout


'se permiten eventos (actualizacin strBUFFER)

'Respuesta TIPO B.leemos los 8 ltimos caracteres del buffer


straux = strBUFFER
straux = Right(straux, 8)
If straux = vbCrLf + vbCrLf + "OK" + vbCrLf Then
'tratamiento de la respuesta: Trama lleg correctamente
MsgBox "LA CONFIGURACIN DE ALMACENAMIENTO DE MENSAJES SE HA
MODIFICADO SATISFACTORIAMENTE", vbOKOnly + vbInformation
strBUFFER = ""
aux = 1
'Resppuesta TIPO C. Comparacin completa de la respuesta
ElseIf strBUFFER = str + vbCrLf + "ERROR" + vbCrLf Then
'tratamiento de la respuesta: error en el envo
MsgBox "ERROR AL MODIFICAR LA CONFIGURACIN DE ALMACENAMIENTO DE
MENSAJES.INTENTELO DE NUEVO", vbOKOnly + vbCritical
strBUFFER = ""
aux = 1
End If
'condiciones de salida(respuesta completa o timeout)
Loop Until (aux = 1 Or timeout)
TIME_OUT
'se produjo timeout? tratamiento del mismo
End Sub
************************************************************************

149

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'LECTURA DE LOS MENSAJES


'PASAMOS POR PARAMETRO FRONT, QUE INDICA EL SENTIDO DE LA LECTURA
'HACIA DELANTE O HACIA ATRAS
Public Sub READ_MESSAGE(front As Boolean)
Dim index2 As String
index2 = CStr(index)
'conversion de tipo integer a string
str = "AT+CMGR=" + index2 + vbCr
SEND_COMMAND
INI_TIMER_OUT
Do
DoEvents

'se prepara la trama


'se envia comando
'se inicia el timer

'bucle de espera a la respuesta completa o timeout


'se permiten eventos (actualizacin strBUFFER)

straux = Right(straux, 6) 'leemos los 6 ltimos caracteres del buffer


'Respuesta tipo b. Consultamos los 6 ltimos caracteres
'anteriormente hay diversas lineas con distintos mensajes

ya

que

If straux = vbCrLf + "OK" + vbCrLf Then


'tratamiento de la respuesta: en la posicin index s hay mensaje
MsgBox "PRESENTACION DE MENSAJES", vbOKOnly + vbInformation
Form15.Text_ReadSMS.Text = SHOW_RESULTS
'presentacion de resultados
strBUFFER = ""
aux = 1
'Respuesta TIPO C. Comparacin completa de la respuesta
ElseIf (strBUFFER = str + vbCrLf + "+CMS ERROR: 500" + vbCrLf) Or _
(strBUFFER = str + vbCrLf + "+CMS ERROR: 321" + vbCrLf) Then
'tratamiento de la respuesta: error, posicin vaca
MsgBox "EN LA POSICIN " + index2 + " NO HAY MENSAJE", vbOKOnly +
vbExclamation
strBUFFER = ""
'se avanza o retrocede (segun indique front)una posicinhasta encontrar
'una posicin que contenga mensaje
If front Then
index = index + 1
Else
index = index - 1
End If

'siguiente
'anterior

If (index > 1) And (index < 17) Then


READ_MESSAGE (front)
Else
'tratamiento de final de mensajes
MsgBox "NO HAY MAS MENSAJES", vbOKOnly + vbExclamation
aux = 1
End If
End If
'condiciones de salida(respuesta completa o timeout)
Loop Until (aux = 1 Or timeout)
TIME_OUT
'se produjo timeout? tratamiento del mismo
End Sub
************************************************************************

150

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'ENVIA O GUARDA UN MENSAJE. PRIMERA PARTE COMUN. SEGUNDA PARTE


'DEPENDIENDO DEL PARAMETRO i EJECUTA UNA ACCIN U OTRA
Public Sub SEND_OR_WRITE_MESSAGE_TO_MEMORY(Text_SMS As String, i As
Integer)
SEND_COMMAND
'envo del comando (AT+CMGW=guardar o AT+CMGS=enviar)
INI_TIMER_OUT
'se inicia el timer
Do
'bucle de espera a la respuesta completa o timeout
DoEvents
'se permiten eventos (actualizacin strBUFFER)
If (strBUFFER = str + vbCrLf + "> " + Chr(0)) Then
'el sistema esta listo par escribir el mensaje
strBUFFER = ""
aux = 1
End If
'condiciones de salida(respuesta completa o timeout)
Loop Until (aux = 1 Or timeout)
TIME_OUT
'se produjo timeout? tratamiento del mismo
str = Text_SMS + Chr(26) 'se prepara trama: texto+crtlZ (fin de mensaje)
SEND_COMMAND
'envo de la trama
INI_TIMER_OUT
'se inicia el timer
Do
'bucle de espera a la respuesta completa o timeout
DoEvents
'se permiten eventos (actualizacin strBUFFER)
'Respuesta tipo b .Consultamos 8 ltimos caracteres ya que anteriormente
'hay diversas lineas con distintos mensajes
straux = strBUFFER
straux = Right(straux, 8)
Select Case straux
Case (vbCrLf + vbCrLf + "OK" + vbCrLf)
'correcto
Select Case i
'discriminacion dependiendo del comando enviado
Case 1
'tratamiento de la respuesta:SMS guardado correctamente
MsgBox "SMS GUARDADO CORRECTAMENTE", vbOKOnly + vbInformation
strBUFFER = ""
Form13.Visible = True
aux = 1
Case 2
'tratamiento de la respuesta:SMS enviado correctamente
MsgBox "SMS ENVIADO CORRECTAMENTE", vbOKOnly + vbInformation
strBUFFER = ""
Form04.Visible = True
aux = 1
End Select
Case (vbLf + "ERROR" + vbCrLf)
'error comando
Select Case i
'discriminacion dependiendo del comando enviado
Case 1
'tratamiento de la respuesta:error guardar
MsgBox "ERROR AL INTENTAR GUARDAR EL SMS", vbOKOnly + vbCritical
strBUFFER = ""
aux = 1
Case 2
'tratamiento de la respuesta:error enviar
MsgBox "ERROR EN EL ENVO DEL SMS", vbOKOnly + vbCritical
strBUFFER = ""
aux = 1
End Select
End Select
'condiciones de salida(respuesta completa o timeout)
Loop Until (aux = 1 Or timeout)
TIME_OUT
'se produjo timeout? tratamiento del mismo
End Sub
************************************************************************

151

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'NOTIFICA LA LLEGADA DE UN NUEVO MENSAJE SMS


'SE REALIZA POLLING CADA VEZ QUE RECIBIMOS UN CARCTER EN EL BUFFER
'SI CONCUERDA CON LA CADENA DE NOTIFICACIN, SE CARGA EL FORMULARIO 18
Public Sub NEW_SMS()
If (strBUFFER = vbCrLf + "+CMTI: " + config.mem3 + "," + "1" + vbCrLf)
Then
Sonido = sndPlaySound(ByVal "cuac.wav", 1) 'reproduce sonido CUAC
Form18.Visible = True
'presenta el formulario de notificacin
index = 1
End If
End Sub
************************************************************************
'FUNCION QUE DETERMINA SI SE ESTA RECIBIENDO UNA LLAMADA ENTRANTE
'CADA VEZ QUE SE RECIBE UN CARCTER/ES AL PUERTO SERIE, SE COMPRUEBA.
'SE REALIZA POLLING YA QUE NO ES POSIBLE DETECTAR LA SEAL DE RING
Public Sub RING()
If strBUFFER = vbCrLf + "RING" + vbCrLf Then
Sonido = sndPlaySound(ByVal "RING.wav", 1) 'reproduce sonido ring
strBUFFER = ""
Form19.Visible = True
'presenta el formu de notificacin
RINGS = RINGS + 1
'actualiza la variable RINGS
Form19.Text_RINGS = RINGS
'presenta por pantalla
Form06.Visible = True
'abre dialogo de transferencia CSD
End If
End Sub
************************************************************************
'DISCRIMINA DE UNA RESPUESTA LA TRAMA ENVIADA Y LOS COMANDOS DE CONTROL
CrLf y DEVUELVE EL MENSAJE
Public Function SHOW_RESULTS()
Dim Str2 As String
Dim Str3 As String
Dim straux1 As String
Dim straux2 As String
Str2 = vbCr + vbCrLf
Str3 = vbCrLf + "OK" + vbCrLf
straux1 = Mid(strBUFFER, InStr(strBUFFER, Str2) + 3)
straux2 = Mid(strBUFFER, InStr(strBUFFER, Str2) + 3, InStr(straux1, Str3)
- 1)
SHOW_RESULTS = straux2
End Function
************************************************************************

152

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.25 MODULE TREAT_RESPONSES (Treat_Responses.bas)


'MDULO de declaracin de tratamiento a las respuestas
************************************************************************
'EN ESTE MDULO SE REFLEJAN EL TRATAMIENTO A LAS DIFERENTES RESPUESTAS
'PARA CADA UNA DE LAS TRAMAS IMPLEMENTADAS QUE SIGUEN EL FORMATO DE
'RESPUESTA "AT..." + PARMETROS + CR + CRLF + MENSAJE + CRLF
************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CMEE


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub MOBILE_EQUIPMENT_ERROR()
Select Case RESULT_CODE
Case "OK"
MsgBox "LA CONFIGURACIN DE ERRORES SE HA ESTABLECIDO
CORRECTAMENTE", vbOKOnly + vbInformation
Form21.Text_StateSending.Text = ""
Case "ERROR"
MsgBox "ERROR EN LA TRAMA DE CONFIGURACIN DE ERRORES. REVISE EL
MODEM", vbOKOnly + vbCritical
Form21.Text_StateSending.Text = ""
End
End Select
strBUFFER = ""
End Sub
'************************************************************************
'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CPIN=PIN
'Se comprueba si el PIN es correcto
Public Sub PIN_CODE()
Select Case RESULT_CODE
Case "OK"
MsgBox "EL CDIGO PIN INTRODUCIDO ES CORRECTO", vbOKOnly +
vbInformation
Form04.Visible = True
Case "+CME ERROR: Incorrect password"
MsgBox "EL CDIGO PIN INTRODUCIDO ES INCORRECTO", vbOKOnly +
vbExclamation
Form02.TEXT_PIN = ""
Form02.TEXT_PIN.SetFocus
Case "+CME ERROR: SIM PUK required"
MsgBox "EL CDIGO PIN INTRODUCIDO ES INCORRECTO." _
+ vbCrLf + "
INTRODUZCA EL CDIGO PUK", vbOKOnly +
vbExclamation
Form03.Visible = True
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CPIN=PUK,PIN


'Se comprueba si el PUK es correcto
Public Sub PUK_PIN_CODES()
Select Case RESULT_CODE

153

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

Case "OK"
MsgBox "EL CDIGO PUK INTRODUCIDO ES CORRECTO", vbOKOnly +
vbInformation
Form04.Visible = True
Case "+CME ERROR: Incorrect password"
MsgBox "EL CDIGO PUK INTRODUCIDO ES INCORRECTO", vbOKOnly +
vbExclamation
Form03.TEXT_PUK = ""
Form03.TEXT_PIN = ""
Case "BLOCKED"
MsgBox "EL CDIGO PUK INTRODUCIDO ES INCORRECTO." + vbCrLf + _
"HA BLOQUEADO LA TARJETA.CONSULTE A SU DISTRIBUIDOR",
vbOKOnly + vbCritical
End
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CSCA


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub SERVICE_CENTRE_ADRESS()
Select Case RESULT_CODE
Case "OK"
MsgBox "EL CENTRO DE SERVICIO SE HA CONFIGURADO CORRECTAMENTE",
vbOKOnly + vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR EL CENTRO DE SERVICIO", vbOKOnly +
vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CMGF


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub MESSAGE_FORMAT()
Select Case RESULT_CODE
Case "OK"
MsgBox "FORMATO DE MENSAJE CONFIGURADO CORRECTAMENTE", vbOKOnly +
vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR EL FORMATO DEL MENSAJE", vbOKOnly +
vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CPBS


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado

154

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

Public Sub PHONEBOOK_STORAGE()


Select Case RESULT_CODE
Case "OK"
MsgBox "SELECCIN DE MEMORIA CONFIGURADA CORRECTAMENTE", vbOKOnly +
vbInformation
Case "ERROR"
MsgBox "ERROR EN LA SELECCIN DE MEMORIA", vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CPBW


'se comprueba que la trama llego correctamente y
'que el nuevo registro ha quedado grabado
Public Sub PHONEBOOK_WRITE()
Select Case RESULT_CODE
Case "OK"
MsgBox "SE HA INSERTADO EL NUEVO REGISTRO EN LA AGENDA", vbOKOnly +
vbInformation
Form08.Visible = True
Case "ERROR"
MsgBox "ERROR AL INSERTAR EL NUEVO REGISTRO EN LA AGENDA." +
vbCrLf + _"
INTNTELO DE NUEVO", vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CSMP


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub MSGTXT_TIME_MAX()
Select Case RESULT_CODE
Case "OK"
MsgBox "TIEMPO MXIMO DE PERMANENCIA CONFIGURADO CORRECTAMENTE",
vbOKOnly + vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR EL TIEMPO MXIMO DE PERMANENCIA",
vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CMGD


'se comprueba que la trama llego correctamente y
'el mensaje se ha borrado
Public Sub DELETE_MESSAGE()
Select Case RESULT_CODE
Case "OK"
MsgBox "SMS BORRADO CORRECTAMENTE", vbOKOnly + vbInformation
Form15.Text_ReadSMS.Text = ""

155

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

Case "ERROR"
MsgBox "ERROR AL INTENTAR BORRAR EL SMS. INTNTELO DE NUEVO",
vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CMSS


'se comprueba que la trama llego correctamente y
'el mensje se ha enviado correctamente
Public Sub SEND_FROM_STORAGE()
Select Case RESULT_CODE
Case "OK"
MsgBox "EL MENSAJE SE HA ENVIADO CORRECTAMENTE AL CENTRO SERVIDOR",
vbOKOnly + vbInformation
Form04.Visible = True
Case "ERROR"
MsgBox "ERROR AL ENVIAR EL MENSAJE. INTNTELO DE NUEVO", vbOKOnly +
vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA ATT/ATP


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub SELECT_DIALLING()
Select Case Left(strBUFFER, 3)
Case "ATP"
MsgBox "LLAMADA POR PULSOS SELECCIONADA", vbOKOnly + vbInformation
Case "ATT"
MsgBox "LLAMADA POR TONOS SELECCIONADA", vbOKOnly + vbInformation
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA ATS0


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub AUTOMATIC_ANSWER_CONTROL()
Select Case RESULT_CODE
Case "OK"
MsgBox "MODO DE RESPUESTA CONFIGURADO CORRECTAMENTE", vbOKOnly +
vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR EL MODO DE RESPUESTA", vbOKOnly +
vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

156

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CBST


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub SELECT_BEARER_SERVICE()
Select Case RESULT_CODE
Case "OK"
MsgBox "VELOCIDAD DE CONEXIN CONFIGURADA CORRECTAMENTE", vbOKOnly
+ vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR LA VELOCIDAD DE CONEXIN", vbOKOnly +
vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA ATS2


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub ESCAPE_SEQUENCE_CHARACTER()
Select Case RESULT_CODE
Case "OK"
MsgBox "CARACTER DE ESCAPE CONFIGURADO CORRECTAMENTE", vbOKOnly +
vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR EL CARACTER DE ESCAPE", vbOKOnly +
vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CLCK


'se comprueba que la trama llego correctamente
'y el RELOJ ha quedado configurado
Public Sub SET_CLOCK()
Select Case RESULT_CODE
Case "OK"
MsgBox "EL RELOJ SE HA CONFIGURADO CORRECTAMENTE", vbOKOnly +
vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR EL RELOJ", vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CMGF


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub NEWMSG_INDICATION()
Select Case RESULT_CODE

157

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

Case "OK"
MsgBox "NOTIFICACION DE MENSAJES CONFIGURADA CORRECTAMENTE",
vbOKOnly + vbInformation
Case "ERROR"
MsgBox "ERROR AL CONFIGURAR LA NOTIFICACION DE MENSAJES", vbOKOnly
+ vbCritical
TRAMA
se vuelve a enviar
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CPBS


'se comprueba que la trama llego correctamente y el nuevo parmetro ha
quedado configurado
Public Sub PHONE_CALL_STORAGE()
Form05.text_ShowCalls.Text = ""
Select Case RESULT_CODE
Case "OK"
MsgBox "MEMORIA DE DIALLED/RECEIVED/MISSED CALLS SELECCIONADA",
vbOKOnly + vbInformation
Case "ERROR"
MsgBox "ERROR EN LA TRAMA DE SELECCIN DE MEMORIA
DIALLED/RECEIVED/MISSED CALLS", vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA ATA


'se comprueba que la trama llego correctamente
'y establecido comunicacion o ha surgido algun problema
Public Sub ANSWER()
Select Case RESULT_CODE
Case "OK"
MsgBox "LLAMADA ACEPTADA", vbOKOnly + vbInformation
online_data = True
Case "CONNECT 9600"
MsgBox "CONEXIN ESTABLECIDA A 9600 baudios", vbOKOnly +
vbInformation
online_data = True
Case "NO CARRIER"
MsgBox "NO CARRIER", vbOKOnly + vbExclamation
Case "ERROR"
MsgBox "ERROR AL ACEPTAR LA LLAMADA", vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

158

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'TRAMA DE TRATAMIENTO DE LA RESPUESTA ATD


'se comprueba que la trama llego correctamente
'y establecido comunicacion o ha surgido algun problema
Public Sub ATD()
Select Case RESULT_CODE
Case "CONNECT 9600"
MsgBox "CONEXIN ESTABLECIDA A 9600 baudios", vbOKOnly +
vbInformation
online_data = True
Case "NO DIALTONE"
MsgBox "SIN TONO", vbOKOnly + vbCritical
Case "BUSY"
MsgBox "INTERLOCUTOR OCUPADO", vbOKOnly + vbExclamation
Case "NO CARRIER"
MsgBox "NO CARRIER", vbOKOnly + vbExclamation
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CHUP


'se comprueba que la trama llego correctamente
'y se ha rechazado la llamada o si ha surgido algun error
Public Sub HANG_UP_CALL()
Select Case RESULT_CODE
Case "OK" 'nos llaman y rechazamos
MsgBox "LLAMADA RECHAZADA", vbOKOnly + vbInformation
Case "ERROR"
MsgBox "ERROR AL RECHAZAR LA LLAMADA. INTNTELO DE NUEVO", vbOKOnly
+ vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

'TRAMA DE TRATAMIENTO DE LA RESPUESTA ATS0


'se comprueba que la trama llego correctamente
'y estamos en modo online o si ha surgido algun error
Public Sub RETURN_TO_ONLINE_DATA_MODE()
Select Case RESULT_CODE
Case "CONNECT 9600", vbOKOnly + vbInformation
online_data = True
MsgBox ("MODO ONLINE")
Case "NO CARRIER"
MsgBox "NO PODEMOS ACCEDER AL MODO ONLINE", vbOKOnly +
vbExclamation
Case "ERROR"
MsgBox "ERROR AL ACCEDER AL MODO ONLINE", vbOKOnly + vbCritical
End Select
strBUFFER = ""
End Sub
'************************************************************************

159

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

'FUNCION QUE DEVUELVE EL TEXTO QUE NOS INTERESA DISCRIMINAR DE TODA LAS
'RESPUESTA OBTENIDA
'LEE A PARTIR DE LA TRAMA ENVIADA + CRLF HASTA QUE ENCUENTRA LOS
'CARACTERES FINALES CRLF
'DE ESTE MODO RETORNA EL MENSAJE OK, ERROR, CONNECT, BUSY,...
Public Function RESULT_CODE()
Dim Str2 As String
'declaracin de variables
Dim Str3 As String
Dim straux1 As String
Dim straux2 As String
Str2 = vbCr + vbCrLf
Str3 = vbCrLf

'tramas de comparacin

'proceso de discriminacin del mensaje


straux1 = Mid(strBUFFER, InStr(strBUFFER, Str2) + 3)
straux2 = Mid(strBUFFER, InStr(strBUFFER, Str2) + 3, InStr(straux1, Str3)
- 1)
RESULT_CODE = straux2
'devuelve el mensaje
End Function
'************************************************************************

160

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.26 MODULE DISABLEX.(dbx.bas)


'MDULO DE DESHABILITACIN DEL BOTN CERRAR
Public Declare Function GetSystemMenu Lib "user32" ( _
ByVal hWnd As Long, _
ByVal bRevert As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" ( _
ByVal hMenu As Long) As Long
Public Declare Function RemoveMenu Lib "user32" ( _
ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Public Declare Function DrawMenuBar Lib "user32" ( _
ByVal hWnd As Long) As Long
Public Const MF_BYPOSITION = &H400&
Public Const MF_DISABLED = &H2&
Public Sub DisableX(frm As Form)
Dim hMenu As Long, nCount As Long
hMenu = GetSystemMenu(frm.hWnd, 0)

'Get handle to system MEN

nCount = GetMenuItemCount(hMenu)

'Numero De Elementos Del Menu

Call RemoveMenu(hMenu, nCount - 1, MF_DISABLED Or MF_BYPOSITION)


'Borrar Ultimo Elemento Del Menu (Cerrar)
DrawMenuBar frm.hWnd
'Redibujar Menu
End Sub

161

Comunicacin Punto a Punto Va Mdem GSM

Cdigo Fuente

10.2.27 MODULE ShellNotifyIcon.(sNi.bas)


'MDULO DE GESTION DEL ICONO DE NOTIFICACIN EN LA BARRA DE TAREAS
'Declaracion de tipos
Public Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long
szTip As String * 64
End Type
'Declaracion
Public Const
Public Const
Public Const

de constantes para
NIM_ADD = &H0
NIM_MODIFY = &H1
NIM_DELETE = &H2

las funciones de la API


' aadir un icono
' Editar/Cambiar un icono
' borrar icono de la barra de tareas

'Declaracion de constantes para los eventos del raton


Public Const WM_MOUSEMOVE = &H200
'Flags
Public
Public
Public

que indican los campos de NOTIFYICONDATA.


Const NIF_MESSAGE = &H1
Const NIF_ICON = &H2
Const NIF_TIP = &H4

'Constantes para los click en el icono


Public Const WM_LBUTTONDBLCLK = &H203
izquierdo

'doble click con el botn

'Declararacion de la funcin de la API


Public Declare Function Shell_NotifyIcon Lib "shell32" Alias
"Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

162

Comunicacin Punto a Punto Va Mdem GSM


10.2.28 MODULE SOUNDS.(Sounds.bas)
'MDULO PARA LA REPRODUCCION DE UN SONIDO
Declare Function sndPlaySound Lib "winmm.dll" Alias _
"sndPlaySoundA" (ByVal lpszSoundName As String, ByVal _
uFlags As Long) As Long

163

Cdigo Fuente

Comunicacin Punto a Punto Va Mdem GSM

11. ANEXOS

164

Anexo

Comunicacin Punto a Punto Va Mdem GSM

Anexo

ANEXOS
11.1 Manual GM29
El GM29 Integrators Manual se adjunta en el CD-ROM anexo.
Este manual se divide en 3 sub-apartados en los que se trata:
Descripcin general del mdem
Integracin del mdem
Comandos AT

11.2 SEMINARIO Matrix Electrnica


Se anexa la informacin relativa al Seminario. Incluye documentacin tcnica,
presentacin, sesin practica, entre otros datos de inters (disponible en el CD-ROM
adjunto).
La asistencia a dicho Seminario en Abril de 2003 nos dot de una visin general del
producto GM29, as como de su procedimiento de actuacin, posibilidades y futuras
aplicaciones.

11.3 Proyecto en formato PDF


Se incluye en el CD-ROM anexo este documento en formato PDF.

11.4 Archivos fuente


Se presentan los diferentes archivos fuente de la aplicacin (lenguaje de
programacin Visual Basic). Disponibles tambin en el CD-ROM adjunto

165

Comunicacin Punto a Punto Va Mdem GSM

12. BIBLIOGRAFA

166

Bibliografa

Comunicacin Punto a Punto Va Mdem GSM

Bibliografa

BIBLIOGRAFA
[1] Sony Ericsson.- GM29 Integrators Manual
200
[2] Seminario MATRIX:
Seminario 2003 GSM-GPRS M2M SonyEricsson-Telefonica Movistar
ABRIL 2003
[3] C.Tavernier. - Mdems. Tcnica y Realizacin.
Ed. Paraninfo 1991
[4] Enrique Maldonado Rollizo. - Comunicaciones con el PC. Mdems
Ed. Anaya Multimedia 1994
[5] Jorge Vasconcelos Santillan. - Manual de construccin de programas
Mxico 2000
[6] La Biblia de Visual Basic 6.0
Ed. Anaya Multimedia 199
[7] Juan Diego Gutierrez Gallardo.- Visual Basic 6
Ed. Anaya Multimedia 2000
[8] Fco. Javier Ceballos.- Enciclopedia de Microsoft Visual Basic 6.0.
Ed. Ra-Ma 1999.
[9] Francisco Charte Ojeda.- Programacin con Visual Basic 6.0
Ed. Anaya Multimedia 1998
[10] SONY-ERICSSON GM29
http://www.sonyericsson.com/m2m/spg.jsp?page=start
[11] Comunicaciones GSM
http://www.auladatos.movistar.com/Aula-de-Datos/Tutoriales-y-Documentacion
[12] Universo Digital Captulo 12.9. - EL PUERTO SERIE: UART 8250.
http://atc.ugr.es/docencia/udigital/1209.html
[13] MSDN Library Visual Studio 6.0 y la ayuda online
http://msdn.microsoft.com/library/
[14] Guillermo Llanderas.- Curso sobre Visual Basic
http://www.elguille.info/indice.asp

167

You might also like