Utilizando el control de comunicaciones MSComm
El Microsoft Comm sirve para establecer una comunicación utilizando el módem. Este es muy interesante ya que podemos hacer llamadas con él y, además, crear una especie de HyperTerminal para mandar y recibir archivos o chat de PC a PC.
Antes que nada hay que agregar el componente MSComm e ir a las propiedades del mismo y en COMMPORT colocar el puerto de nuestro módem (Com1, Com2...) luego en Settings (vas a ver que hay 4 datos separados por comas) en el primer dato pones la velocidad de tu módem, los demás déjalos como estén.
Comandos básicos del módem:
ATDT Sirve para hacer una llamada telefónica. Se utiliza de la siguiente forma: ATDT4567-8901 en este caso el módem tomará la línea, esperará al tono de marcado y llamará al teléfono 4567-8901. Cabe aclarar que se puede usar o no el guión (-) separador de característica y número de abonado, el mismo es omitido por el módem.
ATH Corta la comunicación.
ATS0=x Especifica la cantidad de veces que la
campanilla (timbre) del teléfono debe llamar antes que el módem atienda la
llamada. Si x esta en cero el módem no atenderá la llamada.
Para desarrollar un sistema que utilice el módem hay que seguir los siguientes
pasos:
1ro. Abrir el puerto de comunicaciones. Para poder usar el módem habrá primero que abrir el puerto de comunicaciones en el cual está conectado. Para ello escribir el siguiente código:
If Not MSComm1.PortOpen Then
MSCOmm1.PortOpen = True
If Err Then Exit Sub
End If
De encontrarse el puerto abierto con anterioridad o de producirse un error inesperado el programa cancelará el intento de uso del módem.
Una vez abierto el puerto de comunicaciones esta todo listo para indicarle a módem que tome la línea telefónica y llame al número deseado. Es lo que hace el siguiente código:
MSComm1.Output = "ATDT" & numero & vbCrLf
Donde la variable numero es del tipo string (cadena) y contiene el número telefónico completo (incluyendo cualquier prefijo que se requiera para, por ejemplo, conseguir línea externa en una centralita). Como comentario vbCrLf equivale a enviar la tecla ENTER.
En este momento el módem ya se encuentra trabajando para establecer la comunicación.
Ahora necesitamos cortar la llamada, para lo cual usamos el comando ATH:
MSComm1.Output = "ATH" & vbCrLf
De esta forma la línea telefónica se encuentra desocupada nuevamente y el puerto de comunicaciones donde se conecta el módem listo para ser cerrado, lo que se logra con el siguiente código:
If MSComm1.PortOpen Then
MSCOmm1.PortOpen = False
If Err Then Exit Sub
End If
Esto es todo para realizar una llamada y cortar. Si se desea establecer cuantos rings deben sonar hasta que el módem tome la llamada deberá usarse el siguiente ejemplo:
If Not MSComm1.PortOpen Then
MSCOmm1.PortOpen = True
If Err Then Exit Sub
End If
MSComm1.Output = "ATS0=x" & vbCrLf
MSCOmm1.PortOpen = False
Donde x representa al número de veces que el timbre sonará antes que se atienda la llamada y, de colocar cero, el módem jamás atenderá.
A modo de referencia la tabla de abajo explica algunos de los comandos mas importantes de la normativa AT:
| Comando | Descripción |
| A | Contesta una llamada entrante |
| A/ | Repite el último comando (No lleva AT al comienzo ni Enter al final) |
| D | Marca un número que lo acompaña y realiza la conexión (handshake) según la configuración del equipo que originó la llamada |
| P | Marca con pulsos |
| T | Marca con tonos |
| W | Espera un segundo tono de marcación |
| , | Se detiene por el tiempo especificado en el registro S8 |
| ; | Permanecer en el modo de comandos después de marcar |
| ! | Genera el toque de horquilla (tecla FLASH) |
| E | No mostrar el eco de los comandos |
| E1 | Mostrar el eco de los comandos |
| H | Colgar (libera la línea telefónica) |
| H1 | Descolgar (Toma la línea telefónica) |
| I | Presenta información acerca del hardware del módem. Probar I1, I2, etc... |
| L | Silencia el parlante del módem |
| L1 | Volumen bajo del parlante del módem |
| L2 | Volumen medio del parlante del módem |
| L3 | Volumen alto del parlante del módem |
| M | Desactiva el uso del parlante del módem |
| M1 | Parlante encendido hasta que se conecte, luego se apaga. |
| M2 | Parlante encendido en todo momento, incluso luego de conectar. |
| O | Devuelve la línea |
| O1 | Devuelve la línea después de una secuencia de pulsos ecualizadores |
| Q | Muestra los códigos resultantes |
| Q1 | No muestra los códigos resultantes |
| Sn? | Devuelve el contenido del registro-S número n |
| Sn=r | Almacena el valor de r en el registro-S número n |
| V | Códigos resultantes en modo numérico |
| V1 | Códigos resultantes en modo verbal (con textos) |
| Xn | Opciones de códigos de resultados |
| Z | Reinicia el módem, cargando los parámetros almacenados en profile 0 |
| &CO | Señal de detención de portadora (CD) siempre encendida |
| &C1 | Indica la detención de una portadora remota |
| &DO | Señal de terminal de datos lista (DTR) ignorada |
| &D1 | Si la señal conmuta de encendido a apagado el módem vuelve a modo de comandos |
| &D2 | Si la señal conmuta de encendido a apagado el módem vuelve al modo de comandos y cuelga |
| &F | Carga la configuración de fábrica en el profile |
| &P | Ciclo útil de la marcación por pulsos para EEUU y Canadá 39% cerrado / 61% encendido |
| &P1 | Ciclo útil de la marcación por pulsos para el reino unido y Hong Kong 39% cerrado / 67% encendido |
| &T | Especificación de auto pruebas en algunos modelos de módem |
| &W | Escribir la configuración actual a la memoria no volátil del módem |
| &Zn=x | Escribir número de teléfono x en la posición n de la memoria no volátil. |
| &Zn? | Mostrar el número n almacenado en la memoria no volátil |
| SO | Número de timbres antes de contestar. El módem no contesta si SO=0 |
| S1 | Sí SO=0, este registro cuenta los timbres recibidos |
| S2 | Define el caracter escape que es + por defecto |
| S3 | Define el caracter para el retorno de carro |
| S4 | Define el caracter para la alimentación de la línea |
| S5 | Define el caracter para el retroceso |
| S6 | Tiempo en seg. que el módem espera para marcar |
| S7 | Tiempo en seg. que el módem espera por una portadora |
| S8 | Duración de una pausa en el marcado |
| S9 | Tiempo de tensión de portadora |
| S10 | Tiempo entre la pérdida de la portadora y la acción de colgar |
| S11 | Duración y espacio entre tonos cuando se utiliza la marcación por tonos |
| S12 | Tiempo de guarda cuando se oprime el comando ESCAPE |
Estos comandos pueden o no estar implementados en función a cada módem en particular. Algunos datos no son estándar por lo que su uso puede resultar o no.