166
Comunicación Punto a Punto Vía Módem GSM Titulación: Ingenieria Técnica Industrial en Electrónica Industrial AUTOR: ALBERTO LORENZO BONILLO DIRECTOR: ERNEST GIL DOLCET FECHA: ENERO / 2004.

Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Embed Size (px)

Citation preview

Page 1: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto

Vía Módem GSM

Titulación: Ingenieria Técnica Industrial en Electrónica Industrial

AUTOR: ALBERTO LORENZO BONILLO DIRECTOR: ERNEST GIL DOLCET

FECHA: ENERO / 2004.

Page 2: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Índice

3

1.ÍNDICE

Page 3: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Índice

4

ÍNDICE 1. ÍNDICE.........................................................................................................3 2. PRESENTACIÓN-OBJETIVOS...............................................................7 3. SISTEMAS DE COMUNICACIÓN..........................................................9

3.1 Introducción......................................................................................................10 3.2 SMS ...................................................................................................................10

3.2.1 Características................................................ .....................................10 3.2.2 Principales aplicaciones................................................ ... ..................10

3.3 Llamadas de VOZ.............................................................................................11 3.3.1 Características........................................... ..........................................11 3.3.2 Principales aplicaciones........................................... ...........................11

3.4 FACSIMIL...................................................................... .................................11 3.4.1 Características........................................... ..........................................11

3.5 HSCSD ...................................................................... .......................................12 3.5.1 Características........................................... ..........................................12 3.5.2 Principales aplicaciones........................................... ...........................12 3.5.3 Ventajas y desventajas........................................... .............................12

3.6 GPRS ...................................................................... .........................................13 3.6.1 Características de Funcionamiento........................................... ..........13 3.6.2 Principales aplicaciones........................................... ...........................13

3.7 Conclusiones...................................................................... ...............................14 4. COMANDOS AT.......................................................................................15

4.1 Introducción...................................................................... ...............................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 Identificación........................................... ...........................................20

5. PROGRAMACIÓN DEL PUERTO SERIE RS-232.............................21

5.1 Introducción......................................................................................................22 5.2 Configuración del puerto serie........................................................................22 5.3 Acceso al puerto serie mediante el control MsComm...................................23

5.3.1 Propiedades De Configuración Previa A Su Uso................................23 5.3.2 Propiedades Propias Del Tiempo De Ejecución..................................26 5.3.3 Eventos Del MsComm........................................... .............................27

Page 4: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Índice

5

6. DISEÑO DE LA APLICACIÓN CON VISUAL BASIC.......................29 6.1 Introducción...................................................................... ...............................30 6.2 Estructura de programación...........................................................................30

6.2.1 Módulos de formulario........................................... ............................30 6.2.2 Módulos estándar........................................... .....................................30 6.2.3 Controles........................................... ..................................................31

7. DIAGRAMAS DE FLUJO.......................................................................34

7.1 Introducción..................................... ...............................................................35 7.2 Funcionamiento General Del Programa.......................................................36 7.3 Formato General De Comunicación PC-Módem.........................................37 7.4 Enviar Tramas: Enviar Comando, Obtener Y Tratar Respuesta..............38 7.5 Espera De La Respuesta Completa...............................................................39

metodología a) ........................................... .................................................39 metodología b) ........................................... .................................................40 metodología c) ........................................... .................................................41 metodología d) ........................................... .................................................42

7.6 Tratar Respuesta (Procedimiento Treat_Responses) ..................................43 7.7 Configuración Del Puerto Serie..................................... ...............................44 7.8 Control Del Código De Acceso (Acción PIN_CONTROL) .........................45 7.9 Formulario De Introducción Del Código Pin................................................46 7.10 Tratar Respuesta Introducción De Código Pin (Acción Pin_Code) ........47 7.11 Formulario De Introducción Del Código PUK............................................48 7.12 Tratar Respuesta a la Introducción De Código PUK (PUK_Code) .........49 7.13 Menú Principal............... ............... ............... ............... ............... ...............50 7.14 Cargar La Configuración Del Programa............... ............... .....................51 7.15 Registro De Llamadas............... ............... ............... ............... ....................53 7.16 Lectura De La Memoria Del Módem (Acción Phonebook_Read) ............54 7.17 Menú De La Agenda Telefónica............... ............... ............... ....................56 7.18 Búsqueda Por Nombre En La Agenda Telefónica............... .......................57 7.19 Búsqueda Por Posición En La Agenda Telefónica............... ......................59 7.20 Insertar Nueva Entrada En La Agenda Telefónica............... .....................60 7.21 Menú Mensajes SMS............... ............... ............... ............... ......................61 7.22 Configuración De Los Mensajes SMS............... ............... ..........................62 7.23 Acción Preferred Message Storage............... ............... ............... ...............64 7.24 Leer, Borrar y Reenviar SMS Desde Memoria............... ............... ...........65 7.25 Leer Mensaje (Acción Read_Message) ............... ............... ........................66 7.26 Formulario Escribir Mensajes (Guardar o Enviar) ............... ...................68 7.27 Enviar o Guardar (Acción 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 (Acción Command Mode) ............... .............75 7.33 Configuración De Parámetros Para La Transferencia CSD-HSCSD.......76

Page 5: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Índice

6

8. MANUAL DE USUARIO.........................................................................78 8.1 Introducción............... ............... ............... ............... ............... ......................79 8.2 Configuración Del Puerto Serie ............... ............... ............... .....................80 8.3 Control De Códigos............... ............... ............... ............... ..........................81 8.4 Menú Principal............... ............... ............... ............... ............... .................82 8.5 Agenda Telefónica............... ............... ............... ............... ............................83 8.6 Mensajes De Texto (SMS) ............... ............... ............... ............... ..............85 8.7 Transferencia De Datos............... ............... ............... ............... ....................88 8.8 Registro De Llamadas............... ............... ............... ............... ......................90

9. CONCLUSIONES.....................................................................................91 10. CÓDIGO FUENTE COMENTADO.....................................................94

10.1 Introducción............... ............... ............... ............... ...................................95 10.2 Código Fuente............... ............... ............... ............... ................................95

MÓDULOS 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

MÓDULOS 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. BIBLIOGRAFÍA..................................................................................166

Page 6: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Presentación-Objetivos

7

2. PRESENTACIÓN-OBJETIVOS

Page 7: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Presentación-Objetivos

8

PRESENTACIÓN - OBJETIVOS

El objetivo del presente proyecto es realizar una comunicación entre dos terminales, los cuales pueden ser o bien dos dispositivos módem de tipo GSM, o entre un dispositivo móvil (teléfono móvil) y un módem GSM.

Un módem GSM es un dispositivo que se conecta a la red GSM para enviar y / o recibir dicha información. Considerando que la red GSM es una red totalmente digital, no es necesaria la utilización del módem (que realizan una conversión analógico-digital MOdulador-DEModulador), sino que se necesita sólo un adaptador especial que adapta el flujo de datos proveniente del PC, al flujo de datos utilizado en el enlace digital entre el teléfono y la red GSM.

Los módem GSM empleados en este estudio son modelos GM29 de la compañía SONY-ERICSSON, que han estado suministrados por el CITEE (Centre d’Innovació Tecnològica en Enginyeria Electrònica de Tarragona).

Se estudiaran diferentes tipos de comunicación 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 comunicación de la red GSM, sino que profundizaremos en la comunicación PC-MÓDEM, realizando una interficie de usuario que gobierne dicho módem. Todo ello con el propósito de conseguir la comunicación con otro terminal.

La comunicación PC-MÓDEM se establece a través del puerto serie, el cual será objeto de análisis en cuanto a la forma de actuación y estudio de su programación y acceso para controlar el dispositivo conectado a él.

El GM29 trabaja mediante un conjunto de instrucciones denominados comandos AT (HAYES). El envío de estos comandos y la recepción y posterior tratamiento de las respuestas son la base de este proyecto.

Todo ello se realizará mediante la programación en lenguaje VISUAL BASIC.

Page 8: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Sistemas de Comunicación

9

3. SISTEMAS DE COMUNICACIÓN

Page 9: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Sistemas de Comunicación

10

SISTEMAS DE COMUNICACIÓN

3.1 Introducción A continuación presentaremos los diferentes tipos de comunicación existentes, así

como una breve descripción de sus características, funcionamiento y principales aplicaciones de cada una de ellos.

Hablaremos de los mensajes de texto (SMS), de las llamadas de voz, del envío de faxes, y finalmente de la trasferencia de datos y conexión 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 teléfonos móviles (o dispositivos GSM conectados a algún procesador). El SMS fue creado como una parte del estándar GSM fase 1 en 1992. 3.2.1 Características

Hay varias características únicas del servicio de mensajes cortos (SMS), según lo definido dentro del estándar digital de telefonía móvil GSM:

• Un mensaje corto puede tener una longitud de hasta 160 caracteres. Éstos pueden

ser palabras, números o una combinación alfanumérica. Los mensajes cortos basados en No-texto (por ejemplo, en formato binario) también se utilizan.

• Los mensajes cortos no se envían directamente del remitente al receptor, sino que

se envían a través de un centro de SMS. Cada red de telefonía móvil que utiliza SMS tiene uno o más centros de mensajería para manejar los mensajes cortos.

• Los mensajes cortos se pueden enviar y recibir simultáneamente a la voz, datos y

llamadas del fax. Esto es posible porque mientras que éstas asumen el control de un canal de radio dedicado durante la llamada, los mensajes cortos viajan sobre un canal dedicado a señalización independiente de los de tráfico.

3.2.2 Principales aplicaciones

Las principales aplicaciones basadas en SMS son: Comunicación entre usuarios,

Notificaciones del buzón de voz, Fax, E-mail, Servicios de Información, Comercio electrónico, Supervisión remota,...

Page 10: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Sistemas de Comunicación

11

3.3 Llamadas de VOZ Sistema de comunicación basado en la transferencia digital de paquetes de información en formato voz a través de la red inalámbrica. Esta comunicación se realiza a través de ondas hertzianas y a una frecuencia de 900 y 1800 MHz dependiendo del sistema. 3.3.1 Características

En una comunicación por voz es necesario una estación móvil (teléfono móvil, módem GSM, ...) que además de permitir el acceso a la red a través de la interfaz de radio con funciones de procesado de señales y de radio frecuencia, debe ofrecer también una interfaz al usuario humano (un micrófono, altavoz, display y tarjeta, para la gestión de las llamadas de voz). Dicha tarjeta (SIM) nos permite el acceso a una operadora que nos preste el servicio de la conexión.

Para efectuar una comunicación, una red integrada de estaciones base debe proporcionar la suficiente cobertura de radio a todas las estaciones móviles. Las estaciones base, a su vez, deben estar conectadas a un eje central llamado Centro de Conmutación Móvil (MSC). El MSC proporciona conectividad entre la Red Telefónica de Conmutación Pública (PSTN) y las numerosas estaciones base, y por último, entre todos los abonados móviles de un sistema. La PSTN forma la red de telecomunicaciones global que interconecta los centros de conmutación de telefonía convencional (terrestres), llamados oficinas centrales, con los MSCs de todo el mundo. 3.3.2 Principales aplicaciones Comunicación entre usuarios, comunicaciones rápidas directas y fluidas, en las que es importante el contacto con el interlocutor, Servicios de Información, Centralitas, Atención al cliente, ... 3.4 FACSIMIL

Su abreviatura es el FAX. Sistema para el envío y recepción de una página impresa entre lugares distantes.

3.4.1 Características

Básicamente, estos dispositivos digitalizan una o más hojas de papel, las convierten en paquetes de datos que se transmiten a través de una línea de comunicación (Internet, BBS, GSM, cualquier red, etc...) a otro aparato de fax, e imprimen dicha información en un papel para que el receptor del mensaje pueda leerlo. Las máquinas de fax se componen de un escáner, que digitaliza la página de papel, un módem, que transmite la información, y una impresora, que devuelve una copia en papel del documento recibido.

Page 11: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Sistemas de Comunicación

12

Los módems GSM para computadora son capaces de enviar y recibir facsímiles. Los datos a enviar provienen de imágenes o textos almacenados en la computadora, y la impresión de los documentos recibidos es opcional, ya que los podemos ver en pantalla. La utilización de esta característica requiere un software adicional específico. 3.5 HSCSD (Datos por Conmutación de Circuitos a Alta Velocidad)

El HSCSD (High Speed Circuit Switched Data) es una especificación de la Fase 2+ de GSM, homologada por el ETSI (European Stándard Institute) en febrero de 1997 y comercializada a partir de 1999. 3.5.1 Características

HSCSD es una plataforma multi-canal para transmisión 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 transmisión de datos a una velocidad de hasta 57,6 kbit/s o superior, cuando se combina con productos de compresión y filtro (combinando varios canales de 9,6 Kbit/s o 14,4 Kbit/s.)

Con esta tecnología el número de canales usados en cada instante por una comunicación de datos es variable dependiendo de la saturación de la célula en la que esté operando el teléfono móvil. 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, difusión TV, navegación por Internet... 3.5.3 Ventajas y desventajas

La mayor ventaja del HSCSD, es que la inversión para ser implantado es mínima, ya que básicamente se trata de una modificación software, unos mínimos cambios hardware y ninguna dotación física. Así pues, aunque algunos operadores y fabricantes se han volcando directamente con la tecnología GPRS, el HSCSD permite a aquellos que lo implanten en su red adelantarse en la oferta de servicios avanzados con una inversión que no va a perder rentabilidad a largo plazo, ya que muchas de las aplicaciones GPRS, se inician con el HSCSD; algunas se trasladarán al sistema de transmisión por paquetes, pero otras seguirán utilizando el HSCSD, más adecuado a aquellas funciones que necesitan una velocidad constante y un mínimo retraso, como puede ser la transmisión de imágenes de vídeo o imágenes 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).

Page 12: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Sistemas de Comunicación

13

3.6 GPRS (Servicio General de Paquetes por Radio) A mediados de la década de los 90, el ETSI (European Telecommunication

Standard Institute), tomó la decisión de establecer un nuevo estándar basado en la interfaz aire del sistema GSM, para la transmisión de paquetes vía radio denominado GPRS (General Packet Radio System), también conocido como GSM-IP ya que permite una adecuada integración de los protocolos de Internet TCT/IP con la red móvil instalada GSM

La tecnología GPRS se basa en la conmutación de paquetes realizando la

transmisión sobre la red GSM, que básicamente es la tecnología de conmutación de circuitos. En vez de enviar una corriente continua de datos a través de una conexión permanente, la conmutación de paquetes sólo utiliza la red cuando hay datos que enviar. El uso de GPRS permite a los usuarios enviar y recibir datos a una velocidad máxima de 115kbit./s. La tecnología GPRS está particularmente indicada para enviar y recibir pequeños y grandes volúmenes de datos, como e-mail y buscador de web. 3.6.1 Características 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 través 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 transmisión. 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, adaptándose así perfectamente a la muy intermitente naturaleza de las aplicaciones de datos.

Mientras el sistema GSM fue originariamente diseñado con un especial énfasis en las sesiones de voz, el principal objetivo de GPRS es ofrecer un acceso a redes de datos estándar, como TCT/IP.

El actual sistema GSM opera en un modo de transmisión 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 comunicación incluso cuando no se transmiten datos.

El GPRS ofrece una transmisión 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 través de la interfaz aérea, los recursos radio pueden ser liberados para el uso por parte de otros usuarios. Después de esto, el paquete viaja hacia su destino a través 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.

Además permite a los operadores ofrecer un servicio a mejor precio, ya que la facturación se puede basar en la cantidad de datos enviados o recibidos. 3.6.2 Principales aplicaciones

Ejemplos de estas aplicaciones son: Correo electrónico, servicios de chat, información visual y textual, mensajes cortos optimizados, transmisión de imágenes fijas,

Page 13: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Sistemas de Comunicación

14

transmisión de imágenes en movimiento, navegación web, teletrabajo, servicios de audio, ubicación de vehículos, acceso remoto a redes locales, transferenc ia de ficheros... 3.7 Conclusiones

Conocidos los diferentes sistemas de comunicación posibles a través de la red GSM, en este proyecto se implementaran el sistema de envío de mensajes cortos (SMS) y la transferencia de datos CSD-HSCSD (se diferencian en el número de slots utilizados, una es más rápida que la otra y por tanto más cara), como comunicaciones significativas de las anteriormente estudiadas. La mensajería en formato SMS es un sistema consolidado y en constante auge, dada su versatilidad y bajo coste, válido para infinidad de aplicaciones y consideramos que una comunicación de este tipo es un modo muy representativo de nuestros tiempos.

La transferencia de datos vía CSD nos permitirá comunicarnos con otro módem a través de la red inalámbrica desde cualquier punto donde alcance la cobertura suministrada por la operadora, sin necesidad de la conexión a un sistema fijo. De este modo una comunicación de este tipo nos puede ser válida para aquellos lugares a donde no alcance la red fija convencional y sea necesario un constante contacto e intercambio de información.

Aunque, como hemos estudiado, el sistema GRPS gana usuarios en cuanto a

aplicaciones se implementan y los operadores de red lo potencian dado su optimización de los recursos, su fundamento y su base radican en la transferencia CSD, y por ese motivo optamos por llevar a cabo el caso práctico de esta última.

De este modo, debemos gobernar el módem y enviarle una serie de instrucciones a través del puerto serie para conseguir nuestro propósito y que establezca la comunicación deseada con otro terminal.

Esas instrucciones son los denominados comandos HAYES o AT y los presentamos en el capítulo siguiente.

Page 14: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Comandos AT

15

4. COMANDOS AT

Page 15: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Comandos AT

16

4. COMANDOS AT 4.1 Introducción

El control del módem GSM a través 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 orígenes de la comunicación por módem definió una serie de comandos u órdenes para que el software de comunicaciones pudiera comunicarse con el módem, pudiendo controlar este último.

Estos comandos tuvieron tanto éxito que se convirtieron en el virtual estándar de

comunicaciones, y los módems que los comprenden (el 99,99% de los módems modernos) se denominan compatibles Hayes.

Todos los comandos de este protocolo comienzan por AT y acaban por CR (aunque

este último carácter es configurable). 4.2 Tipos de Comandos AT Existen dos tipos principales de comandos :

• Comandos que ejecutan acciones inmediatas (ATD marcación, ATA contestación o ATH desconexión)

• Comandos que cambian algún parámetro del módem (ATS2=43 configuración del carácter de escape).

4.3 Modos De Funcionamiento Del Módem

El módem está en modo comandos (command mode) si éste responde a los

comandos que envía el ordenador. En este modo es posible configurar o realizar diversas operaciones, consulta, lectura o de marcado y conexión.

Cuando el módem se conecta con otro terminal pasa al modo en línea (online data

mode). En este modo cualquier información que reciba del puerto serie del ordenador será enviada al terminal distante. El módem no procesa la información y simplemente la trasmite a través de la línea de comunicación.

Para salir del modo en línea y pasar de nuevo al modo comandos se envía al módem

+++(secuencia de escape).

Page 16: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Comandos AT

17

4.4 Listado de comandos utilizados

A continuación presentamos un listado de comandos AT utilizados en este proyecto así como una breve explicación de las instrucciones que ejecuta el módem 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 algún error. Dependiendo del parámetro que le pasemos, la respuesta sería ERROR, ERROR + un código numérico, o, ERROR + descripción del error. Empleamos este último modo para poder concretar más que tipo de error se ha producido en el envío y recepción de cada uno de los comandos.

4.4.2 CODIGOS DE ACCESO

• AT+CPIN (PIN Control). Dispone de 2 metodologías de uso.

a) mediante la interrogación AT+CPIN? podemos decretar el estado del módem en cuanto a su control de acceso, si es necesario un primer código PIN (personal identification number), si por el contrario la tarjeta SIM esta anclada y es necesario un segundo código denominado PUK (personal unlock code) e incluso si es necesario la introducción de la tarjeta en el módulo.

b) Para introducir los códigos anteriormente comentados (PIN o PUK), debemos

enviar el comando AT+CPIN y el código requerido. En este caso nos informará si el código es correcto (y el terminal se encuentra preparado), si es incorrecto, si es necesario el código PUK o si la tarjeta resta bloqueada por una introducción repetitiva incorrecta de los códigos.

4.4.3 MENSAJES SMS Podemos dividir los comandos en 2 tipos, según su funcionalidad:

a) configuración del sistema de envío o recepción

• 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

Page 17: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Comandos AT

18

mensajes recibidos. Estas memorias pueden tomar los valores de módem o de tarjeta SIM.

• AT+CSCA (Service Centre Address). Establece el número del centro de

servicio. Este número, correspondiente al servidor, es específico para cada operadora y es destinatario intermedio entre el emisor y el receptor.

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

máximo de permanencia de un mensaje en el centro de servicio antes de que sea posible el envío al destinatario final.

• +CNMI (New Message Indications to TE). Configura la metodología de

notificación de un nuevo mensaje recibido.

b) ejecución de acciones

• AT+CMGR (Read Message). Lee un mensaje almacenado en la posición pasada como parámetro.

• AT+CMGD (Delete Message). Borra un mensaje almacenado en la posición

pasada como parámetro.

• AT+CMGW (Write Message to Memory). Memoriza un mensaje (el contenido del cual es pasado como parámetro) en la primera posición de memoria libre para un posterior envío, lectura, modificación, etc.

• AT+CMGS (Send Message). Envía un mensaje, cuyo contenido debemos

escribir, a un destinatario especificado.

• AT+CMSS (Send From Storage). Envía un mensaje almacenado en una determinada posición de memoria.

4.4.4 TRANSFERENCIA DE DATOS CSD-HSCSD Se dividen también en 2 tipos, según su funcionalidad:

a) configuración del sistema de envío o recepción

• 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 automático, especificando previamente el número de RINGS que deben acontecer antes de la aceptación de la llamada.

Page 18: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Comandos AT

19

• AT+CBST (Select Bearer Service Type). Establece entre otros aspectos, la velocidad de conexión de la transferencia de datos. Podemos elegir un valor específico o configurarlo de modo automático, ya que permite una selección óptima en cada instante (aumentará la velocidad cuando sea posible).

• ATS2 (Escape Sequence Character). Configura el carácter de la secuencia

de escape. Para pasar de modo en línea a modo comando, debemos enviar al módem la secuencia +++AT (donde + es el carácter establecido por este comando)

b) ejecución de acciones

• ATD (Dial). Establece la comunicación con un terminal remoto. Se debe adjuntar el número del destinatario. La conexión 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 línea. 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 telefónica podemos escoger entre la agenda guardada en el módem 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 búsqueda 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 posición o un rango.

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

aportan los campos posición, número y nombre) 4.4.6 FECHA Y HORA

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

Page 19: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Comandos AT

20

4.4.7 IDENTIFICACIÓN Muestra información referente al módem 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).Revisión.

• AT+CGSN (Read MS Product Serial Number Identification). Número de serie.

• AT+CIMI (Subscriber Identification). Número de serie de la tarjeta.

Page 20: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

21

5. PROGRAMACIÓN DEL PUERTO SERIE RS-232

Page 21: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

22

PROGRAMACIÓN DEL PUERTO SERIE RS-232 5.1 Introducción

El canal serie del PC es uno de los recursos más comunes para la conexión de periféricos, como pueden ser dispositivos de puntero (mouse) o de comunicación (módem, cables de conexión entre PC’s). 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 más externos para el uso del usuario.

El acceso a cada uno de ellos se realiza a través de sus direcciones BASE COM1=3F8, COM2=2F8, COM3=3E8 , COM4=2E8. 5.2 Configuración 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 recepción. Su función es la de recibir un dato del puerto.

• Divisor Latch LSB (DLL): Divisor de Velocidad, parte baja. • Transmitter Holding Register (THR): Registro de retención de transmisión. Su

función 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 habilitación de interrupciones.

BASE +2:

• Interrupt Identification Register (IIR): Registro de identificación de interrupciones. Controla la prioridad de las mismas.

BASE +3:

• Line Control Register (LCR): Registro de control de línea. Controla los parámetros de configuración del canal serie (bits de datos, bits de stop, tipo de paridad...).

BASE +4:

• Modem Control Register (MCR): Registro de control del módem. Activa las señales del mismo.

BASE +5:

• Line Status Register (LSR): Registro de estado de la línea. Muestra el estado del canal serie (errores, etc).

Page 22: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

23

BASE +6: • Modem Status Register (MSR): Registro de estado del módem. 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 través de él.

Este control nos ayudará en gran medida a paliar la ardua tarea de la comunicación de nuestra aplicación con el puerto serie (con tal de configurarlo y permitir el acceso al puerto) en el caso de que tuviéramos que acceder manualmente a cada uno de los registros que lo componen. Por tanto trabajaremos con él con el fin de simplificar nuestra labor.

A continuación destacaremos las propiedades mas importantes de este control, que

son las que nos permiten interactuar con el módem conectado al puerto serie. 5.3.1 Propiedades De Configuración Previa A Su Uso

Debemos configurar el puerto serie en tiempo de diseño. Este se corresponde al modo de funcionamiento cuando se crea una aplicación. En tiempo de diseño, se generan los componentes de la aplicación y se establecen sus propiedades (aun existiendo la opción de ser modificados por el usuario una vez iniciado el programa, consideramos que es en tiempo de diseño porque aún no hemos establecido la conexión con el puerto serie). CommPort

Indica el número del puerto serie usado. Cambiando esa propiedad podemos

cambiar el puerto de comunicación que vamos a usar. Su valor dependerá del puerto al que conectemos el dispositivo GM29.

Settings

Indica la velocidad, paridad, número de bits y bits de stop (parada) que se van a

usar en la comunicación.

Figura 0. Control MsComm

Page 23: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

24

*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 envía bit de paridad ni hace comprobación de paridad en la recepción. O - Envía y comprueba paridad, con el criterio de paridad IMPAR E - Envía y comprueba paridad, con criterio de paridad PAR

*Los valores para el parámetro Bits de Información pueden ser : 7 - Se envían / reciben 7 bits por trama de información. 8 - Se envían / reciben 8 bits por trama de información 5 - Se envían / reciben 5 bits por trama de información. *Los valores para el parámetro Bits de parada pueden ser : 1 - Se envía un bit de parada 2 - Se envían 2 bits de parada

Tanto el puerto serie al cual conectemos el módem como la velocidad, paridad, número de bits de información y número de bits de stop (parada) pueden ser configurados por el usuario mediante unas listas desplegables que aparecerán al iniciarse nuestra aplicación.

De todos modos, las recomendaciones del fabricante SONY ERICSSON, las cuales restan reflejadas en el GM29 Integrator’s manual (anexo2), son las que presentamos a continuación: Velocidad =9600 baudios, paridad = ninguna, Bits de Información = 8, Bits de parada =1 Handshaking

Especifica el método de control sobre el flujo de información. En una

comunicación serie se necesita conocer si el puerto puede enviar información (necesita saber si el módem está preparado para recibirla) y necesita indicarle al módem que él está preparado para recibir información. Establece las condiciones de control que uno va a tener sobre otro. El Control de Flujo puede hacerse de dos formas :

• mediante las señales auxiliares del puerto (RTS, CTS, DSR, DTR), que son cables adicionales que tendrán una tensión positiva respecto a los 0V del equipo si esa señal está activada, o una tensión negativa si no lo está.

• mediante señales especiales que se envían por los dos cables que transportan la

información. Mediante estas dos señales podemos controlar que el ordenador envíe información o deje de enviarla. De igual forma, podemos indicarle al módem que envíe o no envíe. Estas señales 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

Page 24: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

25

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 módem 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 tráfico. Si la aplicación fuese mayor sí que deberíamos implementar algún tipo de control de flujo. InBufferSize

Mediante esta propiedad establecemos el tamaño del Buffer (almacén de datos) de entrada. Este Buffer sirve para poder recibir datos sin que tenga que intervenir la aplicación continuamente para controlar el puerto de entrada.

Configuramos el buffer de entrada a 1024 caracteres. Valor suficiente para nuestra aplicación

OutBufferSize

Mediante esta propiedad controlamos el tamaño del Buffer de salida. El tamaño de los Buffers depende de la aplicación y de la velocidad de

comunicación. Tanto más grande cuánta mayor sea la velocidad de transferencia de datos. Configuramos el buffer de salida para 512 caracteres de capacidad. Valor

suficiente para nuestra aplicación.

RThreshold, SThreshold

Estas dos propiedades especifican el número de caracteres que deben estar presentes en los Buffers de Recepción y Transmisión respectivamente, para que se produzca el evento OnComm relativo a recepción y transmisión de caracteres. (Eventos EvReceive y EvSend)

Dado que la nuestra es una pequeña aplicación forzaremos que se genere el evento

a cada carácter que reciba o envíe 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 aplicación, impidiéndole realizar otras funciones) hemos comprobado que no perjudica a la evolución normal del programa y así tenemos un control más fiable de las transferencias. InputLen

Por defecto, cuando se lee el Buffer de recepción, se leen todos los caracteres,

quedando el Buffer vacío. Si se le asigna a esta propiedad un valor distinto de 0, cada vez que leamos el Buffer de recepción leerá un número de caracteres igual a esa cantidad, permaneciendo los caracteres restantes en el Buffer a la espera de una nueva lectura.

Page 25: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

26

Cada vez que se genere el evento de recepción leeremos la totalidad del buffer, dado que la transferencia va a ser discontinua y de tamaños variables cabría la posibilidad de no leer caracteres del buffer si pusiésemos un valor determinado. De este modo nos aseguramos la lectura de todos los caracteres a medida los vayamos recibiendo. ParityReplace

Si la comunicación se realiza con bit de paridad (Par o Impar), en recepción se comprueba byte a byte la recepción de la paridad correcta. Si se recibe un Byte que no tiene paridad correcta, lo más probable es que ese Byte (carácter) se haya recibido defectuoso. Esta propiedad nos permite sustituir un carácter que ha llegado con bit de paridad incorrecto por otro carácter ( ? 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 señal RTS (Request To Send - Petición de envío). Esta señal debe ponerse a 1 para indicar al módem (o al equipo que va a recibir nuestra comunicación) que deseamos enviar datos. Debe estar activada durante toda la transmisión de datos. DTREnable

Activa (Pone a 1) la salida DTR (Data Terminal Ready - Terminal de Datos Listo). Esta señal se emplea para decirle al módem que el terminal (Ordenador) está preparado para recibir datos.

Estas 2 señales (RTSEnable, DTREnable) las tendremos siempre activas ya que al no tener control de flujo alguno que las gobierne nos interesa que el módem siempre este dispuesto tanto para enviar como para recibir información. 5.3.2 Propiedades Propias Del Tiempo De Ejecución

El tiempo de ejecución es el período durante el cual se ejecuta una aplicación. Durante este tiempo se puede interactuar con una aplicación. PortOpen

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

Page 26: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

27

Output Envía caracteres al Buffer de salida. (Mscomm1.Output = “texto” o variable)

Input

Lee el Buffer de recepción. Se leerá un número 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 más 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 código 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 línea de detección de llamada (Ring). Este evento se produce cuando

hay un cambio en la línea Ring (Detección de llamada en el módem). Destacar que la UART del PC utilizado no soporta esta señal con lo que se ha

tenido que contrastar la llegada de esta señal mediante un polling cada vez que se recibía un carácter por el puerto serie. ComEvReceive

Cuando se recibe un número igual o mayor de caracteres que el indicado en la

Propiedad Rthreshold

En el momento que recibimos un carácter, lo extraemos del puerto serie y lo introducimos en una variable para su posterior uso y / o tratamiento.

Page 27: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Programación del Puerto Serie

28

ComEvSend

Cuando quedan en el búfer de transmisión menos caracteres que los indicados en la Propiedad SThreshold

Se realiza una confirmación de que el envío ha sido correcto. De este modo tenemos la certeza de que el envío ha sido satisfactorio. comEventBreak

Se ha recibido una señal de interrupción. (Break)

ComEventOverrun

Se sobrepasó la capacidad del Buffer de entrada sin haber leído todos los caracteres. Los caracteres no leídos se han perdido. Debemos aprovechar este evento para solicitar al interlocutor una repetición de los datos perdidos. ComEventRxOver

Desbordamiento del búfer de recepción. No hay espacio para más datos en el búfer

de recepción. ComEventRxParity

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

Búfer de transmisión lleno. El búfer de transmisión estaba lleno cuando se ha

intentado agregar un carácter a la cola de transmisión.

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 están relacionados con el buffer de transmisión o recepción

y será necesario realizar una nueva transferencia para recuperar la información o paralizar las restantes con tal de vaciar el contenido de los buffer en el caso de que estos resulten completos.

Page 28: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diseño de la Aplicación con VB

29

6. DISEÑO DE LA APLICACIÓN CON VISUAL BASIC 6.0

Page 29: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diseño de la Aplicación con VB

30

DISEÑO DE LA APLICACIÓN CON VISUAL BASIC 6.1 Introducción

Una vez contemplados los sistema de comunicación que queremos implementar, las instrucciones necesarias para ejecutar dichos procesos y la metodología de comunicación con el propio módem a través del puerto serie, realizaremos una aplicación que nos permita, mediante una interfaz clara y sencilla, el envío de dichos comandos al módem para que éste, finalmente, nos permita establecer la comunicación deseada a través de la red GSM.

Para construir dicha aplicación, utilizaremos el lenguaje de programación Visual

Basic en su versión 6.0. Se trata de un producto con una interfaz gráfica de usuario que sirve para crear aplicaciones para Windows basado en el lenguaje Basic y en la programación orientada a objetos.

Para crear una aplicación se crean ventanas y sobre ellas se dibujan objetos llamados controles (etiquetas, botones, cajas de texto, ...) y a continuación se escribe el código fuente relacionado con cada objeto. Esto es, cada objeto está ligado a un código que permanece inactivo hasta que se dé el evento que lo activa (por ejemplo, un clic del ratón). 6.2 Estructura de programación

La programación en visual Basic se fundamenta en módulos. En ellos se almacena el código. Hay tres tipos de módulos: de formulario, estándar y de clase.

En este proyecto se han utilizado los dos primeros y procedemos a su explicación.

6.2.1 Módulos de formulario

Los módulos de formulario (extensión 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 código que se escribe en un módulo de formulario es específico de la aplicación a la que pertenece el formulario y puede hacer referencia a otros formularios u objetos de la aplicación.

6.2.2 Módulos estándar Los módulos estándar (extensión de nombre de archivo .bas) son contenedores de

los procedimientos y declaraciones a los que tienen acceso otros módulos de la aplicación. Pueden contener declaraciones globales (disponibles para toda la aplicación) o a nivel de módulo de variables, constantes, tipos, procedimientos externos y procedimientos globales. El código que se escribe en un módulo estándar no está ligado necesariamente a una aplicación determinada; se puede reusar un módulo estándar en distintas aplicaciones

Page 30: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diseño de la Aplicación con VB

31

6.2.3 Controles

Son los objetos gráficos, como un cuadro de texto, o un botón de comando, que se colocan en un formulario para mostrar datos, realizar una acción o facilitar la lectura del formulario. Los controles tienen asociado un código 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 ejecución del código asociado son los comentados a continuación.

CommandButton (1)

Es un control que está asociado a un comando. El evento que lo acciona es el clic

(bien del ratón o mediante el teclado). Cuando se hace clic en el botón de comando en tiempo de ejecución, el código asociado al botón 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 máximo de caracteres (para prevenir

errores en la posible variable asociada)

• Multiline + scrollbar, se permiten diversas líneas y desplazarse a través de ellas (útil para la presentación de resultados con varias líneas)

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

Figura1. Controles

(3)

(2)

(1) (4)

(5)

(6)

(7)

Page 31: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diseño de la Aplicación con VB

32

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. Válido para

discriminar posibles entradas erróneas. En un texto sólo numérico descartamos las teclas que no se correspondan a este requerimiento.

Label

Es un control gráfico 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 través de la ejecución del programa. Timer

Nos Permite Ejecutar código a intervalos periódicos produciendo un evento Timer.

Se configura la frecuencia de ejecución de éste (en milisegundos), y se asocia un código que se realizará cuando se produzca el evento. Optionbutton

Pequeño botón redondo más una etiqueta (explicativa) que selecciona una opción. Los controles de este tipo se utilizan en grupo para mostrar opciones entre las cuales el usuario sólo 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 automáticamente.

La opción se selecciona mediante el evento clic del ratón o teclado.

Cuando un optionbutton está seccionado la propiedad value = verdadera,

mostrándose en el interior del botón 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).

Page 32: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diseño de la Aplicación con VB

33

Combobox

Nos permite introducir información en la parte del cuadro de texto o seleccionar directamente un elemento de la lista desplegable. Se utiliza para seleccionar una opción 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 través de él. Las propiedades y los diferentes eventos han sido ampliamente comentados en el capítulo anterior (5.Programación del Puerto Serie).

Los módulos de formulario también pueden tener asociado código a eventos

propios no sólo de los controles de los que dispone. A continuación comentaremos los más importantes tratados en este proyecto: Load

Ocurre cuando se carga un formulario. Utilizamos este evento para incluir código

de inicialización de un formulario (código 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 instrucción 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 método para mostrar u ocultar el formulario sin necesidad de descargarlo y volverlo a cargar de memoria.

Page 33: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

34

7. DIAGRAMAS DE FLUJO

Page 34: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

35

DIAGRAMAS DE FLUJO 7.1 Introducción

Los diagramas de flujo son representaciones del flujo que siguen las instrucciones de un programa.

Los diagramas de flujo fueron muy utilizados durante la década de los sesenta, pero

resultaron inadecuados como herramienta de modelado de sistemas, debido a que facilitan la creación de código no estructurado y complejo. Frente a ellos, el pseudocódigo fue una alternativa realmente mejor.

Pero si bien estos diagramas han caído en desuso para el diseño de programas, éstos nos resultaran útiles:

• Para seguir la secuencia lógica de procesos complejos. • Para intercambiar entre estructuras de control. • Para redireccionar el flujo. • Para cambiar un programa de un lenguaje a otro. • Para esbozar fácilmente un procedimiento complejo.

De este modo presentamos en este formato de representación nuestro programa.

Mostraremos tanto la evolución 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 programación utilizado en este estudio.

Figura 2. Figuras Usadas en los Diagramas de Flujo

Page 35: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

36

7.2 Funcionamiento General Del Programa

“INICIO”

CONFIGURACIÓN PUERTO SERIE

“FIN”

CONTROL CODIGOS DE ACCESO

CARGAR CONFIGURACIÓN PROGRAMA

MENU PRINCIPAL

Submenus?

MENSAJES (envio, recepción)

TRANSFERENCIA DE DATOS

AGENDA TELEFONICA

REGISTRO DE LLAMADAS

La evolución normal del programa sería una vez iniciado éste, configurar el puerto

serie al cual tenemos conectado el módem. Posteriormente, tras el análisis de los códigos de acceso y su posible necesidad de

introducirlos para acceder al sistema, se procede a la carga de la configuración del programa, que abarca aspectos de las llamadas, mensajes, información,...

Seguidamente estaremos en disposición de efectuar cualquiera de las acciones disponibles en el menú principal, accediendo a los diferentes submenús de agenda, mensajes, transferencia de datos o registro de llamadas. También se permite el acceso a una aplicación calculadora.

Figura 3. Funcionamiento General del Programa

Page 36: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

37

7.3 Formato General De Comunicación PC-Módem

TRATAR RESPUESTA

“INICIO”

PREPARAR TRAMA

“FIN”

ENVIAR TRAMA

Cada Trama estará compuesta por un comando AT específico + parámetros (opcionales) + un retorno de carro (carácter ASCII num.13).

Enviar trama consiste en introducir dicha instrucción en el buffer de datos de salida del puerto serie (SEND_COMMAND), mediante la instrucción Mscomm.output, y esperar la respuesta.

Finalmente, cuando tengamos la respuesta del módem a nuestra petición de ejecución (se generará un evento que nos permitirá conocer cuando se ha recibido respuesta en el puerto serie), haremos un tratamiento específico dependiendo del resultado obtenido.

Figura 4. Formato General de Comunicación PC-Módem

Page 37: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

38

7.4 Enviar Tramas: Enviar Comando, Obtener y Tratar Respuesta

TRATAR RESPUESTA

“INICIO”

SEND COMMAND

TRATAR TIMEOUT

“FIN”

Si

No Timeout Respuesta

Completa?

El envío de tramas se compone del envío del comando AT + la espera de la respuesta completa para su posterior tratamiento.

En el caso que se exceda un tiempo límite 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 ejecución del Timer + dos que lo gobiernan

• INI_TIMER_OUT: Después 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.

Figura 5. Enviar Tramas

Page 38: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

39

7.5 Espera De La Respuesta Completa

Dado que tenemos diferenciados 3 tipos de respuestas, la condición de obtención completa de la misma variará dependiendo de dicha respuesta. Los comandos que tienen el mismo formato de respuesta utilizaran todos ellos el mismo método de resolución. Los 3 métodos de tratamiento son los siguientes: Método a) ACCIÓN WAIT_RESULT_CODES

“FIN”

SI

NO

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

DoEvents STRBUFFER

“INICIO”

Condicion Fin Respuesta

Esta acción es general a todos aquellos comandos AT cuya respuesta sigue el formato:

AT + instrucción + <parámetros> + Cr + CrLf + mensaje + CrLf

Se considera que se ha recibido toda la respuesta cuando se cumple la condición marcada.

Ésta consiste en saber si han llegado los 2 últimos caracteres de final de respuesta (CrLf) a partir del envío del comando y posterior al mensaje de la respuesta.

La función Instr (inicio, cadena de caracteres, texto a buscar) realizará la comprobación, devolviendo la posición 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 carácter al puerto serie).

Figura 6. Metodología tipo a)

Page 39: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

40

Método b)

“INICIO”

“FIN”

SI

NO Condicion Fin Respuesta

CONDICION= vbCrLf + ”OK” + vbCrLf

straux=strBUFFER Right(straux,8)

DoEvents STRBUFFER

Método utlizado para la comprobación de respuestas por parte del módem a

aquellos comandos en cuya respuesta pueda haber diferentes líneas de mensaje siguiendo el formato que presentamos a continuación: AT + instrucción + <parámetros> + 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 ejecución de los comandos AT con este tipo de respuesta son específicas para cada comando, porque no se ha encontrado formato general, ya que pueden tener varios tipos de respuesta además 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 acción, es consultar por un lado mediante el método b) y si el resultado no es satisfactorio comparar la totalidad de la respuesta con el mensaje hipotéticamente esperado (método c)

Figura 7. Metodología tipo b)

Page 40: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

41

Método 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 acción PIN CONTROL, no podemos utilizar ninguno de los

dos métodos 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

Cond 1

TRATAR Condicion 4

ElseCase

Cond 2

TRATAR Condicion 1

TRATAR Condicion 2

TRATAR Condicion 3

strBUFFER ?

Cond 3 Cond 4

DoEvents STRBUFFER

...

...

Figura 8. Metodología tipo c)

Page 41: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

42

Método d) NOTIFICACIONES (POLLING)

También destacar las notificaciones que nos envía el módem 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 específicas 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 recepción de nuevo mensaje

GENERACIÓN DEL EVENTO ONCOMM

NEW SMS (llegó msg?)

“INICIO”

EvReceived Recibido caracter

“FIN”

Read Buffer (strBUFFER)

PROPIEDAD? Otras

TRATAR PROPIEDAD

RING (llamada?)

Figura 9. Tratamiento Polling

Page 42: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

43

7.6 Tratar Respuesta (Procedimiento Treat_Responses)

TRATAR “ERROR”

“INICIO”

TRATAR “OK”

“FIN”

OK ERROR Results Code?

TREAT_RESPONSES es el procedimiento de tratamiento de la respuesta común a

todos aquellos comandos cuyo formato de respuesta es AT + instrucción + <parámetros> + Cr + CrLf + mensaje + CrLf, pero la acción que realiza dicho tratamiento es específica para cada uno de ellos,

llevando cada una como nombre el del comando AT para facilitar la asociación y comprensión.

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 separación (Cr,Lf) y devuelve el mensaje.

Con la parte importante de la respuesta, el mensaje, realizaremos un tratamiento conforme el mismo.

Destacar que la mayoría de comandos sólo disponen de la respuesta OK y ERROR

de confirmación o error de la llegada de la trama, aunque podemos comprobar que en otros comandos también existe alguno de los mensajes CONNECT, BUSY, NO CARRIER,+CME: INCORRECT PASSWORD,BLOCKED,...

En futuros diagramas podrá encontrar el siguiente bloque:

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

efectúa según la metodología TREAT_RESPONSE. Obviamente cada comando tendrá un tratamiento a los resultados diferente y por ello se especifica el nombre de la acción que se ejecuta (del mismo nombre que el comando enviado).

TREAT_RESPONSE NOMBRE ACCION

Figura 10. Tratar Respuesta

Figura 11. Bloque TREAT_RESPONSE

Page 43: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

44

7.7 Configuración Del Puerto Serie

Establecer Configuración

AbrirPuerto

No

CerrarPuerto

Abierto? Si No

Ok

Msg Error

Si

Msg Error ABRIR CERRAR

PrepararTrama ”AT+CMEE”

SALIR

“FIN”

“INICIO”

Botón?

Controlar el código de acceso

Cerrado?

TRAMA

TREAT RESPONSE

M.EQUIP.ERROR

Mediante las diferentes listas desplegables debemos configurar el puerto serie en

cuanto a su ubicación, velocidad, paridad, bits de datos y bits de parada. Queda reflejada la configuración 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 parámetro antes debe estar éste cerrado. Una vez abierto, pulsando OK se envían diferentes tramas, una de configuración

AT+CMEE (el mensaje de error, en caso de que se produjera, se presenta mediante un formato explicativo, no numérico) y una de control de acceso AT+CPIN? (que determina el estado del código de bloqueo de la tarjeta SIM).

Figura 12. Configurar Puerto Serie

Page 44: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

45

7.8 Control Del Código De Acceso (Acción PIN_CONTROL)

“INICIO”

...Sim PIN...

Introducir Tarjeta + ACEPTAR

NO

SI ElseCase

...Sim PUK... ...READY... ...Sim Not Inserted...

PrepararTrama ”AT+CPIN?”

CARGAR FORM PIN. Aux=1

CARGAR FORM PUK. Aux=1

CARGAR FORM MENU. Aux=1

strBUFFER ?

“FIN”

Timeout?

NO TRATAR TIMEOUT

SI

Aux=1 or Timeout

DoEvents STRBUFFER

SEND

COMMAND

Mediante la trama AT+CPIN? se comprueba el estado del código de acceso. Se prepara la trama, se envía el comando (mediante la acción SEND_COMMAND)

y se espera a obtener la respuesta completa para su posterior tratamiento.

El sistema de esperar a la respueta completa sigue la metodología tipo c) explicada anteriormente. No finalizará hasta que no coincida exactamente con una de las 4 posibles respuestas (se opta por este método, 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 código PIN (en cuyo caso accederemos al formulario de introdución de dicho código),

• si es necesario el código PUK (accederemos a otro formulario donde se nos reclamará este código),

• si no es necesario ningun código 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 acción).

Figura 13. Control del Código de Acceso (PIN_CONTROL)

Page 45: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

46

7.9 Formulario De Introducción Del Código Pin

“INICIO”

“FIN”

OK

Text_PIN Boton?

Boton? Salir

Salir

Introducir código PIN

TRAMA

TREAT RESPONSE PIN_CODE

PrepararTrama ”AT+CPIN”

En este formulario introducimos el código PIN.

El código PIN (personal identification number) es un código de seguridad que se requiere cuando queremos acceder a los servicios de comunicación que la operadora ofrece.

Se envía la trama correspondiente (AT+CPIN = ”PIN” + Cr) y se trata la respuesta.

Existe la posibilidad de salir del programa si desconocemos el código PIN, para evitar un posible bloqueo de la tarjeta SIM.

Figura 14. Formulario Código PIN

Page 46: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

47

7.10 Tratar Respuesta Introducción De Código Pin (Acción Pin_Code)

“INICIO”

Cargar Form MENU

“FIN”

OK SIM PUK Results Code?

Recargar Form PIN

Incorrect Psw

Cargar Form PUK

Tratamiento de la respuesta.

Dependiendo de la validez del código PIN introducido podemos encontrarnos con 3 tipos de respuesta: OK Código correcto. Accederemos al menú principal. +CME ERROR: Incorrect password Código incorrecto. Tenemos la posibilidad de introducirlo de nuevo. +CME ERROR: SIM PUK required: Hemos introducido erróneamente 2 veces el código PIN. Accederemos al formualrio 03 con el fín de introducir el código PUK.

Figura 15. Acción PIN_CODE

Page 47: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

48

7.11 Formulario De Introducción Del Código PUK

Introducir código PUK

“INICIO”

“FIN”

OK

Text_PUK,Text_PIN Boton?

Boton? Salir

Salir

Introducir código PIN

TRAMA

TREAT RESPONSE PUK_CODE

PrepararTrama ”AT+CPIN”

En este formulario introducimos el código PUK y un nuevo código PIN.

El código PUK (personal unlock code) es un segundo código de seguridad que se requiere cuando se ha introducido erróneamente 2 veces el código PIN.

Se envía 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 código PUK, con tal de no bloquear la tarjeta SIM definitivamente

Figura 16. Formulario Código PUK

Page 48: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

49

7.12 Tratar Respuesta a la Introducción De Código PUK (PUK_Code)

“INICIO”

“FIN”

OK BLOCKED Results Code?

Incorrect Psw

END (salir del programa)

Cargar Form MENU

Msg ERROR

Recargar Form PUK

Tratamiento de la respuesta.

Dependiendo de la validez del código introducido podemos encontrarnos con 3 tipos de respuesta: OK y accederemos al menú principal +CME ERROR: Incorrect password Contraseña incorrecta y tendremos la posibilidad de introducirlo de nuevo. BLOCKED hemos introducido erróneamente 8 veces el código 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.

Figura 17. Acción PUK_CODE

Page 49: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

50

7.13 Menú Principal

SMS

CERRAR FORMULARIOS

CARGAR FORM TRANSFER. CSD

AGENDA

CARGAR FORM Registro Llamadas

“FIN”

CALC

CSD LLAMADAS ACERCA del

MODEM

Cargar Config. Del Programa (1 vez)

CARGAR FORM AGENDA

CARGAR Aplicación CALC

SALIR

“INICIO”

BOTON ?

CARGAR FORM INFO MODEM

CARGAR FORM MENSAJES

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 configuración guardada por el usuario) o de una configuración predeterminada (en el caso de no existir dicho archivo). Se envían una serie de tramas configurando los mensajes, el formato de llamada, etc

Mediante la pulsación de diferentes botones accederemos a los submenús que lo componen: Agenda, Mensajes, Transferencia De Datos, Registro De Llamadas, Información Del Módem y Calculadora.

Existe la posibilidad de dejarlo en Standby (apareciendo el icono en la barra de tareas) a la espera de nuevas acciones.

Figura 18. Formulario Menú Principal

Page 50: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

51

7.14 Cargar La Configuración Del Programa

“FIN”

TRAMA

TREAT RESPONSE

SET_CLOCK

PrepararTrama ”AT+CCLK”

“INICIO”

...

PREFERRED MESSAGE STORAGE

La primera vez que iniciemos el formulario del menú principal realizaremos la carga de la configuración del programa. Mediante una serie de envíos consecutivos de tramas (envío de comando + espera y tratamiento de la respuesta) se realizará dicho establecimiento de los parámetros de funcionamiento de nuestro programa acorde a nuestras necesidades.

El procedimiento consiste en recoger del fichero (o de una predeterminada guardada en el mismo código) los valores del registro config (creado por el programador) utilizados en la última ocasión.

Posteriormente se prepararan las tramas, para, a continuación, enviarlas y tratar su

respuesta. Una vez finalizado este proceso, se procede a repetir éste mismo para la siguiente

instrucción.

Esta configuración responde tanto a parámetros de los mensajes, como a la transferencia de datos o llamada, así como del reloj del sistema, metodología de la notificación de nuevos mensajes, etc.

Presentamos a continuación dichos parámetros 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 recepción de llamadas u mensajes)

Figura 19. Cargar Configuración del Programa

Page 51: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

52

AGENDA • Phonebook Storage, "AT+CPBS" (establece el lugar de almacenamiento de la

agenda telefónica: Módem o tarjeta SIM) MENSAJES

• Service Centre Address, "AT+CSCA" (establece el número del centro de mensajes, que canaliza el envío 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 máximo 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 acción especifica PREFERRED_MSG_STORAGE, donde se prepara y se trata la respuesta en la misma acción

• 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 automático) • Select Bearer Service, "AT+CBST" configura la velocidad de la conexión • Escape Sequence Character, "ATS2" configura el carácter de escape del modo

online data mode

Page 52: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

53

7.15 Registro De Llamadas

“INICIO”

BOTON ? Recibidas

CARGAR FORMULARIO 9

Call_reg=”RC” Preparar TRAMA

“FIN”

Enviadas Perdidas Menu

PhoneBook READ

Call_reg=”DC” Preparar TRAMA

Call_reg=”MC” Preparar TRAMA

TRAMA

TREAT RESPONSE

Ph_CallStorage

Mediante la pulsacion de 3 botones se mostrarán: Llamadas RECIBIDAS,

ENVIADAS o NO CONTESTADAS, según corresponda al botón pulsado. Se prepara la trama oportuna a cada una de ellas, configurando mediante el

parámetro call_reg (distintivo entre ambas), el registro de la memoria del módem a leer: AT+CPBS=”RC” para consultar llamadas recibidas AT+CPBS=”DC” para consultar llamadas enviadas AT+CPBS=”MC” para consultar llamadas no contestadas

Se envía mediante la acción TRAMA y se trata la respuesta.

Posteriormente se ejecuta la acción PHONEBOOK READ, que es la acción que

realizará la lectura del registro de llamadas y presentará los resultados en el caso de que los hubiera. Dicha acción se puede ver detallada en la pág.siguiente.

Se retorna al MENÚ principal cuando haya finalizado la consulta, previo accionamiento del botón correspondiente.

Figura 20. Formulario Registro de Llamadas

Page 53: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

54

7.16 Lectura De La Memoria Del Módem (Acción Phonebook_Read)

“INICIO”

“FIN”

NO

SI

Aux=1 or Timeout

SEND COMMAND

Timeout?

NO

SI

TRATAR TIMEOUT

NO

Cond1

StrBuffer?

DoEvents STRBUFFER

“ERROR en la Trama” (aux=1)

“No Resultados” (aux=1)

NO

SI

Straux=cond3?

En Busqueda Agenda (aux=1)

1 2

i?

En Form Llamadas (aux=1)

OTRA

Cond2

straux=strBUFFER Right(straux,8)

SHOW RESULTS

Esta acción permite la lectura de la memoria del módem. Éste tiene varios registros destinados cada uno de ellos a un almacenamiento de información determinada.

Por lo tanto, antes de realizar una lectura, debemos especificar que registro queremos leer (comando AT+CPBS). Esta configuración se realizará previamente a la llamada de esta acción.

Nosotros implementaremos el acceso al registro de las llamadas y a la agenda. Como la metodología es la misma en ambos casos, hemos implementado una sola

acción que tendrá acceso a cualquiera de los registros. De este modo, pasaremos como parámetro el tipo de lectura queremos realizar

i=1 será para leer el registro de llamadas e i=2 para la agenda telefónica.

Figura 21. Acción PHONEBOOK_READ

Page 54: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

55

El proceso consistirá en enviar la trama correspondiente y esperar la respuesta completa pars su posterior tratamiento.

Esta acción combina 2 tipos de respuesta y debemos usar metodologías diferentes.

Metodología 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 petición de búsqueda requerida strBUFFER = str + vbCrLf + "ERROR" + vbCrLf ? (Cond2) en el caso de error en el envío del comando.

Si no coincidiera con ninguna de estas 2 condiciones deberíamos realizar otra comprobación de la respuesta. Se implementa, para este segundo análisis, la metodología b (ya que si existen resultados, pueden obtenerse diferentes líneas en la respuesta). Por tanto debemos leer los 8 últimos caracteres de la respuesta y comparar con la condición 3. straux = vbCrLf + vbCrLf + "OK" + vbCrLf? (Cond3)

En este caso debemos utilizar la variable i, pasada como parámetro, como discriminatoria para conocer quien realizó la petición de lectura de los registros del módem.

Si i = 1 se muestran los resultados mediante la función SHOW_RESULTS en el formulario del registro de llamadas, mientras que

Si i=2 se mostrarán los resultados obtenidos en el formulario de resultados de la agenda telefónica.

Como en el resto de acciones anteriores se tratara la condición de tiemout al salir del bucle de espera de la respuesta, por si se hubiese producido dicha situación.

Page 55: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

56

7.17 Menú De La Agenda Telefónica

“INICIO”

Busq Nombre

CARGAR FORMULARIO 9

CARGAR FORMULARIO 10

Configurar Memoria (ME-SM)

CARGAR FORMULARIO 11

Busq Posicion Insertar New

Configuración memoria

“FIN”

BOTON ?

Se puede seleccionar (mediante un botón de opción) tanto la memoria del teléfono como la de la tarjeta SIM para realizar las funciones asociadas, que son

• Búsqueda de un número de teléfono por su nombre o inicial • Búsqueda de un número de teléfono por su posición en la agenda o visualizar un

rango determinado • Insertar un nuevo número al listado existente

Para ello se debe acceder a los diferentes submenús pulsando el botón correspondiente.

Figura 22. Formulario Agenda Telefónica

Page 56: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

57

7.18 Búsqueda Por Nombre En La Agenda Telefónica

“FIN”

OK

Text

Boton?

Boton?

Salir

Salir

Boton?

Ocultar Resultados Anteriores

Recoger TEXTO BUSQUEDA

Salir

Nueva Búsqueda

PhoneBook READ

TRAMA

TREAT RESPONSE

PhBook Storage

PrepararTrama ”AT+CPBF”

PrepararTrama ”AT+CPBS”

“INICIO”

Se inicia este formulario enviando la configuración correspondiente a la memoria

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

Figura 23. Formulario Búsqueda por nombre

Page 57: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

58

Posteriormente se introduce el texto de búsqueda que puede ser una cadena alfanumérica o la inicial del nombre a buscar (de este modo aparecerán todas las entradas que se correspondan que empiecen por ese carácter).

Al pulsar el botón OK se ejecutará la acción PHONEBOOK_READ que será la

encargada de realizar la consulta y presentar resultados en el caso de que los hubiera. Se pueden realizar tantas búsquedas como se desee. PULSANDO NUEVA

BÚSQUEDA, se vaciará el texto de búsqueda así como la pantalla de los resultados de búsquedas anteriores.

Al salir, accederemos al menú principal o al formulario que hizo la llamada (enviar

SMS, o transferencia de datos).

Page 58: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

59

7.19 Búsqueda Por Posición En La Agenda Telefónica

“INICIO”

“FIN”

OK

Text

Boton?

Boton?

Salir

Salir

Boton?

O cultar Resultados Anteriores

Recoger RANGO BUSQUEDA

Salir

Nueva Búsqueda

PhoneBook READ

TRAMA

TREAT RESPONSE

PhBook Storage

PrepararTrama ”AT+CPBR”

PrepararTrama ”AT+CPBS”

Este formulario actúa de manera idéntica al de la búsqueda por nombre. La única

diferencia radica en el motor de búsqueda, que en éste se realiza por posición o rango. A partir de un valor númerico pasado como parámetro, se presenta a modo de

resultado la entrada (nombre y numero de teléfono) correspondiente a dicha posición que ocupa en la memoria.

Si se introduce un rango se mostrarán todas las entradas comprendidas entre esos valores.

Figura 24. Formulario Búsqueda por Posición

Page 59: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

60

7.20 Insertar Nueva Entrada En La Agenda Telefónica

“FIN”

OK

Boton?

Cancelar

TREAT RESPONSE

PhoneBookwrite

TextBox’s

Cancelar

TRAMA

TRAMA

TREAT RESPONSE

PhBook Storage

PrepararTrama ”AT+CPBS”

“INICIO”

RELLENAR CAMPOS

Boton?

Inicialmente se carga la memoria de la agenda (módem o SIM) seleccionada en el

menú de la agenda (AT+CPBS). Posteriormente se rellenan los campos correspondientes a posición (si se deja en

blanco ocupará la primera posición libre de la memoria), número de teléfono y nombre del mismo.

Al aceptar estos campos, se enviará la trama correspondiente (AT+CPBW) que establecerá los cambios si no se produce algún error de envío de trama (en cuyo caso se tratará con la acción correspondiente a este comando).

Cabe la posibilidad de cancelar el proceso y retornar la menú de la agenda.

Figura 25. Formulario Insertar Nueva Entrada

Page 60: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

61

7.21 Menú Mensajes SMS

“INICIO”

Escribir

CARGAR FORMULARIO 9

“FIN”

Leer

Configuracion

Menu

CARGAR FORM ESCRIBIR (16)

CARGAR FORM LEER MSG (15)

CARGAR FORM CONFIG (14)

BOTON ?

Este es el formulario del menú de los mensajes SMS. Desde él, pulsando el botón correspondiente accederemos a los diferentes submenús

• Configuración de los mensajes • Lectura de mensajes (borrado, y reenviado) • Escritura y envío de mensajes

Finalmente retornaremos al menú principal.

Figura 26. Menú Mensajes

Page 61: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

62

7.22 Configuración De Los Mensajes SMS

“INICIO”

Modificar Memoria Msgs

VISUALIZAR CONFIG.

MODIFICAR PARAMETROS

MODIFICAR PARÁMETROS

“FIN”

Modificar T.permanencia

Modificar Formato Msg

Modificar Nª Centro Servicio

DESHABILITAR CONTROLES

SMS-MENU

HABILITAR CONTROLES

MODIFICAR PARAMETROS

MODIFICAR PARAMETROS

OK OK OK OK

TRAMA

TRAMA

TRAMA

TREAT RESPONSE

SERV_CENTRE

TREAT RESPONSE

MSG_TIME_MAX

TREAT RESPONSE

MSG_FORMAT

HABILITAR CONTROLES

PREPARAR TRAMA AT+CSMP

HABILITAR CONTROLES

HABILITAR CONTROLES

PREPARAR TRAMA AT+CMGF

PREPARAR TRAMA AT+CSCA

BOTON ?

PREFERRED MESSAGE STORAGE

Este formulario controla el envío de comandos que configuran los mensajes.

Al cargarse éste, se muestra la configuración que existe actualmente. Para modificar alguno de los 4 parámetros existentes, debemos pulsar el botón

modificar específico de cada uno de ellos. Con esta acción se habilita el resto de controles y se posibilita la modificación.

Una vez realizados los cambios oportunos, pulsamos OK, que tiene asociado el código de recoger los cambios obtenidos en el panel, preparar la trama de envío y enviarla.

Posteriormente tratará la respuesta. Por último se volverán a deshabilitar los controles con tal de preservar posibles

cambios no deseados.

Figura 27. Configuración de los Mensajes

Page 62: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

63

Los parámetros de configuración que se han implementado son

• Selección de la memoria de almacenaje • Tiempo máximo de permanencia en el centro servidor antes del envío • Formato del mensaje (texto o binario) • Número del centro de servicio

Todos ellos siguen el formato de envío TRAMA y TREAT_RESPONSE, a

excepción del primero, para el cual se ha generado una acción específica (PREFERRRED_MESSAGE_STORAGE) ya que combina varios tipos de respuesta. Dicha acción se puede ver detallada en la pág.siguiente.

Page 63: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

64

7.23 Acción Preferred Message Storage

“INICIO”

NO

SI

“FIN”

PrepararTrama ”AT+CPMS”

DoEvents STRBUFFER

Tratar Envío Correcto (aux=1)

straux=strBUFFER Right(straux,8)

NO

SI

Tratar Error Envío (aux=1)

NO

SI

Timeout?

NO

SI

Straux=cond1?

StrBuffer=cond2?

TRATAR TIMEOUT

Aux=1 or Timeout

SEND COMMAND

Mediante esta acción enviamos la trama de configuración 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 módem o tarjeta SIM.

Se prepara la trama con los diferentes parámetros (las 3 memorias) y se procede al envío. Realizamos una acción específica para el envío, recepción y tratamiento de la respuesta, ya que ésta ultima se nos presenta de forma variable :

• AT+CPMS + parámetros + CR +CRLF+ mensaje +CRLF+CRLF+ OK +CRLF (para denotar que llegó esta respuesta utilizamos straux= CrLf+ CrLf +OK+ CrLf ?)

• AT+CPMS + parámetros + 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.

Figura 28. Acción PREFERRED_MSGE_STORAGE

Page 64: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

65

7.24 Leer, Borrar y Reenviar SMS Desde Memoria

“INICIO”

Leer Anterior

CARGAR FORM ENVIAR (17)

“FIN”

Reenviar Borrar

Leer Siguiente

Menu SMS

READMsg (true)

READMsg (false)

READMsg (true)

TRAMA

BOTON ?

Index++ (Variable Lectura)

Index-- (Variable Lectura)

Preparar TRAMA AT+CMGD

TREAT RESPONSE

DELETE

Este formulario implementa además de la lectura de mensajes otras acciones como borrar y reenviar mensajes desde la memoria.

Al iniciarse se ejecuta la acción READ_MESSAGE (Dicha acción se puede ver detallada en la pág. siguiente) que nos presentará por pantalla el primer mensaje de la memoria1 (va desplazándose posición a posición hasta que encuentra un mensaje o ha revisado la memoria completa).

La variable index contendrá la posición del mensaje actual, y ésta nos será útil para posteriores aplicaciones.

Se podrá tratar ese mensaje,

• borrándolo (al pulsar el botón borrar se envía el comando específico AT+CMGD, que borra la posición de memoria que especifiquemos, contenida en index)

• reenviándolo (se cargará el formulario 17 de envío de mensaje, para introducir el número del destinatario y el posterior envío a través de la trama AT+CMSS).

La función de lectura se ve mejorada con la posibilidad de acceder a los mensajes

de forma secuencial en ambos sentidos, hacia adelante o hacia atrás, lo que facilita en gran medida el acceso a ellos. Pulsando siguiente o anterior incrementaremos o decrementaremos index, desplazándonos así por las diferentes posiciones de memoria.

Figura 29. Leer, Borrar y Reenviar Mensajes

Page 65: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

66

7.25 Leer Mensaje (Acción Read_Message)

“INICIO”

NO

SI

“FIN”

PrepararTrama ”AT+CPMS”

DoEvents STRBUFFER

SHOW RESULTS (aux=1)

straux=strBUFFER Right(straux,8)

NO

SI

“Posición vacia” (aux=1)

NO

SI

Timeout?

NO

SI

Straux=cond1?

StrBuffer=cond2?

TRATAR TIMEOUT

Aux=1 or Timeout

Avanzar o Retroceder index

SEND COMMAND

Esta acción realiza la lectura de los mensajes. Inicialmente se prepara la trama a enviar, que consiste en el comando AT+CMGR+

la posición de memoria a leer (variable index). Se envía dicha trama y se espera respuesta completa.

Si los últimos 8 caracteres de la respuesta se corresponden con la condición 1

(vbCrLf + "OK" + vbCrLf ), en la posición index sí hay mensaje de texto y se muestra su contenido mediante la función SHOW_RESULTS. Se usa esta metodología, tipo b), ya que un mensaje de texto puede componerse de varias líneas.

Si la posición requerida se encontrase vacía se cumpliría la condición 2 strBUFFER = str + vbCrLf + "+CMS ERROR: 500" + vbCrLf Or _ strBUFFER = str + vbCrLf + "+CMS ERROR: 321" + vbCrLf

Figura 30. Acción READ_MESSAGE

Page 66: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

67

Se realiza una comparación de la respuesta en su totalidad con las posibles respuestas de error.

En este caso el tratamiento consistiría en avanzar o retroceder posiciones hasta encontrar una posición que contenga un mensaje y mostrarlo, o hasta que recorriéramos todas las posiciones de la memoria.

El sentido de lectura de los mensajes es determinado por la variable pasada por

parámetro Front, que determina si el recorrido por la memoria se produce en sentido ascendente o descendente, incrementando o decrementando el valor de index.

Page 67: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

68

7.26 Formulario Escribir Mensajes (Guardar o Enviar)

“FIN”

Guardar Enviar

Boton?

Cancelar

SEND OR WRITE MSG

PrepararTrama ”AT+CMGW”

“INICIO”

CARGAR FORM ENVIAR (17)

ESCRIBIR TEXTO

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 posición libre) o bien ser enviado. Cuando pulsamos guardar, se prepara la trama AT+CMGW y se ejecuta la acción

SEND_OR_WRITE_MESSAGE (dicha acción se puede ver detallada en la pág. siguiente). Si queremos enviar, accederemos al formulario 17, en el que especificaremos el

número del destinatario primero y se enviará la trama correspondiente después. Se puede cancelar cualquiera de estos procesos y retornaremos al menú de los

mensajes.

Figura 31. Formulario Escribir Mensajes (guardar-enviar)

Page 68: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

69

7.27 Enviar o Guardar (Acción SEND_OR_WRITE _MESSAGES)

“INICIO”

NO

SI

“FIN”

DoEvents STRBUFFER

Ready Par a Enviar Texto (aux=1)

NO

SI

Timeout?

NO

SI

StrBuffer=cond1?

TRATAR TIMEOUT

Aux=1 or Timeout

SEND COMMAND

PrepararTrama TEXTO+CrtlZ

NO

SI

Aux=1 or Timeout

SEND COMMAND

Timeout?

NO

SI

TRATAR TIMEOUT

NO

straux=strBUFFER Right(straux,8)

NO

SI

Straux=cond2?

DoEvents STRBUFFER

“SMS Enviado“ (aux=1)

1 2

i?

“SMS Guardado“ (aux=1)

NO

SI

Straux=cond3?

“ERROR Enviar“ (aux=1)

1 2

i?

“ERROR Guardar“ (aux=1)

Accion común tanto para el envío como para el almacenamiento de un mensaje. Se opta por esta acción compartida ya que los 2 comandos se componen de una primera parte idéntica y un tratamiento similar en cuanto a la obtención de la respuesta completa. Por tanto, sólo deberemos discriminar en la parte final qué comando hizo la llamada para hacer un tratamiento específico para cada uno.

Figura 32. Acción SEND_OR_WRITE_MESSAGES

Page 69: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

70

En un principio se envía el comando, ya sea AT+CMGW o AT+CMGS, dependiendo de si queremos guardar o enviar el mensaje respectivamente. También deberemos especificar la posición de memoria donde se almacenará (o omitirla y se colocará en la primera libre) y el número del destinatario al cual queremos enviar. Debemos esperar a que el módem responda

(Trama enviada) + vbCrLf + "> " + Chr(0)

indicativo de que el sistema esta listo para la recepción del texto. Dado que es una respuesta concreta, debemos esperar a que se produzca la coincidencia en su totalidad (metodología 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 (carácter de finalización del texto), y esperaremos la respuesta final del módem.

Esta puede acontecer de 2 formas, o un mensaje de error o de un correcto envío. Ambas las trataremos del mismo modo, leyendo los últimos 8 caracteres de la respuesta y comparándolas con las siguientes condiciones:

Condición2 = vbCrLf + vbCrLf + "OK" + vbCrLf El mensaje ha sido guardado o enviado correctamente, Condición3 = 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

parámetro) indicadora de si el comando a ejecutar era el almacenamiento (i=1) o envío (i=2) de mensajes.

Page 70: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

71

7.28 Formulario Enviar Mensaje

“INICIO”

“FIN”

Num Destinatario

Escribir Msg

Salir

Agenda

Llamada desde?

Reenviar Msg

SEND OR WRITE MSG

TRAMA

TREAT RESPONSE Send Storage

PrepararTrama ”AT+CMSS”

CARGAR FORM AGENDA (08)

Boton?

Para realizar el envío debemos aportar el número de teléfono del destinatario con el

que se realizará la comunicación. Este número puede ser consultado en la agenda de teléfonos (a la cual se tiene acceso mediante un pulsador) o introduciéndolo manualmente.

El envío puede tener 2 formas de proceder:

• Si provenimos de la escritura de un mensaje, entonces ejecutaremos la acción

SEND_OR_WRITE_MESSAGE, la cual se encargará de construir la trama con los diferentes parámetros (texto, núm. destinatario), realizará el envío y tratará la respuesta.

• Si queremos reenviar un mensaje, entonces mediante la instrucción AT+CMSS y el

valor de index (posición en la memoria), enviaremos la trama y analizaremos posteriormente los resultados.

Figura 33. Formulario Enviar Mensaje

Page 71: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

72

7.29 Formulario Transferencia De Datos CSD

Colgar

CARGAR FORM CONFIG. CSD

Dial

CARGAR FORM aGENDA

“FIN”

Aceptar Llamada

Opciones Agenda

Rechazar Llamada

MENU

“INICIO”

BOTON ?

TRAMA

TREAT RESPONSE

ATD

PrepararTrama ”ATD”

TRAMA

TREAT RESPONSE ANSWER

PrepararTrama ”ATA”

HANG UP

TRAMA

TREAT RESPONSE

HANGUPCALL

PrepararTrama ”AT+CHUP”

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 envío

del comando ATD + número destinatario, se ejecuta la acción TRAMA que envía y espera la respuesta completa y finalmente se trata dicha respuesta obtenida.

Se puede acceder a la AGENDA también desde este formulario, para consultar el número del futuro interlocutor.

Si seleccionamos COLGAR, se ejecuta la acción HANG UP (se puede observar con más detalle en la página xxxx) con el objetivo de finalizar una comunicación, existente o en proceso de establecerse.

Mediante Aceptar llamada o Rechazar llamada, aceptamos o rehuimos la comunicación con una llamada entrante. Ambas actuaciones se componen de preparar la trama correspondiente (comandos ATA y AT+CHUP, respectivamente), ejecutar la acción TRAMA y tratar la respuesta obtenida.

Pulsando Opciones o menú, tendremos acceso al formulario de configuración de la transferencia de datos CSD o al menú principal respectivamente.

Figura 34. Formulario Transferencia de Datos

Page 72: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

73

7.30 Finalizar Una Llamada, Colgar (Accion Hang Up)

“INICIO”

NO

SI

“FIN”

PrepararTrama ”ATH”

DoEvents STRBUFFER

NO

SI

Cond1

Cond2

Cond3

ElseCase

StrBuffer?

“Ll. Interrumpida “ (aux=1)

“Fin de Llamada” (aux=1)

Error Envío Trama (aux=1)

Aux=1 or Timeout

TRATAR TIMEOUT

Timeout?

SEND COMMAND

Con esta acción 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 'estamos en una conexión y la finalizamos Cond2 = ATH +Cr + CrLf + ERROR + CrLf ‘error en el intento de colgar Cond3 = CrLf + OK + vbCrLf ‘llamada interrumpida

Dado que son 2 formatos distintos, y a causa de la estructura de la última, no podemos implementar la metodología 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.

Figura 35. Acción HANG_UP

Page 73: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

74

7.31 Transferencia De Datos CSD (“Connected”)

Colgar

GUARDAR T.RECIBIDO

Texto Enviar

“FIN”

Texto Recibido Modo

Comandos Modo en linea

“INICIO”

BOTON ?

ESCRIBIR TEXTO

MOSTRAR T.RECIBIDO

HANG UP

TRAMA

TREAT RESPONSE

ONLINEDATA

PrepararTrama ”ATO=0”

CommandMODE

ENVIAR

Una vez esté establecida la comunicación con el interlocutor, podremos realizar las siguientes acciones:

• Escribir texto y enviarlo, simplemente se coloca en el buffer de transmisión.

• Recibir texto y visualizarlo, realizando la lectura del buffer y mostrándolo por pantalla.

• Acceder al modo comandos, mediante la acción COMMAND MODE (la cual

podemos ver desarrollada en la página XXXX) se envía la secuencia de escape y se comprueba que la respuesta certifica que estamos en ese estado de funcionamiento.

• Para retornar al modo en línea debemos enviar el comando ATO (se repite el

proceso preparar trama, envío y espera de respuesta, tratamiento-confirmación del nuevo modo de operación).

• Finalizar la comunicación. Debemos colgar y se ejecutará la acción HANG UP. Se

debe recordar que debemos estar en modo comandos para que esta acción 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.

Figura 36. Transferencia de Datos

Page 74: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

75

7.32 Acceso Al Modo Comandos (Acción Command Mode)

“INICIO”

NO

SI

“FIN”

PrepararTrama +++AT (seqEsc)

DoEvents STRBUFFER

NO

SI

Cond1 Cond2

ElseCase

StrBuffer?

“error trama“ (aux=1)

“modo comando” (aux=1)

Aux=1 or Timeout

TRATAR TIMEOUT

Timeout?

SEND COMMAND

Para pasar de modo en línea 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 ‘acceso correcto al modo comandos Cond2 = vbCrLf + "ERROR" + vbCrLf ‘error al intentar acceder

no podemos hacer un tratamiento del tipo a, ya que la respuesta no contiene la instrucción enviada y por tanto es de longitud inferior para tratarla con la acción TRAMA

Así pues, utilizaremos un tipo c puro, que consistirá en comprobar si corresponde totalmente la respuesta obtenida con una de estas 2 posibles.

Figura 37. Acción COMMAND_MODE

Page 75: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

76

7.33 Configuración De Parámetros Para La Transferencia CSD-HSCSD

“INICIO”

Modificar Velocidad Conexion

VISUALIZAR CONFIG.

MODIFICAR PARAMETROS

MODIFICAR PARÁMETROS

“FIN”

Modificar Modo Llamada

Modificar Carácter Escape

DESHABILITAR CONTROLES

CSD-MENU

HABILITAR CONTROLES

MODIFICAR PARAMETROS

MODIFICAR PARAMETROS

OK OK OK OK

TRAMA

TRAMA

TRAMA

TREAT RESPONSE

ESC_SEQ_CHAR

TREAT RESPONSE

ANSWER_MODE

TREAT RESPONSE

SEL_DIALLING

HABILITAR CONTROLES

PREPARAR TRAMA ATT/ATP

HABILITAR CONTROLES

HABILITAR CONTROLES

PREPARAR TRAMA ATS0

PREPARAR TRAMA ATS2

BOTON ?

Modificar Modo Respuesta

TRAMA

TREAT RESPONSE

BEARER_SERV

PREPARAR TRAMA AT+CBST

Se configuran los parámetros necesarios para la transferencia de datos CSD-

HSCSD. Al cargarse este formulario, se muestra la configuración que existe actualmente. Para modificar alguno de los 4 parámetros existentes, debemos pulsar el botón

modificar específico de cada uno de ellos.Con esta acción se habilita el resto de controles y se posibilita la modificación.

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 volverán a deshabilitar los controles con tal de preservar posibles cambios no deseados.

Figura 38. Formulario Configuración Transferencia de Datos

Page 76: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Diagramas de Flujo

77

Los parámetros de configuración que se han implementado son:

• Velocidad de conexión • Modo de llamada • Modo de Respuesta • Carácter de escape

Todos ellos siguen el formato de envío TRAMA y TREAT_RESPONSE

Page 77: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

78

8. MANUAL DE USUARIO

Page 78: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

79

MANUAL DE USUARIO 8.1 Introducción

Se presenta un pequeño manual explicativo de la aplicación programada. En él se contemplan las posibles acciones a realizar así como la asociación de éstas

a los controles de los formularios. De este modo será mucho más sencillo implementar una acción, ya que éstas están desglosadas por pasos mostrando imágenes de la aplicación e indicando que controles deben pulsarse en cada ocasión.

El manual se desglosará en 7 apartados

• Configuración Del Puerto Serie • Control De Códigos • Menú Principal • Agenda Telefónica • Mensajes De Texto (SMS) • Transferencia De Datos • Registro De Llamadas

Page 79: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

80

8.2 Configuración Del Puerto Serie

Al iniciar el programa aparecerá esta pantalla:

Listas desplegables: Selección del puerto Velocidad Paridad Guarda los cambios Bits de información Bits de stop Muestra la config. predeterminada Abrir puerto serie Cerrar el puerto serie Salir del programa Acceder al módem 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 configuración el puerto serie debe estar cerrado.

El fabricante expone en su manual la configuración necesaria, aunque ésta se puede modificar. Es la siguiente:

Velocidad =9600 baudios, Paridad = ninguna, Bits de Información = 8, Bits de parada =1.

Ésta aparecerá cuando pulsemos

• Configuración Predeterminada.

Cada vez que se inicie el programa se visualizará la ultima configuración utilizada, recogida del registro de Windows. Para salir del programa

• Pulse EXIT.

Figura 39. Configuración Puerto Serie

Page 80: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

81

8.3 Control De Códigos

Si nos aparece la siguiente ventana es indicativo de que la tarjeta SIM está protegida con un código denominado PIN (Personal Identification Number) de 4 hasta 8 dígitos. Introduzca aquí el código Salir del programa Aceptación del código

• Introduzca el código PIN • Pulse OK

Si el código 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 introducción errónea del código se le permite introducirlo de nuevo. Si resultara fallido en 2 ocasiones, sería necesario un segundo código de seguridad denominado PUK (Personal Unblock Code). Introduzca aquí el código PUK

Introduzca aquí un nuevo codigo PIN

Salir del programa Aceptación de códigos

• Introduzca el código PUK • Introduzca el código PIN • Pulse OK

Figura 40. Formulario Código PIN

Figura 41. Formulario Código PUK

Page 81: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

82

Si el código PUK introducido es correcto, el terminal estará activado a la red, y se accederá al menú principal.

En el caso de introducción errónea del código se le permite introducirlo de nuevo. Si resultara fallido en 8 ocasiones, la tarjeta restaría bloqueada por la operadora, y debería recurrir a ella. Si desea salir del programa

• Pulse EXIT 8.4 Menú Principal

En este momento el módem 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 Transferencia Agenda de datos Aplicación extra Libre (calculadora) Información del Salir del módem y SIM Programa Mensajes (SMS) Registro de llamadas

Pulsando en el botón correspondiente se accede a los diferentes submenús.

Esta pantalla puede estar en STANDBY, esto es, una vez no necesitamos operar con la aplicación 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 42. Formulario Menú Principal

Figura 43. Programa en STANDBY

Page 82: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

83

8.5 Agenda Telefónica

Es posible almacenar números de teléfono y los nombres asociados a ellos en la memoria del teléfono (agenda interna de teléfono) o en la tarjeta SIM (agenda SIM del teléfono). Puede acceder a la agenda desde

• el menú principal • la transferencia de datos • el envío de mensajes SMS.

Selección de la agenda de teléfonos (Memoria)

Pulse uno de los dos botones o ME (corresponde a la memoria del modulo) o SIM (memoria de la tarjeta)

Memorización de un número de teléfono con un nombre (nueva entrada)

Es posible memorizar nombres y números de teléfono en la agenda interna de teléfonos o en la agenda SIM.

• Pulse NUEVA ENTRADA, y aparecerá una nueva pantalla

• Rellene los campos POSICIÓN, NÚMERO Y NOMBRE • Pulse INSERTAR para grabar el nuevo registro • Pulse CANCELAR para anular el proceso

Selección de memoria

Búsqueda

Nueva Entrada

Salir de la agenda

Cancelar

Campos de texto

Insertar

Figura 44. Menú AGENDA

Figura 45. Nueva Entrada AGENDA

Page 83: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

84

Búsqueda de un nombre y un numero de teléfono Pulse

• Búsqueda por nombre si desea buscar por la inicial o el nombre del destinatario • Búsqueda por posición si desea visualizar una posición concreta o un rango de

posiciones

Dependiendo de la opción seleccionada le aparecerá una de estas dos ventanas.

• Introduzca el texto de búsqueda en la caja de texto • Pulse OK

Si existen resultados se presentarán como se muestra a continuación, en caso

contrario parecerá un mensaje de aviso comentando la incidencia

Si desea realizar otra búsqueda pulse

• NUEVA BÚSQUEDA, y la búsqueda y resultados anteriores desaparecerán. Para salir de la agenda pulse

• SALIR

Resultados de la búsqueda

Nueva búsquela

Iniciar Texto de búsqueda

Salir

Figura 46. Búsqueda por Nombre Figura 47. Búsqueda por Posición

Figura 48. Resultados de la Búsqueda

Page 84: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

85

8.6 Mensajes De Texto (SMS) Se presenta el siguiente formulario. Escritura y almacenamiento Leer, borrar y reenviar msj. desde la memoria configuración retorno al menú

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 parámetros de los mensajes) • Volver al MENÚ PRINCIPAL

Lectura de un mensaje Si proviene de una notificación

• 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 próximo mensaje (2) • Pulse ANTERIOR para leer el mensaje anterior (1)

Leer Cancelar Ahora Borrar un mensaje

• Acceda al menú SMS • Pulse leer mensaje Una vez mostrado el mensaje a borrar • Pulse borrar mensaje

(1) (2) Reenviar Borrar Menú

Figura 49. Menú de Mensajes SMS

Figura 50. Notificación mensaje recibido

Figura 51.Ventana LEER Mensaje

Page 85: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

86

Escribir un mensaje Texto del mensaje

Enviar Guardar Cancelar y volver al menú SMS

• Acceda al menú SMS • Pulse ESCRIBIR mensaje • Escriba el texto

SI PULSA

• GUARDAR, se guardará en la primera posición libre de memoria • CANCELAR, se borra el texto y se retorna al MENÚ-SMS • ENVIAR, se abrirá formulario de envío y deberá:

o *introducir el número del destinatario y o *pulsar ENVIAR, o o *CANCELAR, para anular el envío

Num. Destino Acceso a la agenda Cancelar envío 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 envío y deberá:

o *introducir el número del destinatario y o *pulsar ENVIAR, o o *CANCELAR, para anular el envío

Figura 53. Enviar mensaje

Figura 52. Escribir mensaje

Page 86: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

87

Configurar los mensajes

• Acceda al menú SMS • Pulse CONFIG. Mensajes • Pulse el botón MODIFICAR del parámetro que desea cambiar • Modifique su valor • Pulse OK para validar los cambios • Repita el proceso tantas veces como desee cambiar la configuración • 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. Selección 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 envío. 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 número del centro que nos proporciona el servicio de mensajería SMS. *Permanencia

Establece el tiempo máximo de validez de los mensajes. El tiempo máximo de permanencia en el centro servidor hasta que sea posible el envío al destinatario (el envío depende de la disponibilidad del receptor)

Memoria Formato

Permanencia Centro Servicio

Menú

Validar cambios

Modificar

Figura 54. Ventana de Configuración de los mensajes

Page 87: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

88

8.7 TRANSFERENCIA DE DATOS Se accede a través del Menú Principal, pulsando TRANSFER CSD-HSCSD.

Cuando reciba una llamada de petición de transferencia de datos le aparecerá por pantalla el siguiente diálogo conjuntamente con el formulario de transferencia de datos

Aceptar la llamada

• Pulse Aceptar Llamada (5)

Rechazar la llamada • Pulse rechazar Llamada (8)

Para Establecer una comunicación de transferencia de datos, acceda al formulario a través del Menú principal:

• Introduzca el número del destinatario(2) Puede acceder a la Agenda si pulsa el botón (3)

• Pulse Establecer conexión (1) Finalizar la comunicación

• Pulse Colgar (4) (si ha establecido una comunicación, recuerde estar en modo comandos)

Figura 55. Formulario de Transferencia de datos CSD-HSCSD

Figura 56. Notificación de llamada entrante

(1)

(2)

(3)

(4)

(9)

(5)

(6)

(7)

(8)

(10)

(11)

(12)

(13)

(14)

Page 88: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

89

Para retornar al menú principal • Pulse MENÚ (7)

ENVÍO Y RECEPCIÓN DE DATOS

Una vez establecida comunicación 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

• Aparecerán en la caja de texto (12) los datos recibidos Acceder al modo comandos

• Pulse COMMAND MODE (9) Retornar al modo en línea

• Pulse ONLINE DATA MODE (10) Guardar datos

• Pulse GUARDAR (14) y los datos recibidos se guardarán en un fichero de texto. Para configurar los parámetros de la transferencia CSD

• Pulse OPCIONES del formulario de transferencia CSD • Pulse el botón MODIFICAR del parámetro que desea cambiar • Modifique su valor • Pulse OK para validar los cambios • Repita el proceso tantas veces como desee cambiar la configuración • Pulse VOLVER A CSD-HSCSD para retornar a la pantalla de transferencias

Se puede configurar:

*Velocidad de conexión Establece o bien el modo automático de velocidad (velocidad según posibilidades) o bien un valor de los mostrados en la lista desplegable.

Figura 57. Configuración CSD-HSCSD

(1)

(1)

(1)

(1)

(1)

Page 89: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Manual de Usuario

90

*Modo de llamada (Tono o Pulsos) Puede seleccionar el formato de llamada, por tonos o por pulsos.

*Modo de respuesta (tipo Manual o Automático)

Determina el sistema de actuación a una llamada entrante. Bien modo manual o automático, en cuyo caso se deberá especificar el numero de RINGS que deben acontecer antes de aceptar dicha llamada.

*Carácter de la secuencia de escape

Establece el carácter que formara la secuencia de escape (+++AT, donde + es el carácter de escape). Esta secuencia nos permitirá pasar de modo en línea a modo comandos. 8.8. Registro De Llamadas El formulario que se presenta es el siguiente: Para acceder al registro de llamadas a través del menú principal

• Pulse REGISTRO DE LLAMADAS

Tiene la opción de acceder a 3 registros (pulse el botón correspondiente a cada uno de ellos para visualizar los resultados).

• Pulsando Llamadas enviadas

visualizará una lista de los 30 últimos números de teléfono a los que ha llamado o ha intentado llamar más recientemente, así como la fecha y la hora de cada llamada.

• Pulsando Llamadas recibidas visualizará una lista de los 30 últimos números de teléfono de los que ha aceptado llamadas más recientemente, así como la fecha y la hora de cada llamada.

• Pulsando Llamadas perdidas visualizará una lista de los 30 últimos números de teléfono 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.

Resultados

Menú Principal

Ll. Recibidas

Ll. Perdidas Ll. Enviadas

Figura 58. Formulario de lectura del Registro de Llamadas

Page 90: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Conclusiones

91

9. CONCLUSIONES

Page 91: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Conclusiones

92

CONCLUSIONES El objetivo de comunicar 2 terminales, sean ámbos dos módems GSM o un módem GSM y un teléfono móvil, se ha conseguido establecer. Las posibilidades que nos proporciona la red inalámbrica GSM ha permitido establecer un tipo de comunicación móvil que anteriormente no hubiese sido imposible realizar. Hace unos años estábamos sometidos a un sistema fijo, estático. El sistema convencional de comunicación telefónica limitaba las comunicaciones a la conexión de una toma fija. Ésta podía o no existir, a causa de imposibilidades geográficas, en aquellos lugares donde era complicado el acceso y establecimiento de los sistemas de cableado y centralitas (valles, montañas, etc).

También existía la limitación de que las comunicaciones debían hacerse desde dos lugares concretos, estáticos, siendo imposible la movilidad de los interlocutores.

Con la implantación del sistema GSM y de las diferentes subestaciones que

proporcionan servicio o cobertura (actualmente existe cobertura GSM en el 87 % del estado español y se permite la interacción con el resto de redes mundiales) las comunicaciones son móviles. Esto es, podremos realizar cualquier tipo de comunicación 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 montaña, valle, etc).

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

sistemas de comunicación que la red GSM permite para evaluar el sistema más adecuado a nuestro propósito. Entre ellos se ha optado por el servicio de mensajes cortos y la trasferencia de datos CSD.

Además de las comunicaciones entre interlocutores se ha debido estudiar el

funcionamiento del terminal que nos permitía dichas comunicaciones. El módem GSM GM29 trabaja, como el 99% de los módems convencionales, mediante comandos AT o Hayes.

La metodología de envío y recepción de diferentes tramas (compuestas por el

comando AT correspond iente a cada acción a ejecutar más los parámetros que lo componen y diversos caracteres de control) ha sido la base de este estudio. Posteriormente se debían tratar las respuestas que el módem enviaba a nuestras instrucciones conforme los resultados esperados. La recepción y análisis 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 actuación con el módem se debía realizar mediante el puerto serie (RS232), el cual se ha debido estudiar con anterioridad para conocer su funcionamiento.

Page 92: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Conclusiones

93

La implementación de estas comunicaciones ha sido realizada mediante el lenguaje de programación 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 programación. La fuente de aprendizaje fueron diferentes libros los cuales quedan detallados en la bibliografía 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 comunicación sin necesidad de conocer la metodología de funcionamiento de los comandos AT. La aplicación generada en este proyecto puede tener suma importancia en aspectos como el control remoto de procesos, tanto a nivel informativo como a nivel de actuación, o el intercambio de información desde recónditos lugares.

La gestión de alarmas podía ser una de ellas. La posibilidad de ser alertados mediante un mensaje SMS de cualquier incidencia respecto a nuestro trabajo, anomalías varias, error en un proceso automatizado, válvula defectuosa, necesidad de reposición de stock ..., podría considerarse tarea de nuestra aplicación.

También puede sernos útil para mantenernos informados periódicamente de una

serie de datos que un dispositivo (por ejemplo un sensor) capte desde algún lugar donde no exista red telefónica convencional o como auxiliar en caso de que ésta fallase. Podría ser el caso de un proceso automatizado o estaciones meteorológicas a altitudes elevadas.

Page 93: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

94

10. CÓDIGO FUENTE

Page 94: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

95

CÓDIGO FUENTE 10.1 Introducción

En este apartadao incluiremos el código fuente redactado para la ejecución de la aplicación.

Presentamos el código comentado extensamente haciendo referencia a las particularidades y evolución del mismo.

10.2 Código

Divideremos el código en 2 partes: módulos de formulario y módulos estándar. La estructura de presentación será la compuesta por el diseño gráfico de cada uno

de los módulos de formulario (dado el carácter “visual” del lenguaje de programación utilizado,VISUAL BASIC) y el código asociado a dicho módulo y a los controles que lo componen.

En los módulos estándar se incluirán las acciones y funciones generales, que

pueden ser ejecutadas desde cualquier módulo de formulario.

Page 95: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

96

10.2.1 FORMULARIO 00.(PRESENTATION.FRM) PRESENTACIÓN DEL PROGRAMA

'SE CARGA EL FORMULARIO. SE PRESENTAN LAS DIFERENTES ETIQUETAS Private Sub Form_Load() lblVersion.Caption = "Versión " & App.Major & "." & App.Minor & "." & App.Revision lblProductName.Caption = App.Title End Sub ‘************************************************************************ 'AL PULSAR EL BOTÓN SE VISUALIZA EL FORMULARIO DE CONFIGURACIÓN DEL PUERTO SERIE Y DEL FORMULARIO DE CONTROL DE TRAMAS DE ENVÍO-RECEPCION Private Sub cmdOK_Click() Form01.Visible = True Form21.Visible = True Unload Me End Sub ‘************************************************************************

Figura 59. PRESENTATION.frm

Page 96: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

97

10.2.2 FORMULARIO 01.(COM_PORT_CONFIG.FRM) CONFIGURACIÓN DEL PUERTO SERIE

'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 botón CERRAR del formulario GET_SETTINGS VIEW_CONFIGURATION

End Sub ‘************************************************************************ 'ADQUISICION DE INFORMACIÓN DEL REGISTRO DE WINDOWS 'DE LA ULTIMA CONFIGURACIÓN 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

Figura 60. COM_PORT_CONFIG.frm

Page 97: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

98

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 'confirmación 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 CONFIGURACIÓN 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 'configuración 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 ‘************************************************************************ 'CONFIGURACIÓN DEL PUERTO SERIE Private Sub PORT_CONFIG()

Select Case parity ‘selección de paridad Case "NONE" parity = "N" Case "ODD" parity = "O" Case "EVEN" parity = "E" End Select With MSComm1 ‘se configura Mscomm .InputLen = 0 .InputMode = comInputModeText

Page 98: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

99

.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 'botón 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 ‘************************************************************************ 'ENVÍO DE LA TRAMA DE MODO DE NOTIFICACIÓN DE ERRORES Y SE TRATA LA RESPUESTA OBTENIDA + ENVÍO DE LA TRAMA DE CONTROL DEL CÓDIGO PIN Private Sub cmdOK_Click() 'trama MOBILE_EQUIPMENT_ERROR,selecciona el modo de anuncio de errores

str = "AT+CMEE=2" + vbCr TRAMA 'envío MOBILE_EQUIPMENT_ERROR 'tratamiento de la respuesta

PIN_CONTROL 'envío 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 CONFIGURACIÓN 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 ‘************************************************************************

Page 99: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

100

'CONTROL DEL EVENTO ONCOMM A TRAVÉS 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 línea CD.")

Case comEvCTS MsgBox ("Cambio en la línea CTS.")

Case comEvDSR MsgBox ("Cambio en la línea DSR.") ' Errores Case comBreak MsgBox ("Se ha recibido una interrupción.")

Case comEventFrame MsgBox ("Error de trama.")

Case comEventOverrun MsgBox ("Puerto desbordado. No se leyó un carácter desde el hardware antes de llegar otro carácter y el primero se ha perdido!!")

Case comEventRxOver MsgBox ("Desbordamiento del búfer de recepción.No hay espacio suficiente en el búfer de recepción.")

Case comEventRxParity MsgBox ("Error de paridad.")

Case comEventTxFull MsgBox ("Búfer de transmisión lleno. Se ha intentado colocar un carácter más en la cola mientras el búfer de transmisión 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 'visualización 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

Page 100: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

101

strBUFFER = "" 'se vacia la variable que recoge contenido del buffer End If '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 'actualización 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 ‘************************************************************************

Page 101: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

102

10.2.3 FORMULARIO 02.(PIN_CODE.FRM) FORMULARIO DE CONTROL DE ACCESO MEDIANTE CÓDIGO PIN

'CARGA DEL FORMULARIO Private Sub Form_Load()

Form01.Visible = False 'se hace invisible el formulario 01 DisableX Form02 'se deshabilita el botón CERRAR del form TEXT_PIN.Text = "" 'se borra el texto de la caja TEXT_PIN

End Sub ‘************************************************************************ 'CÓDIGO PIN SOLO ADMITE VALORES NUMÉRICOS. TAMBIÉN 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 ‘************************************************************************ 'ENVÍO DE LA TRAMA DEL CÓDIGO PIN Y TRATAMIENTO DE LA RESPUESTA OBTENIDA Private Sub cmdOK_PIN_Click() Dim PIN As String

If TEXT_PIN.Text = "" Then 'confirmación si TEXT_PIN en blanco MsgBox ("INTRODUZCA CÓDIGO PIN EN LA CAJA DE TEXTO") Exit Sub 'se sale de la rutina End If PIN = Chr(34) + TEXT_PIN.Text + Chr(34) 'código PIN entre comillas str = "AT+CPIN=" + PIN + vbCr TRAMA 'envío de la trama PIN_CODE 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'SE SALE DEL PROGRAMA Private Sub cmdEXIT_PIN_Click()

End End Sub ‘************************************************************************

Figura 61. PIN_CODE.FRM

Page 102: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

103

10.2.4 FORMULARIO 03.(PUK_CODE.FRM) FORMULARIO DE INTRODUCCIÓN DEL CÓDIGO PUK

'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 botón 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 ‘************************************************************************ 'CÓDIGO PUK SOLO ADMITE VALORES NUMÉRICOS. 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 ‘************************************************************************ 'CÓDIGO PIN SOLO ADMITE VALORES NUMÉRICOS. 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 ‘************************************************************************ 'ENVÍO DE LA TRAMA DEL CÓDIGO 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 'envío trama PUK PUK_PIN_CODES 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'SE SALE DEL PROGRAMA Private Sub cmdEXIT_Click() End End Sub ‘************************************************************************

Figura 62. PUK_CODE.FRM

Page 103: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

104

10.2.5 FORMULARIO 04.(MENÚ.FRM) FORMULARIO DEL MENÚ PRINCIPAL

'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 botón 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

Figura 63. MENU.FRM

Figura 64. Programa en STANDBY

Page 104: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

105

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 = "MÓDEM GSM GM29" & vbNullChar End With End Sub ‘************************************************************************ 'LECTURA DEL FICHERO DE CONFIGURACIÓN 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 CONFIGURACIÓN DEL PROGRAMA Private Sub READ_CONFIGURATION_FILE() Dim a As String 'variable local de la acción NUMFICH = FreeFile 'posición libre ruta = CurDir 'directorio actual ruta = ruta + "\CONFIGURACIÓN.alb" 'CONFIGURACIÓN.alb = fichero a = Dir(ruta) 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 información Close NUMFICH 'se cierra el fichero SEND_CONFIGURATION 'envío de tramas

Else 'si no existe LOAD_DEFAULT_CONFIGURATION 'se carga la config. predeterminada SEND_CONFIGURATION 'envío de tramas

End If End Sub ‘************************************************************************ 'SE CARGA LA CONFIGURACIÓN PREDETERMINADA Private Sub LOAD_DEFAULT_CONFIGURATION()

config.mem1 = Chr(34) + "SM" + Chr(34) 'memoria1 = tarjeta SIM config.mem2 = Chr(34) + "SM" + Chr(34) 'memoria2 = tarjeta SIM config.mem3 = Chr(34) + "SM" + Chr(34) 'memoria3 = tarjeta SIM config.MsgFormat = "1" 'formato mensaje= TEXTO

Page 105: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

106

config.PhoneBook = Chr(34) + "SM" + Chr(34) 'agenda teléfonos = SIM config.SERV_CENT = "+34607003110" 'nºcentro 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" 'selección automat. bps config.escape_sequence = "43" 'char de escape = 43

End Sub ‘************************************************************************ 'ENVÍO DE TRAMAS DE CONFIGURACIÓN 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 'envío de la trama SET_CLOCK SET_CLOCK 'tratamiento de la respuesta

'trama SERVICE CENTRE ADRESS,establece el número del centro de mensajes

str = "AT+CSCA=" + Chr(34) + config.SERV_CENT + Chr(34) + vbCr TRAMA 'envío SERVICE_CENTRE_ADRESS 'tratamiento de la respuesta

'trama MESSAGE FORMAT, establece el tipo de mensajes

str = "AT+CMGF=" + config.MsgFormat + vbCr TRAMA 'envío MESSAGE_FORMAT 'tratamiento de la respuesta

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

str = "AT+CPBS=" + config.PhoneBook + vbCr TRAMA 'envío 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 'envío MSGTXT_TIME_MAX 'tratamiento de la respuesta

'trama SELECT DIALLING, selecciona el modo de llamada

str = config.dialling + vbCr TRAMA 'envío SELECT_DIALLING 'tratamiento de la respuesta

'trama AUTOMATIC ANSWER CONTROL, configura el modo de respuesta de 'llamada

str = "ATS0=" + config.answer_mode + vbCr TRAMA 'envío AUTOMATIC_ANSWER_CONTROL 'tratamiento de la respuesta

'trama SELECT BEARER SERVICE,configura la velocidad de la conexión

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

Page 106: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

107

'trama ESCAPE SEQUENCE CHARACTER, configura el carácter de escape del 'modo online data mode

str = "ATS2=" + config.escape_sequence + vbCr TRAMA 'envío 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 'envío 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 TELÉFONOS 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 (aplicación 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 ‘************************************************************************

Page 107: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

108

'INFORMACIÓN ACERCA DEL MÓDEM Y LA TARGETA SIM Private Sub cmdABOUTmódem_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 botón 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 CONFIGURACIÓN 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 ‘************************************************************************

Page 108: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

109

10.2.6 FORMULARIO 05.(CALL_REGISTER.FRM) FORMULARIO DEL REGISTRO DE LLAMADAS

'SE CARGA EL FORMULARIO Private Sub Form_Load()

Unload Form04 'se cierra MENÚ principal DisableX Form05 'se deshabilita el botón CERRAR del formulario

End Sub ‘************************************************************************ 'PETICIÓN 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 'envío 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 ‘************************************************************************ 'PETICIÓN 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 ‘************************************************************************

Figura 65. CALL_REG.FRM

Page 109: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

110

'PETICIÓN 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 ‘************************************************************************

Page 110: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

111

10.2.7 FORMULARIO 06.(DATA_TRANSFER_CSD_HSCSD.FRM) FORMULARIO DE TRANSFERENCIA DE DATOS CSD

'CARGA DEL FORMULARIO Private Sub Form_Load()

Unload Form04 'se cierran el resto de formularios Unload Form07 DisableX Form06 'se deshabilita el botón 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 conexión con un destinatario str = "ATD" + Text_DestinationNumber.Text + vbCr TRAMA 'envío ATD 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'EL NUMER0 DE TELÉFONO DEL DESTINATARIO ES UN VALOR NUMÉRICO 'TAMBIÉN 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 ‘************************************************************************

Figura 66. DATA_TRANSFER_CSD_HSCSD.FRM

Page 111: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

112

'ACCESO A LA AGENDA DE TELÉFONOS 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 'envío 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 'conexión 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 'envío 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 'envío RETURN_TO_ONLINE_DATA_MODE 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'ENVÍO 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 vacía 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 'posición libre

Page 112: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

113

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 CONFIGURACIÓN 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 ‘************************************************************************

Page 113: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

114

10.2.8 FORMULARIO 07.(CSD_CONFIGURATION.FRM) FORMULARIO DE CONFIGURACIÓN DE LA TRANSFERENCIA CSD

'SE CARGA EL FORMULARIO Private Sub Form_Load()

Unload Form06 'se cierra el formulario de CSD DisableX Form07 'se deshabilita el botón 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 CONFIGURACIÓN ACTUAL Private Sub VIEW_CONFIGURATION() 'velocidad de conexión

Select Case config.bearer_Service Case "0" combo_speed_connection.Text = "AUTO SELECTION OF BAUDRATE"

Figura 67. CSD_CONFIGURATION.FRM

Page 114: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

115

Case "4" combo_speed_connection.Text = "2400 bps V.22bis" Case "6" combo_speed_connection.Text = "4800 bps V.32" Case "7" combo_speed_connection.Text = "9600 bps V.32" Case "12" combo_speed_connection.Text = "9600 bps V.34" Case "15" combo_speed_connection.Text = "19200 bps V.34" Case "68" combo_speed_connection.Text = "2400 bps V.110 (ISDN)" Case "70" combo_speed_connection.Text = "4800 bps V.110 (ISDN)" Case "71" combo_speed_connection.Text = "9600 bps V.110 (ISDN)" Case "75" combo_speed_connection.Text = "14400 bps V.110 (ISDN)" Case "79" combo_speed_connection.Text = "19200 bps V.110 (ISDN)" Case "80" combo_speed_connection.Text = "28800 bps V.110 (ISDN)" Case "81" combo_speed_connection.Text = "38400 bps V.110 (ISDN)" Case "82" combo_speed_connection.Text = "48000 bps V.110 (ISDN)" Case "83" combo_speed_connection.Text = "56000 bps V.110 (ISDN)" End Select

'modo de llamada

If config.dialling = "ATT" Then 'tonos Opt_Tone.Value = True

Else 'pulsos Opt_Pulse.Value = True

End If 'modo de respuesta de llamadas

If config.answer_mode = "0" Then 'modo manual Opt_Manual_Answer.Value = True

Else Text_AutoRings.Text = config.answer_mode 'modo automatico, Opt_Auto_Answer.Value = True 'nº de rings

End If 'carácter 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

Page 115: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

116

End Sub ‘************************************************************************ 'MODIFICAR MODO DE RESPUESTA A UNA LLAMADA ENTRANTE Private Sub cmdModifyANSWER_Click()

FrmANSWER.Enabled = True cmdOKANSWER.Enabled = True

End Sub ‘************************************************************************ 'SELECCIÓN DE MODO MANUAL Private Sub Opt_Manual_Answer_Click()

Text_AutoRings.Text = "" config.answer_mode = "0"

End Sub ‘************************************************************************ 'SELECCIÓN DE MODO AUTOMATICO Private Sub Opt_Auto_Answer_Click()

config.answer_mode = Text_AutoRings.Text 'nº rings End Sub ‘************************************************************************ 'CAPTACIÓN DEL VALOR DE RINGS Private Sub Text_AutoRings_Change()

config.answer_mode = Text_AutoRings.Text 'nº rings End Sub ‘************************************************************************ 'NÚMERO DE RINGS ES UN VALOR NUMÉRICO DEL 1 AL 7 'TAMBIÉN 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 'envío 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 ‘************************************************************************ 'SELECCIÓN DE LLAMADA POR PULSOS Private Sub Opt_Pulse_Click()

config.dialling = "ATP"

Page 116: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

117

End Sub ‘************************************************************************ 'SELECCIÓN 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 'envío SELECT_DIALLING 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'MODIFICAR VELOCIDAD DE CONEXIÓN Private Sub cmdModifyBEARSERV_Click()

FrmBEARER_SERVICE.Enabled = True cmdOKBEARSERV.Enabled = True

End Sub ‘************************************************************************ 'SELECCIÓN DE VELOCIDAD DE CONEXIÓN 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"

Page 117: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

118

End Select End Sub ‘************************************************************************ 'VALIDAR VELOCIDAD DE CONEXIÓN Private Sub cmdOKBEARSERV_Click()

FrmBEARER_SERVICE.Enabled = False cmdOKBEARSERV.Enabled = False

'trama SELECT BEARER SERVICE, configura la velocidad de la conexión

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

End Sub ‘************************************************************************ 'MODIFICAR CARÁCTER DE LA SECUENCIA DE ESCAPE Private Sub cmdModifyESCSEQ_Click()

FrmESCAPESEQ.Enabled = True cmdOKESCSEQ.Enabled = True

End Sub ‘************************************************************************ 'CONFIGURACIÓN DEL CARÁCTER DE LA SECUENCIA DE ESCAPE Private Sub Text_EscapeSEQ_Change()

config.escape_sequence = Text_EscapeSEQ.Text End Sub ‘************************************************************************ 'CARÁCTER DE ESCAPE ES UN VALOR NUMÉRICO. 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 CARÁCTER DE LA SECUENCIA DE ESCAPE Private Sub cmdOKESCSEQ_Click()

FrmESCAPESEQ.Enabled = False cmdOKESCSEQ.Enabled = False

'trama ESCAPE SEQUENCE CHARACTER, configura el carácter de escape del 'modo online data mode

str = "ATS2=" + config.escape_sequence + vbCr TRAMA 'envío ESCAPE_SEQUENCE_CHARACTER 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'RETORNA AL FORMULARIO CSD Private Sub cmdReturnCSD_Click()

Form06.Visible = True End Sub ‘************************************************************************

Page 118: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

119

10.2.9 FORMULARIO 08.(PHONEBOOK.FRM) FORMULARIO DE LA AGENDA DE TELÉFONOS

'SE CARGA EL FORMULARIO Private Sub Form_Load()

Unload Form04 'cerrar resto de formularios que restan visibles Unload Form12 DisableX Form08 'se deshabilita el botón CERRAR del formulario VIEW_CONFIGURATION

End Sub ‘************************************************************************ 'SE VISUALIZA LA CONFIGURACIÓN DE LA AGENDA DE TELÉFONOS Private Sub VIEW_CONFIGURATION()

If config.PhoneBook = Chr(34) + "SM" + Chr(34) Then 'tarj. SIM Optmem_SIM.Value = True

Else 'módem GM29 Optmem_ME.Value = True

End If End Sub ‘************************************************************************ 'SELECCIÓN DEL ALMACENAMIENTO DE LA AGENDA, módulo GM29 Private Sub Optmem_ME_Click()

config.PhoneBook = Chr(34) + "ME" + Chr(34) End Sub ‘************************************************************************ 'SELECCIÓN DEL ALMACENAMIENTO DE LA AGENDA, tarjeta SIM Private Sub Optmem_SIM_Click()

config.PhoneBook = Chr(34) + "SM" + Chr(34) End Sub ‘************************************************************************ 'ACCESO A LA BÚSQUEDA POR NOMBRE Private Sub cmdNameSearch_Click()

Form09.Visible = True Unload Me

End Sub ‘************************************************************************ 'ACCESO A LA BÚSQUEDA POR POSICIÓN Private Sub cmdSearchPosition_Click()

Form10.Visible = True Unload Me

Figura 68. PHONEBOOK.FRM

Page 119: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

120

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 envío SMS

Else Form04.Visible = True 'ir al MENÚ principal

End If End Sub ‘************************************************************************

Page 120: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

121

10.2.10 FORMULARIO 09.(PHONEBOOK_NAME_SEARCH.FRM) FORMULARIO DE LA BÚSQUEDA POR NOMBRE EN LA AGENDA

‘SE CARGA EL FORMULARIO Private Sub Form_Load()

DisableX Form09 'se deshabilita el botón CERRAR del formulario 'trama PHONEBOOK STORAGE, establece el lugar de la agenda telefónica

str = "AT+CPBS=" + config.PhoneBook + vbCr TRAMA 'envío PHONEBOOK_STORAGE 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'INICIA LA BÚSQUEDA Private Sub cmdOK_Click()

Form11.Text_ResultPhoneBook.Text = "" 'borrar resultados anteriores If Text_NameSearch.Text = "" Then 'tratar posible error

MsgBox ("INTRODUZCA TEXTO DE BÚSQUEDA") Exit Sub

End If

'trama PHONEBOOK READ, envia trama y presenta nombres y números de tlf. 'de la agenda

str = "AT+CPBF=" + Chr(34) + Text_NameSearch.Text + Chr(34) + vbCr PHONEBOOK_READ (2) '2=agenda teléfonos

End Sub ‘************************************************************************ 'REALIZAR NUEVA BÚSQUEDA Private Sub cmdNewSearch_Click()

Text_NameSearch.Text = "" 'borrar texto de búsqueda anterior Unload Form11 'ocultar form. de resultados anteriores

End Sub ‘************************************************************************ 'SALIR DE LA BÚSQUEDA Private Sub cmdExitSearch_Click()

Unload Form11 If Form06.Visible = True Or Form17.Visible = True Then

Unload Me 'si proviene de CSD o de envío SMS, cerrar form Else

Form04.Visible = True 'sino mostrar MENÚ principal End If

End Sub ‘************************************************************************

Figura 69. PHONEBOOK_NAME_SEARCH.FRM

Page 121: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

122

10.2.11 FORMULARIO 10.(PHONEBOOK_POSITION_SEARCH.FRM) FORMULARIO DE LA BÚSQUEDA POR POSICIÓN O RANGO EN LA AGENDA

'SE CARGA EL FORMULARIO Private Sub Form_Load()

DisableX Form10 'se deshabilita el botón CERRAR del formulario 'trama PHONEBOOK STORAGE, establece el lugar de la agenda telefonica

str = "AT+CPBS=" + config.PhoneBook + vbCr TRAMA 'envío PHONEBOOK_STORAGE 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'INICIA LA BÚSQUEDA Private Sub cmdOK_Click()

Form11.Text_ResultPhoneBook.Text = "" 'borrar resultados anteriores If Text_PositionSearch.Text = "" Then 'tratar posible error MsgBox ("INTRODUZCA TEXTO DE BÚSQUEDA") Exit Sub End If

'trama PHONEBOOK READ, envia trama y presenta nombres y números de 'teléfonos de la agenda

str = "AT+CPBR=" + Text_PositionSearch.Text + vbCr PHONEBOOK_READ (2) '2=agenda teléfonos

End Sub ‘************************************************************************ 'POSICIÓN O RANGO SON VALORES NUMÉRICOS 'TAMBIÉN 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 BÚSQUEDA Private Sub cmdNewSearch_Click()

Text_PositionSearch.Text = "" 'borrar texto de búsqueda anterior Unload Form11 'ocultar form de resultados anteriores

End Sub ‘************************************************************************

Figura 70. PHONEBOOL_POSITION_SEARCH.FRM

Page 122: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

123

'SALIR DE LA BÚSQUEDA Private Sub cmdExitSearch_Click()

Unload Form11 If Form06.Visible = True Or Form17.Visible = True Then

Unload Me 'si proviene de CSD O de envío SMS, cerrar form Else

Form04.Visible = True 'sino mostrar MENÚ principal End If

End Sub ‘************************************************************************

Page 123: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

124

10.2.12 FORMULARIO 11.(PHONEBOOK_SEARCH_RESULTS.FRM) FORMULARIO DE PRESENTACION DE RESULTADOS DE LA BÚSQUEDA EN LA

AGENDA DE TELÉFONOS

‘SE CARGA EL FORMULARIO Private Sub Form_Load()

DisableX Form11 'se deshabilita el botón CERRAR del formulario End Sub ‘************************************************************************

Figura 71. PHONEBOOK_SEARCH_RESULTS.FRM

Page 124: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

125

10.2.13 FORMULARIO 12.(PHONEBOOK_WRITE.FRM) FORMULARIO INSERTAR NUEVA ENTRADA A LA AGENDA DE TELÉFONOS

'SE CARGA FORMULARIO Private Sub Form_Load()

Unload Form08 DisableX Form12 'se deshabilita el botón CERRAR del formulario

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

str = "AT+CPBS=" + config.PhoneBook + vbCr TRAMA 'envío PHONEBOOK_STORAGE 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'AÑADIR NUEVA ENTRADA Private Sub cmdADD_Click() Dim position As String 'variables locales Dim number As String Dim name As String

position = Text_SavePosition.Text 'posición 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, añade un nuevo registro en la agenda de telf

str = "AT+CPBW=" + position + "," + number + ",," + name + vbCr TRAMA 'envío PHONEBOOK_WRITE 'tratamiento de la respuesta

End Sub ‘************************************************************************ 'LA POSICIÓN EN LA AGENDA ES UN VALOR NUMÉRICO. 'TAMBIÉN 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 NÚMERO DE TELÉFONO ES UN VALOR NUMÉRICO. TAMBIÉN SE PERMITE LA TECLA BORRAR (8) Y EL PREFIJO + (43) Private Sub Text_SaveNumber_KeyPress(KeyAscii As Integer)

Figura 72. PHONEBOOK_WRITE.FRM

Page 125: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

126

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 ‘************************************************************************

Page 126: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

127

10.2.14 FORMULARIO 13.(SMS.FRM) FORMULARIO MENÚ DE MENSAJES SMS

'SE CARGA EL FORMULARIO Private Sub Form_Load()

UNLOAD_FORMS 'se cierran resto de formularios abiertos DisableX Form13 'se deshabilita el botón 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 CONFIGURACIÓN 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 ‘************************************************************************

Figura 73. SMS.FRM

Page 127: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

128

10.2.15 FORMULARIO 14.(SMS_CONFIGURATION.FRM) FORMULARIO CONFIGURACIÓN DE MENSAJES SMS

'SE CARGA EL FORMULARIO Private Sub Form_Load()

Unload Form13 DisableX Form14 'se deshabilita el botón 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 ‘************************************************************************

Figura 74. SMS_CONFIGURATION.FRM

Page 128: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

129

'VISUALIZAR CONFIGURACIÓN 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 'TEXT

Else OptPDU.Value = True 'PDU

End If 'Tiempo máximo 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

Page 129: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

130

frmMEM2.Enabled = True frmMEM3.Enabled = True cmdOKPREFMES.Enabled = True

End Sub ‘************************************************************************ 'SELECCIÓN DE ME PARA LA MEMORIA 1 Private Sub Optm1ME_Click()

config.mem1 = Chr(34) + "ME" + Chr(34) End Sub ‘************************************************************************ 'SELECCIÓN DE SM PARA LA MEMORIA 1 Private Sub Optm1SM_Click()

config.mem1 = Chr(34) + "SM" + Chr(34) End Sub ‘************************************************************************ 'SELECCIÓN DE ME PARA LA MEMORIA 2 Private Sub Optm2ME_Click()

config.mem2 = Chr(34) + "ME" + Chr(34) End Sub ‘************************************************************************ 'SELECCIÓN DE SM PARA LA MEMORIA 2 Private Sub Optm2SM_Click()

config.mem2 = Chr(34) + "SM" + Chr(34) End Sub ‘************************************************************************ 'SELECCIÓN DE ME PARA LA MEMORIA 3 Private Sub Optm3ME_Click()

config.mem3 = Chr(34) + "ME" + Chr(34) End Sub ‘************************************************************************ 'SELECCIÓN 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 NÚMERO DEL CENTRO DE SERVICIO 'se habilitan los controles correspondientes Private Sub cmdModifySERVCENT_Click()

FrmSERV_CENT2.Enabled = True cmdOKSERVCENT.Enabled = True

End Sub ‘************************************************************************

Page 130: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

131

'SELECCIÓN DE LA OPERADORA AMENA Private Sub Opt_Amena_Click()

config.SERV_CENT = "+34656000311" End Sub ‘************************************************************************ 'SELECCIÓN DE LA OPERADORA MOVISTAR Private Sub Opt_Movistar_Click()

config.SERV_CENT = "+34609090909""+34656000311" End Sub ‘************************************************************************ 'SELECCIÓN DE LA OPERADORA VODAFONE Private Sub Opt_Vodafone_Click()

config.SERV_CENT = "+34607003110" End Sub ‘************************************************************************ 'SELECCIÓN DE OTRA OPERADORA. INTRODUCIR VALOR Private Sub Opt_Other_Click()

Text_SCA.SetFocus config.SERV_CENT = Text_SCA.Text 'introducir número

End Sub ‘************************************************************************ 'CAPTACION DEL VALOR DEL CENTRO DE SERVICIO Private Sub Text_SCA_Change()

config.SERV_CENT = Text_SCA.Text End Sub ‘************************************************************************ 'NÚMERO DEL CENTRO DE SERVICIO SOLO ADMITE VALORES NUMÉRICOS 'Y EL PREFIJO + (43). TAMBIÉN 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 número del centro de mensajes

str = "AT+CSCA=" + Chr(34) + config.SERV_CENT + Chr(34) + vbCr TRAMA 'envío 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 ‘************************************************************************

Page 131: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

132

'SELECCIÓN DE FORMATO DE MENSAJES = PDU Private Sub OptPDU_Click()

config.MsgFormat = "0" End Sub ‘************************************************************************ 'SELECCIÓN 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 'envío 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 ‘************************************************************************ 'SELECCIÓN DE TIEMPO MAXIMO = 1H Private Sub Opt1h_Click()

config.time_max = "17,011,0,0" End Sub ‘************************************************************************ 'SELECCIÓN DE TIEMPO MAXIMO = 1SEMANA Private Sub Opt1w_Click()

config.time_max = "17,173,0,0" End Sub ‘************************************************************************ 'SELECCIÓN DE TIEMPO MAXIMO = 24H Private Sub Opt24h_Click()

config.time_max = "17,167,0,0" End Sub ‘************************************************************************ 'SELECCIÓN DE TIEMPO MAXIMO = 6H Private Sub Opt6h_Click()

config.time_max = "17,071,0,0" End Sub ‘************************************************************************ 'SELECCIÓN DE TIEMPO MAXIMO = 72H Private Sub Opt72h_Click()

config.time_max = "17,169,0,0" End Sub ‘************************************************************************

Page 132: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

133

'SELECCIÓN 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 'envío 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 ‘************************************************************************

Page 133: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

134

10.2.16 FORMULARIO 15.(READ_SMS.FRM) FORMULARIO DE LECTURA, BORRADO Y REENVIADO DE SMS

'SE CARGA EL FORMULARIO Private Sub Form_Load()

Unload Form13 'cerrar resto de formularios Unload Form18 DisableX Form15 'se deshabilita el botón CERRAR del formulario index = 1 'posición del mensaje a leer

'trama READ MESSAGE, envío de la trama y lectura del mensaje SMS READ_MESSAGE (True)

End Sub ‘************************************************************************ 'LEER PRÓXIMO MENSAJE Private Sub cmdNEXT_Click()

Text_ReadSMS.Text = "" index = index + 1 'se avanza una posición 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, envío 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 posición 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 ‘************************************************************************

Figura 75. READ_SMS.FRM

Page 134: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

135

'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 posición determinada

str = "AT+CMGD=" + index2 + vbCr TRAMA 'envío 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 ‘************************************************************************

Page 135: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

136

10.2.17 FORMULARIO 16.(WRITE_SMS.FRM) FORMULARIO ESCRIBIR MENSAJES,GUARDAR O ENVIAR

'SE CARGA FORMULARIO Private Sub Form_Load()

Unload Form13 DisableX Form16 'se deshabilita el botón 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 ‘************************************************************************

Figura 76. WRITE_SMS.FRM

Page 136: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

137

10.2.18 FORMULARIO 17.(SEND_SMS.FRM)

FORMULARIO ENVIAR MENSAJES

'SE CARGA FORMULARIO Private Sub Form_Load()

DisableX Form17 'se deshabilita el botón CERRAR del formulario End Sub ‘************************************************************************ 'ENVIAR MENSAJE Private Sub cmdSendSMS_Click() 'variables locales Dim DestinationNumber As String 'número de teléfono Dim index2 As String 'posición 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 posición de memoria

str = "AT+CMSS=" + index2 + "," + DestinationNumber + vbCr TRAMA 'envío SEND_FROM_STORAGE 'tratamiento de la respuesta

End If End Sub ‘************************************************************************ 'EL NÚMERO DE TELÉFONO ES UN VALOR NUMÉRICO 'TAMBIÉN 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 ‘************************************************************************

Figura 77. SEND_SMS.FRM

Page 137: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

138

'ACCESO A LA AGENDA DE TELÉFONOS Private Sub cmdPhoneBook_Click()

Form08.Visible = True End Sub ‘************************************************************************ 'CANCELAR Private Sub cmdCancel_Click()

Unload Me End Sub ‘************************************************************************

Page 138: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

139

10.2.19 FORMULARIO 18.(NEW_SMS_NOTIFY.FRM) FORMULARIO DE NOTIFICACIÓN DE NUEVO MENSAJE RECIBIDO

'SE CARGA FORMULARIO Private Sub Form_Load()

strBUFFER = "" 'se vacia la variable que contine la información 'del buffer

DisableX Form18 'se deshabilita el botón CERRAR del formulario End Sub ‘************************************************************************ 'LEER MENSAJE Private Sub cmdReadNOW_Click()

Form15.Visible = True index = 1 'posición de lectura

'trama READ MESSAGE, envío de la trama y lectura del mensaje SMS READ_MESSAGE (True) 'true=sentido de lectura hacia adelante

End Sub ‘************************************************************************

Figura 78. NEW_SMS_NOTIFY.FRM

Page 139: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

140

10.2.20 FORMULARIO 19.(CALL_NOTIFY.FRM) FORMULARIO DE NOTIFICACIÓN DE LLAMADA ENTRANTE

‘AL CERRARSE EL FORMULARIO SE REINICIALIZA LA VARIABLE CONTADOR Private Sub Form_Unload(Cancel As Integer) RINGS = 0 End Sub ‘************************************************************************

Figura 79. CALL_NOTIFY.FRM

Page 140: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

141

10.2.21 FORMULARIO 20.(MODULE_SIM_IDENTIFICATION.FRM) FORMULARIO DE INFORMACIÓN DEL MÓDEM Y DE LA TARGETA SIM

'SE CARGA EL FORMULARIO Private Sub Form_Load()

Unload Form04 'cerramos el MENÚ principal DisableX Form20 'se deshabilita el botón CERRAR del formulario

End Sub ‘************************************************************************ 'RETORNO AL MENÚ PRINCIPAL Private Sub cmdOK_Click()

Form04.Visible = True End Sub ‘************************************************************************

Figura 80. MODULE_SIM_IDENTIFICATION.FRM

Page 141: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

142

10.2.22 FORMULARIO 21.(TRAMAS_ENV_RECEPC.FRM) FORMULARIO DE VISUALIZACIÓN DE LAS TRAMAS DE ENVÍO Y RECEPCIÓN

Figura 81. TRAMAS_ENV_RECEP.FRM

Page 142: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

143

10.2.23 MODULE VARIABLES.(Variables.bas) 'MÓDULO de declaración de variables

'Declaracion de variables publicas

Public str As String 'preparacion de tramas Public index As Integer 'lectura de sms Public online_data As Boolean 'modo online o comand Public strBUFFER As String 'contiene datos del buffer Public RINGS As Integer 'número de rings (llamadas) Public timeout_cont As Integer 'contador de segundos (timeout) Public timeout As Boolean '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)

Page 143: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

144

10.2.24 MODULE PROCEDURES.(Procedures.bas) 'MÓDULO de declaración de acciones de envío de tramas

‘DECLARACION DE VARIABLES LOCALES PARA ESTE MÓDULO Private aux As Integer Private straux As String ‘************************************************************************ 'ACCIÓN 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 ‘************************************************************************ 'ENVÍO 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 ‘************************************************************************ 'INICIALIZACIÓN 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 (tamaño de la trama de envío) Public Sub WAIT_RESULT_CODES()

Do DoEvents 'se permiten eventos para la actualización 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 envío de comandos Public Sub TIME_OUT() If timeout Then 'ha ocurrido timeout

MsgBox "ERROR DE TIMEOUT" + vbCrLf + "Compruebe que el módem este enchufado correctamente y ejecute de nuevo el programa", vbOKOnly + vbCritical End 'finalizamos el programa. Ha ocurrido un error en el módem

Else Form01.Timer_Mscomm.Enabled = False 'dehabilita el timer timeout_cont = 0 'reinician contadores timeout = False 'condicion falsa End If

End Sub ‘************************************************************************

Page 144: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

145

'ACCIÓN QUE REALIZA EL CONTROL DE LOS CÓDIGOS DE ACCESO. 'INTERROGA A LA TARJETA SIM PARA CONOCER SU ESTADO: READY, SIM PIN, SIMPUK Public Sub PIN_CONTROL() str = "AT+CPIN?" + vbCr 'se prepara la trama SEND_COMMAND 'se envia comando INI_TIMER_OUT 'se inicia el timer Do 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización strBUFFER) 'TIPO C. Comparación 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 CÓDIGO PIN

MsgBox "ES NECESARIO QUE INTRODUZCA EL CÓDIGO PIN", vbOKOnly + vbInformation

strBUFFER = "" 'se vacia contenido (lectura buffer) Form02.Visible = True 'se muestra form introduccion código PIN aux = 1 'salimos del bucle Case str + vbCrLf + "+CPIN: " + "SIM PUK" + vbCrLf + vbCrLf + "OK" + vbCrLf 'tratamiento de la respuesta:NECESARIO CÓDIGO PUK

MsgBox "ES NECESARIO QUE INTRODUZCA EL CÓDIGO PUK", vbOKOnly + vbInformation

strBUFFER = "" 'se vacia contenido (lectura buffer) Form03.Visible = True 'se muestra form. introduccion código 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 ‘************************************************************************

Page 145: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

146

'LECTURA DEL REGISTRO DEL TELÉFONO O DE LA TARJETA SIM. 'DEPENDIENDO DE LA CONFIGURACIÓN 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 búsquedas en la agenda(2) Public Sub PHONEBOOK_READ(i As Integer) SEND_COMMAND 'envío del comando correspondiente. (AT+CPBF o AT+CPBR) INI_TIMER_OUT 'se inicia el timer Do 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización strBUFFER) straux = strBUFFER straux = Right(straux, 8) 'leemos los 8 últimos caracteres del buffer 'Respuesta tipo c. Coincidencia respuesta con la esperada? 'comun para búsqueda por nombre,posición 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 envío MsgBox "ERROR EN LA TRAMA DE BÚSQUEDA", 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 "PRESENTACIÓN RESULTADOS", vbOKOnly + vbInformation

Select Case i 'discriminamos si agenda o llamadas, presentacion diferente Case 1 Form05.text_ShowCalls.Text = SHOW_RESULTS 'función que 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 'condiciones de salida(respuesta completa o timeout) Loop Until (aux = 1 Or timeout) strBUFFER = "" 'se vacia contenido (lectura buffer) TIME_OUT 'se produjo timeout? tratamiento del mismo End Sub ‘************************************************************************

Page 146: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

147

'VISUALIZA INFORMACIÓN DEL MÓDEM Y DE LA TARGETA SIM 'SE REALIZA BUCLE FOR CON TAL DE MOSTRAR TODA LA INFORMACIÓN A LA VEZ Public Sub ABOUT_MODEM() Dim i As Integer i = 1 str = "AT+CGMI" + vbCr 'trama MANUFACTURED For i = 1 To 5 'Envio de todas lsa tramas de informacion consecutivas SEND_COMMAND 'envío de comandos INI_TIMER_OUT 'se inicia el timer Do 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización 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 INFORMACIÓN ACERCA DEL MÓDEM", vbOKOnly + vbCritical aux = 1 strBUFFER = ""

End If 'condiciones de salida(respuesta completa o timeout) Loop Until (aux = 1 Or timeout) TIME_OUT 'se produjo timeout? tratamiento del mismo Next i 'siguiente trama End Sub ‘************************************************************************

Page 147: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

148

'FINALIZA UNA LLAMADA O INTERRUMPE UN INTENTO DE ESTABLECER UNA COMUNICACIÓN Public Sub HANG_UP() strBUFFER = "" str = "ATH" + vbCr 'se prepara la trama SEND_COMMAND 'envío del comando INI_TIMER_OUT 'se inicia el timer Do 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización strBUFFER) 'Respuesta TIPO C. Comparación completa de la respuesta Select Case strBUFFER Case str + vbCrLf + "OK" + vbCrLf 'tratamiento de la respuesta: estamos en una conexión 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 conexión

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 conexión

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 petición de pasar a modo comandos

online_data = False strBUFFER = ""

'se prepara la trama +++AT, siendo + el carácter de escape

str = Chr(config.escape_sequence) + Chr(config.escape_sequence) + Chr(config.escape_sequence) + "AT" + vbCr

SEND_COMMAND 'se envia comando INI_TIMER_OUT 'se inicia el timer

Page 148: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

149

Do 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización strBUFFER) 'Respuesta TIPO C. Comparación 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 envío 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 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización 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 CONFIGURACIÓN DE ALMACENAMIENTO DE MENSAJES SE HA MODIFICADO SATISFACTORIAMENTE", vbOKOnly + vbInformation

strBUFFER = "" aux = 1 'Resppuesta TIPO C. Comparación completa de la respuesta ElseIf strBUFFER = str + vbCrLf + "ERROR" + vbCrLf Then 'tratamiento de la respuesta: error en el envío

MsgBox "ERROR AL MODIFICAR LA CONFIGURACIÓN 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 ‘************************************************************************

Page 149: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

150

'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 'se prepara la trama SEND_COMMAND 'se envia comando INI_TIMER_OUT 'se inicia el timer Do 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización strBUFFER) straux = Right(straux, 6) 'leemos los 6 últimos caracteres del buffer 'Respuesta tipo b. Consultamos los 6 últimos caracteres ya que 'anteriormente hay diversas lineas con distintos mensajes If straux = vbCrLf + "OK" + vbCrLf Then 'tratamiento de la respuesta: en la posición 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. Comparación 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, posición vacía

MsgBox "EN LA POSICIÓN " + index2 + " NO HAY MENSAJE", vbOKOnly + vbExclamation

strBUFFER = "" 'se avanza o retrocede (segun indique front)una posiciónhasta encontrar 'una posición que contenga mensaje If front Then index = index + 1 'siguiente Else index = index - 1 'anterior End If 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 ‘************************************************************************

Page 150: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

151

'ENVIA O GUARDA UN MENSAJE. PRIMERA PARTE COMUN. SEGUNDA PARTE 'DEPENDIENDO DEL PARAMETRO i EJECUTA UNA ACCIÓN U OTRA Public Sub SEND_OR_WRITE_MESSAGE_TO_MEMORY(Text_SMS As String, i As Integer) SEND_COMMAND 'envío 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 (actualización 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 'envío de la trama INI_TIMER_OUT 'se inicia el timer Do 'bucle de espera a la respuesta completa o timeout DoEvents 'se permiten eventos (actualización 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 ENVÍO 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 ‘************************************************************************

Page 151: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

152

'NOTIFICA LA LLEGADA DE UN NUEVO MENSAJE SMS 'SE REALIZA POLLING CADA VEZ QUE RECIBIMOS UN CARÁCTER EN EL BUFFER 'SI CONCUERDA CON LA CADENA DE NOTIFICACIÓN, 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 notificación index = 1 End If End Sub ‘************************************************************************ 'FUNCION QUE DETERMINA SI SE ESTA RECIBIENDO UNA LLAMADA ENTRANTE 'CADA VEZ QUE SE RECIBE UN CARÁCTER/ES AL PUERTO SERIE, SE COMPRUEBA. 'SE REALIZA POLLING YA QUE NO ES POSIBLE DETECTAR LA SEÑAL 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 notificación 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 ‘************************************************************************

Page 152: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

153

10.2.25 MODULE TREAT_RESPONSES (Treat_Responses.bas) 'MÓDULO de declaración de tratamiento a las respuestas

‘************************************************************************ 'EN ESTE MÓDULO SE REFLEJAN EL TRATAMIENTO A LAS DIFERENTES RESPUESTAS 'PARA CADA UNA DE LAS TRAMAS IMPLEMENTADAS QUE SIGUEN EL FORMATO DE 'RESPUESTA "AT..." + PARÁMETROS + CR + CRLF + MENSAJE + CRLF ‘************************************************************************ 'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CMEE 'se comprueba que la trama llego correctamente y el nuevo parámetro ha quedado configurado Public Sub MOBILE_EQUIPMENT_ERROR() Select Case RESULT_CODE Case "OK"

MsgBox "LA CONFIGURACIÓN DE ERRORES SE HA ESTABLECIDO CORRECTAMENTE", vbOKOnly + vbInformation

Form21.Text_StateSending.Text = "" Case "ERROR"

MsgBox "ERROR EN LA TRAMA DE CONFIGURACIÓN 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 CÓDIGO PIN INTRODUCIDO ES CORRECTO", vbOKOnly + vbInformation

Form04.Visible = True Case "+CME ERROR: Incorrect password"

MsgBox "EL CÓDIGO PIN INTRODUCIDO ES INCORRECTO", vbOKOnly + vbExclamation

Form02.TEXT_PIN = "" Form02.TEXT_PIN.SetFocus Case "+CME ERROR: SIM PUK required" MsgBox "EL CÓDIGO PIN INTRODUCIDO ES INCORRECTO." _

+ vbCrLf + " INTRODUZCA EL CÓDIGO 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

Page 153: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

154

Case "OK" MsgBox "EL CÓDIGO PUK INTRODUCIDO ES CORRECTO", vbOKOnly + vbInformation

Form04.Visible = True Case "+CME ERROR: Incorrect password"

MsgBox "EL CÓDIGO PUK INTRODUCIDO ES INCORRECTO", vbOKOnly + vbExclamation

Form03.TEXT_PUK = "" Form03.TEXT_PIN = "" Case "BLOCKED" MsgBox "EL CÓDIGO 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 parámetro 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 parámetro 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 parámetro ha quedado configurado

Page 154: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

155

Public Sub PHONEBOOK_STORAGE() Select Case RESULT_CODE Case "OK"

MsgBox "SELECCIÓN DE MEMORIA CONFIGURADA CORRECTAMENTE", vbOKOnly + vbInformation

Case "ERROR" MsgBox "ERROR EN LA SELECCIÓN 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 + _" INTÉNTELO 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 parámetro ha quedado configurado Public Sub MSGTXT_TIME_MAX() Select Case RESULT_CODE Case "OK"

MsgBox "TIEMPO MÁXIMO DE PERMANENCIA CONFIGURADO CORRECTAMENTE", vbOKOnly + vbInformation

Case "ERROR"

MsgBox "ERROR AL CONFIGURAR EL TIEMPO MÁXIMO 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 = ""

Page 155: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

156

Case "ERROR" MsgBox "ERROR AL INTENTAR BORRAR EL SMS. INTÉNTELO 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. INTÉNTELO 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 parámetro 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 parámetro 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 '************************************************************************

Page 156: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

157

'TRAMA DE TRATAMIENTO DE LA RESPUESTA AT+CBST 'se comprueba que la trama llego correctamente y el nuevo parámetro ha quedado configurado Public Sub SELECT_BEARER_SERVICE() Select Case RESULT_CODE Case "OK"

MsgBox "VELOCIDAD DE CONEXIÓN CONFIGURADA CORRECTAMENTE", vbOKOnly + vbInformation

Case "ERROR"

MsgBox "ERROR AL CONFIGURAR LA VELOCIDAD DE CONEXIÓN", vbOKOnly + vbCritical

End Select strBUFFER = "" End Sub '************************************************************************ 'TRAMA DE TRATAMIENTO DE LA RESPUESTA ATS2 'se comprueba que la trama llego correctamente y el nuevo parámetro 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 parámetro ha quedado configurado Public Sub NEWMSG_INDICATION() Select Case RESULT_CODE

Page 157: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

158

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 parámetro 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 SELECCIÓN 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 "CONEXIÓN 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 '************************************************************************

Page 158: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

159

'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 "CONEXIÓN 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. INTÉNTELO 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 '************************************************************************

Page 159: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

160

'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 'declaración de variables Dim Str3 As String Dim straux1 As String Dim straux2 As String Str2 = vbCr + vbCrLf 'tramas de comparación Str3 = vbCrLf 'proceso de discriminación 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 '************************************************************************

Page 160: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

161

10.2.26 MODULE DISABLEX.(dbx.bas) 'MÓDULO DE DESHABILITACIÓN DEL BOTÓN 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

Page 161: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

162

10.2.27 MODULE ShellNotifyIcon.(sNi.bas) 'MÓDULO DE GESTION DEL ICONO DE NOTIFICACIÓN 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 de constantes para las funciones de la API Public Const NIM_ADD = &H0 ' añadir un icono Public Const NIM_MODIFY = &H1 ' Editar/Cambiar un icono Public Const NIM_DELETE = &H2 ' borrar icono de la barra de tareas 'Declaracion de constantes para los eventos del raton Public Const WM_MOUSEMOVE = &H200 'Flags que indican los campos de NOTIFYICONDATA. Public Const NIF_MESSAGE = &H1 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4 'Constantes para los click en el icono Public Const WM_LBUTTONDBLCLK = &H203 'doble click con el botón izquierdo 'Declararacion de la función de la API Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _ (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

Page 162: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Código Fuente

163

10.2.28 MODULE SOUNDS.(Sounds.bas) 'MÓDULO PARA LA REPRODUCCION DE UN SONIDO

Declare Function sndPlaySound Lib "winmm.dll" Alias _ "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal _ uFlags As Long) As Long

Page 163: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Anexo

164

11. ANEXOS

Page 164: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Anexo

165

ANEXOS 11.1 Manual GM29 El “GM29 Integrator’s Manual” se adjunta en el CD-ROM anexo. Este manual se divide en 3 sub-apartados en los que se trata:

• Descripción general del módem • Integración del módem • Comandos AT

11.2 SEMINARIO Matrix Electrónica

Se anexa la información relativa al Seminario. Incluye documentación técnica, presentación, sesión practica, entre otros datos de interés (disponible en el CD-ROM adjunto).

La asistencia a dicho Seminario en Abril de 2003 nos dotó de una visión general del producto GM29, así como de su procedimiento de actuación, 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 aplicación (lenguaje de programación Visual Basic). Disponibles también en el CD-ROM adjunto

Page 165: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Bibliografía

166

12. BIBLIOGRAFÍA

Page 166: Comunicación Punto a Punto Vía Módem GSM - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/541pub.pdf · SONY-ERICSSON, que han estado suministrados por el ... Denotar que

Comunicación Punto a Punto Vía Módem GSM Bibliografía

167

BIBLIOGRAFÍA [1] Sony Ericsson.- GM29 Integrator’s Manual 200 [2] Seminario MATRIX: “Seminario 2003 GSM-GPRS M2M SonyEricsson-Telefonica Movistar“ ABRIL 2003 [3] C.Tavernier. - Módems. Técnica y Realización. Ed. Paraninfo 1991 [4] Enrique Maldonado Rollizo. - Comunicaciones con el PC. Módems Ed. Anaya Multimedia 1994 [5] Jorge Vasconcelos Santillan. - Manual de construcción de programas México 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.- Programación 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 Capítulo 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