You are on page 1of 6

Enviar SMS con C# desde modem GPRS/3G con librerias GuruxSMS

Posted in HelpDesk, Internet, Networking, Scripting, Sistemas, soporte, Tecnologa, Utilidades on Nov 24th,
2012

Nuevo Post: Enviar SMS con C# desde modem GPRS/3G con
librerias GuruxSMS http://t.co/yqzhzata
24/11/2012 17:59 via MobileLitteBirdReply Retweet Favorite

@javcasta
Javier Castan

Referencias:
http://sourceforge.net/projects/gxsms/
http://sourceforge.net/projects/gxsms/files/GuruxSMS_5.1.0.84/GuruxSMS-
x86_5.1.0.84.msi/download

En la forja de codigo fuente ( http://sourceforge.net/ ).
Me encontr con un proyecto bajo licencia GPL (GNU General Public License).
llamado GxSMS (GuruxSMS), donde se utilizan unas dll compiladas para .Net 2.0
para el envo y recepcin de SMS va modem GPRS.
Trasteando un poco con su codigo observ que para implementar con C# el envio de SMS via
modem GPRS/3G,
solo hacen falta aadir como referencia las librerias para el proyecto con C#:
Gurux.SMS.dll y Gurux.Common.dll
Pero para que funcione si que hacen falta las otras librerias que instala el msi (GuruxSMS-
x86_5.1.0.84.msi) del proyecto,que se alojan en:
%CommonProgramFiles%\Gurux\GXCom\
Una vez instalado GuruxSMS-x86_5.1.0.84.msi,tras esto, implement un proyecto o solucin de
una aplicacin windows (con formulario) en SharpDevelop 4.2, configurado para C# 4.0 y que
compilase para.Net 2.0 e import (Proyecto > aadir referencias > .Net Assembly ) estas
dos librerias (Gurux.SMS.dll y Gurux.Common.dll).
Tras esto con el siguiente cdigo pude enviar SMS desde mi modem: HUAWEI Mobile
Connect 3G Modem
En el administrador de dispositivos de windows, si clikas en la rama modems y vas a
propiedades del modem,
sabrs el puerto de comunicaciones (COMn) que usa tu modem, en mi caso es el COM7.
Si desde consola (cmd) ejecuto:
C:\>for /L %i in (1, 1, 40) do (mode com%i /status | findstr /V Nombre de
dispositivo incorrecto)
Ver los puertos COM y su estado.
C:\> MODE com7 /status
Estado para dispositivo COM7:

Baudios: 460800
Paridad: None
Bits de datos: 8
Bits de paro: 1
Tiempo de espera: ON
XON / XOFF: OFF
Protocolo CTS: OFF
Protocolo DSR: OFF
Sensibilidad de DSR: OFF
Circuito DTR: ON
Circuito RTS: ON
A no ser que lo tenga conectado a Inet o est siendo usado por otra aplicacin. En cuyo caso:
C:\>MODE com7 /status
El dispositivo COM7 no est disponible en este momento.

Cuando el puerto usado por mi modem (com7) estaba disponible la aplicacin en C# enviaba
perfectamente los SMS:
Codigo relevante:
En el MainFormDesigner.cs aadimos el objeto gxsms1 de la clase Gurux.SMS.GXSMS
?
1
2
3
4
5
6
//MainFormDesigner.cs
//en el metodo InitializaeComponent()
private void InitializeComponent()
{
//...
this.gxsms1 = new Gurux.SMS.GXSMS();
this.SuspendLayout();
//...
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//
// gxsms1
//
this.gxsms1.CallIdentificationEnabled = false;
this.gxsms1.DeleteMessagesOnConnect = false;
this.gxsms1.InitializeCommands = null;
this.gxsms1.Memory = Gurux.SMS.MemoryType.None;
this.gxsms1.PINCode = "1111"; //el pin de tu modem, si no tiene pin: PINCode = "";
this.gxsms1.PINCodeEnabled = false;
this.gxsms1.Port = "COM7"; //Puerto
this.gxsms1.ReceiverNumber = "666123456"; //numero que recibir el SMS, se puede cambiar en tiempo
de ejecucion
this.gxsms1.VisibleControls = -1;
this.gxsms1.OnMediaStateChange += new
Gurux.SMS.MediaStateChangeEventHandler(this.gxsms1_OnMediaStateChange);
this.gxsms1.OnError += new Gurux.SMS.ErrorEventHandler(this.gxsms1_OnError);
//...
}
//...
private Gurux.SMS.GXSMS gxsms1;
//...
Y el cdigo del MainForm.cs
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
* Created by SharpDevelop. 4.2 - C# 4.0 => compiled in .Net 2.0
* User: JavCasta - by Javier Castan - 2.012 - http://javcasta.com/
* Date: 24/11/2012
* Time: 9:07
* GxSMS & Gurux.SMS.dll & Gurux.Common.dll, ...
* with GNU General Public License (GPL)
* from http://sourceforge.net/projects/gxsms/
*/

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Gurux.SMS;

namespace SendSMS
{
/// <summary>
/// Formulario de envo de SMS.
/// </summary>
public partial class MainForm : Form
{
//private Gurux.SMS.GXSMS gxsms1;

public MainForm()
{
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
InitializeComponent();
}

private void gxsms1_OnError(object sender, string ErrorInfo)
{
try
{
gxsms1.Close();
MessageBox.Show(ErrorInfo);
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
private void gxsms1_OnMediaStateChange(object sender,
Gurux.Common.MediaState State)
{
try
{ }
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}

void Button1Click(object sender, EventArgs e)
{

try
{
gxsms1.ReceiverNumber = textBox1.Text;
gxsms1.Open();
Gurux.SMS.GXSMSMessage msg = new Gurux.SMS.GXSMSMessage();
msg.Data = textBox2.Text;
Cursor.Current = Cursors.WaitCursor;
gxsms1.Send(msg);
label3.Text = "Estado: SMS enviado";
Cursor.Current = Cursors.Default;
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
label3.Text = "Estado: error";
}
}
}
}
70
71
72
73
74

You might also like