C/Visual C - Libreria manejo de Modem para usar DTMF

 
Vista:

Libreria manejo de Modem para usar DTMF

Publicado por Fernando Cañas (2 intervenciones) el 25/10/2001 23:10:44
Hola buenas, quiero hacerme un programa en C++, que me haga de contestador automatico y de centralita telefónica.
Se que existen estos programas, pero quiero hacermelo yo mismo.
Lo que quiero es que cuando haya una llamada telefónica, el modem, despues de 4 ó 5 tonos coja la llamada y diga un mensaje (.wav), una vez hecho esto plantear una serie de opciones y segun la opción elegida, por el teclado del telefono, mediante tonos (DTMF) realizar una o otra operación.

¿es esto posible?

Muchas gracias y saludos a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Desarrollo de un contestador automático y centralita telefónica en C++

Publicado por Alejandro (913 intervenciones) el 17/10/2024 19:20:26
¡Hola, Fernando! Sí, es posible crear un programa en C++ que funcione como un contestador automático y centralita telefónica utilizando un módem. Aquí te doy una guía general sobre cómo puedes abordar este proyecto.

Requisitos



1. Módem compatible: Asegúrate de que tu módem sea compatible con AT commands (comandos AT).
2. Librerías de audio: Necesitarás una librería para reproducir archivos de audio (.wav).
3. Librerías para DTMF: Para detectar tonos DTMF, puedes usar librerías de procesamiento de audio.

Pasos generales



1. Configuración del módem



Primero, debes configurar el módem para que responda a las llamadas. Puedes usar comandos AT para esto. Aquí hay un ejemplo básico de cómo abrir una conexión con el módem y configurarlo:

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <windows.h>
 
void configurarModem(HANDLE hModem) {
    // Enviar comandos AT para configurar el módem
    DWORD bytesWritten;
    const char* comandos = "AT+FCLASS=0\r"; // Configurar el módem para voz
    WriteFile(hModem, comandos, strlen(comandos), &bytesWritten, NULL);
    Sleep(1000); // Esperar un segundo
    // Otros comandos de configuración...
}

2. Detectar llamadas



Puedes usar el comando `ATA` para responder a las llamadas. Debes estar escuchando la línea del módem para detectar el tono de llamada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void escucharLlamadas(HANDLE hModem) {
    char buffer[256];
    DWORD bytesRead;
 
    while (true) {
        // Leer datos del módem
        ReadFile(hModem, buffer, sizeof(buffer) - 1, &bytesRead, NULL);
        buffer[bytesRead] = '\0';
 
        if (strstr(buffer, "RING")) {
            std::cout << "Llamada entrante detectada." << std::endl;
            // Responder a la llamada
            WriteFile(hModem, "ATA\r", 4, &bytesWritten, NULL);
            // Reproducir mensaje
            reproducirMensaje("mensaje.wav");
            // Plantear opciones...
        }
    }
}

3. Reproducir mensajes de audio



Para reproducir un archivo .wav, puedes usar la API de Windows o una librería como `SDL` u `OpenAL`. Aquí hay un ejemplo simple usando la API de Windows:

1
2
3
4
5
#include <windows.h>
 
void reproducirMensaje(const char* archivo) {
    PlaySound(archivo, NULL, SND_FILENAME | SND_ASYNC);
}

4. Detectar DTMF



Para detectar los tonos DTMF, necesitarás un procesamiento de audio. Esto puede ser complicado, pero puedes usar librerías como `libdmtf` o `Asterisk` para manejar la detección de DTMF.

5. Implementar opciones



Una vez que hayas detectado la opción elegida por el usuario, puedes implementar la lógica correspondiente. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
void manejarOpcion(int opcion) {
    switch (opcion) {
        case 1:
            std::cout << "Opción 1 seleccionada." << std::endl;
            // Realizar acción para opción 1
            break;
        case 2:
            std::cout << "Opción 2 seleccionada." << std::endl;
            // Realizar acción para opción 2
            break;
        // Otras opciones...
    }
}

Consideraciones finales



- Pruebas: Asegúrate de probar tu programa en un entorno controlado antes de usarlo en producción.
- Manejo de errores: Implementa un manejo de errores adecuado para las operaciones de lectura/escritura.
- Documentación: Consulta la documentación de tu módem para conocer los comandos AT específicos que puedes usar.

Conclusión



Crear un contestador automático y centralita telefónica es un proyecto ambicioso, pero definitivamente es posible. Asegúrate de tener en cuenta todos los aspectos técnicos y de realizar pruebas exhaustivas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar