Envio de SMS mediante c# y comandos AT

Para enviar mensaje SMS, hace falta un módem o teléfono que soporte envió de sms, conexión con el ordenador, ya sea mediante bluetooth, usb o puerto serie. Los módem gsm soportan comandos AT, eston permiten configurar y obtener diversa información del módem gsm, como puede ser marca, modelo, nivel de cobertura, proveedor de la conexión, realizar llamadas, etc.

Para mas información sobre los comandos at del puede ver la pagina de la Wikipedia ” Conjunto de comandos AT”.
Para poder comunicarnos desde nuestro programa en C# con el módem o teléfono necesitamos el componente “SerialPort”. Esto componente nos permite realizar comunicación mediante puerto serie.
Creación e inicialización del componente SerialPort
sModem = new SerialPort("COM1",9600, Parity.None, 8, StopBits.Two);
Donde:
  • Com1: es el puerto donde esta conectado el módem o teléfono gsm
  • 9600: Velocidad a la que nos conectaremos al aparato.
  • Parity.None: Paridad ninguna.
  • 8: Tamaño del bit de datos.
  • StopBits.Two: Bits de parada, en este caso 2.

Estos parámetros hay cambiarlos por los que específicos del módem al que vamos ha conectarnos.

Ejemplo de función:

// Función para mandar sms
public Boolean EnviarMensaje(string NumTel, string Mensaje)
{
    try
    {
        // Comando de comprobación                
        sModem.Write("AT\r");
        // Pasamo a modo SMS
        sModem.Write("AT+CMGF=1\r");
        // Enviamos el numero al que queremos enviar el SMS
        sModem.Write("AT+CMGS=\"" + NumTel.Trim() + "\"\r");
        // El texto del mensaje, se termina con Control+Z
        sModem.Write(Mensaje.Trim() + '\x001a');
        // Si todo sale bien devuelve true
        return true;
    }
    catch (Exception Error)
    {
        // si hay algún error devuelve false
        return false;
    }
}

7 comentarios sobre “Envio de SMS mediante c# y comandos AT”

    1. Si no lo tienes en las especificaciones, con la técnica del prueba y error, en este caso con modificar los parámetros de la paridad y del de bit de para seria suficiente, la velocidad suele ser esa por defecto.

    1. Tienes que comprobar que windows te lo reconoce, dependiendo de la versión cambia la manera como funciona. Si tienes Windows 10 posiblemente tengas problemas de permisos. Prueba con el hiperterminal enviado los comandos AT al aparato. Cuando lo tengas funcionando con el hiperterminal, prueba con el C#

    1. En Windows es fácil, se te tiene que haber creado un puerto en panel de control -> sistemas, si no se te ha creado tienes mal conectado el dispositivo. Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.