Una aplicación útil a la hora de generar desarrollos es el envió de mensajes GSM por medio de una aplicación, Este tipo de programas son útiles si quisiéramos monitorear algún proceso, ya sea la caída de un servidor de Internet, la ejecución no autorizada de alguna rutina, el acceso incorrecto a una sesión, etc. Y sobre todo que esta aplicación nos informara por medio de un mensaje de texto a nuestro celular. Pues bien el único requisito que necesitamos es un módem que nos de acceso a la red GSM ya sea un celular conectado por USB a nuestra computadora o una banda ancha móvil, En mi caso para este ejemplo utilizo una banda ancha por medio de un módem Huawei Modelo E226.
Bueno pasemos a lo realmente importante el programa para envío de mensajes. Este programa utiliza comandos AT, que son instrucciones codificadas que conforman un lenguaje de comunicación entre el hombre y una terminal módem. Estos comando reciben su nombre por la abreviatura attention. Para mas información respecto a estos comandos les dejo el siguiente archivo.
Primero que nada creamos nuestro proyecto y codificamos la clase GSM. Que nos mas que una apertura de puesto serie y la ejecución de un comando AT.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;
namespace MOVIL
{
class GSM
{
SerialPort serialPort;
public GSM(string comPort)
{
this.serialPort = new SerialPort();
this.serialPort.PortName = comPort;
this.serialPort.BaudRate = 9600;
this.serialPort.Parity = Parity.None;
this.serialPort.DataBits = 8;
this.serialPort.StopBits = StopBits.One;
this.serialPort.Handshake = Handshake.RequestToSend;
this.serialPort.DtrEnable = true;
this.serialPort.RtsEnable = true;
this.serialPort.NewLine = System.Environment.NewLine;
}
public bool sendSms(string cellNo, string sms)
{
string messages = null;
messages = sms;
if (this.serialPort.IsOpen == true)
{
try
{
this.serialPort.WriteLine("AT" + (char)(13));
Thread.Sleep(4);
this.serialPort.WriteLine("AT+CMGF=1" + (char)(13));
Thread.Sleep(5);
this.serialPort.WriteLine("AT+CMGS="" + cellNo + """
;
Thread.Sleep(10);
this.serialPort.WriteLine(">" + messages + (char)(26));
}
catch (Exception ex)
{
//MessageBox.Show(ex.Source);
}
return true;
}
else
return false;
}
public void Opens()
{
if (this.serialPort.IsOpen == false)
{
this.serialPort.Open();
}
}
public void Closes()
{
if (this.serialPort.IsOpen == true)
{
this.serialPort.Close();
}
}
}
}
Después construimos nuestra interfaz.
Y agregamos el siguiente código a cada parte correspondiente
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace MOVIL
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnEnviar_Click(object sender, EventArgs e)
{
GSM sm = new GSM(cmbPuertos.Text);
sm.Opens();
sm.sendSms(txtTelefono.Text, txtMensaje.Text);
sm.Closes();
MessageBox.Show("Mensaje Enviado!!!"
;
}
private void Form1_Load(object sender, EventArgs e)
{
string[] puertos = SerialPort.GetPortNames();
foreach (string puerto in puertos)
{
cmbPuertos.Items.Add(puerto);
}
}
}
}
Si todo ha salido bien, nuestro dispositivo enviara el mensaje al teléfono destino, solo hay que tomar algo en cuenta, que nuestro módem o teléfono tenga saldo de la compañía móvil con que este la linea, ya que sin este no podrá enviar mensajes.
Saludos Taringeros no Olviden Comentar
Bueno pasemos a lo realmente importante el programa para envío de mensajes. Este programa utiliza comandos AT, que son instrucciones codificadas que conforman un lenguaje de comunicación entre el hombre y una terminal módem. Estos comando reciben su nombre por la abreviatura attention. Para mas información respecto a estos comandos les dejo el siguiente archivo.
Primero que nada creamos nuestro proyecto y codificamos la clase GSM. Que nos mas que una apertura de puesto serie y la ejecución de un comando AT.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;
namespace MOVIL
{
class GSM
{
SerialPort serialPort;
public GSM(string comPort)
{
this.serialPort = new SerialPort();
this.serialPort.PortName = comPort;
this.serialPort.BaudRate = 9600;
this.serialPort.Parity = Parity.None;
this.serialPort.DataBits = 8;
this.serialPort.StopBits = StopBits.One;
this.serialPort.Handshake = Handshake.RequestToSend;
this.serialPort.DtrEnable = true;
this.serialPort.RtsEnable = true;
this.serialPort.NewLine = System.Environment.NewLine;
}
public bool sendSms(string cellNo, string sms)
{
string messages = null;
messages = sms;
if (this.serialPort.IsOpen == true)
{
try
{
this.serialPort.WriteLine("AT" + (char)(13));
Thread.Sleep(4);
this.serialPort.WriteLine("AT+CMGF=1" + (char)(13));
Thread.Sleep(5);
this.serialPort.WriteLine("AT+CMGS="" + cellNo + """

;
Thread.Sleep(10);
this.serialPort.WriteLine(">" + messages + (char)(26));
}
catch (Exception ex)
{
//MessageBox.Show(ex.Source);
}
return true;
}
else
return false;
}
public void Opens()
{
if (this.serialPort.IsOpen == false)
{
this.serialPort.Open();
}
}
public void Closes()
{
if (this.serialPort.IsOpen == true)
{
this.serialPort.Close();
}
}
}
}
Después construimos nuestra interfaz.
Y agregamos el siguiente código a cada parte correspondiente
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace MOVIL
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnEnviar_Click(object sender, EventArgs e)
{
GSM sm = new GSM(cmbPuertos.Text);
sm.Opens();
sm.sendSms(txtTelefono.Text, txtMensaje.Text);
sm.Closes();
MessageBox.Show("Mensaje Enviado!!!"

;
}
private void Form1_Load(object sender, EventArgs e)
{
string[] puertos = SerialPort.GetPortNames();
foreach (string puerto in puertos)
{
cmbPuertos.Items.Add(puerto);
}
}
}
}
Si todo ha salido bien, nuestro dispositivo enviara el mensaje al teléfono destino, solo hay que tomar algo en cuenta, que nuestro módem o teléfono tenga saldo de la compañía móvil con que este la linea, ya que sin este no podrá enviar mensajes.
Saludos Taringeros no Olviden Comentar
