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 [Link]
24/11/2012 17:59 via MobileLitteBirdReply Retweet Favorite
@javcasta
Javier Castan
Referencias:
[Link]
[Link]
x86_5.[Link]/download
En la forja de codigo fuente ( [Link] ).
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#:
[Link] y [Link]
Pero para que funcione si que hacen falta las otras librerias que instala el msi (GuruxSMS-
x86_5.[Link]) del proyecto,que se alojan en:
%CommonProgramFiles%\Gurux\GXCom\
Una vez instalado GuruxSMS-x86_5.[Link],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 [Link] 2.0 e import (Proyecto > aadir referencias > .Net Assembly ) estas
dos librerias ([Link] y [Link]).
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 [Link] aadimos el objeto gxsms1 de la clase [Link]
?
1
2
3
4
5
6
//[Link]
//en el metodo InitializaeComponent()
private void InitializeComponent()
{
//...
this.gxsms1 = new [Link]();
[Link]();
//...
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//
// gxsms1
//
[Link] = false;
[Link] = false;
[Link] = null;
[Link] = [Link];
[Link] = "1111"; //el pin de tu modem, si no tiene pin: PINCode = "";
[Link] = false;
[Link] = "COM7"; //Puerto
[Link] = "666123456"; //numero que recibir el SMS, se puede cambiar en tiempo
de ejecucion
[Link] = -1;
[Link] += new
[Link](this.gxsms1_OnMediaStateChange);
[Link] += new [Link](this.gxsms1_OnError);
//...
}
//...
private [Link] gxsms1;
//...
Y el cdigo del [Link]
?
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 - [Link]
* Date: 24/11/2012
* Time: 9:07
* GxSMS & [Link] & [Link], ...
* with GNU General Public License (GPL)
* from [Link]
*/
using System;
using [Link];
using [Link];
using [Link];
using [Link];
namespace SendSMS
{
/// <summary>
/// Formulario de envo de SMS.
/// </summary>
public partial class MainForm : Form
{
//private [Link] 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
{
[Link]();
[Link](ErrorInfo);
}
catch (Exception Ex)
{
[Link]([Link]);
}
}
private void gxsms1_OnMediaStateChange(object sender,
[Link] State)
{
try
{ }
catch (Exception Ex)
{
[Link]([Link]);
}
}
void Button1Click(object sender, EventArgs e)
{
try
{
[Link] = [Link];
[Link]();
[Link] msg = new [Link]();
[Link] = [Link];
[Link] = [Link];
[Link](msg);
[Link] = "Estado: SMS enviado";
[Link] = [Link];
}
catch (Exception Ex)
{
[Link]([Link]);
[Link] = "Estado: error";
}
}
}
}
70
71
72
73
74