Hola Cruz,
Yo estoy probando eso mismo.
Por un lado uso un EXE (en C++ de 469 Kb sin DLL externas) que se hizo un amigo que envía comandos AT a puertos COM (si quieres te la envío).
Por otro lado en el portátil tengo un modem USB con un SIM en él. He estado mirando comprar envíos SMS pero por el número de SMS que espero enviar el ahorro es muy poco y por tanto pagaré la tarifa de mi SIM (0,1098 euros/mensaje con impuestos incluídos a fecha 01/09/2012 en España).
De momento tengo 3 funciones que estoy probando, no son definitivas pero para ver como va el tema me estan sirviendo.
3 cosillas:
a) si el SIM precisa PIN si no lo desbloqueas no podrás usarlo.
b) si envío el PIN al SIM desde mi aplicación, el programa própio de connexión a internet desde el modem no pide el PIN pero no conecta a internet; si por contra uso primero el programa de conexción a internet no hay problema.
c) si realizas envío de mensajes 1 x 1, deberás dejar un DELAY entre ellos, sinó el envío se acepta como correcto pero parece ser que mi proveedor telefónico no detecta todos los que le envío y algun destinatario no lo recibe; si le pongo una espera de 2 segundos entre nensajes no tengo problema.
No sé si se puede enviar un SMS a un grupo de teléfonos a la vez. No se como hacerlo.
Aquí les funciones
Code: Select all
#include "fivewin.ch"
/* Función para usar la utilidad InfoCOM para gestionar puertos COM
--------------------------------------------------------------------------------- */
STATIC nPORTCOMSIM := 0
//------------------------------------------------------------------
//------------------------------------------------------------------
FUNCTION nGetCOMofSIM()
Local nContador := 0
Local nRespuesta := 0
For nContador := 0 To 20
//nRespuesta := ShellExecute( 0, "open", "c:\temp\infocom.exe", "COM" + AllTrim(Str(nContador, 3, 0 )) + " ICC", "", 1)
nRespuesta := Waitrun( "c:\temp\infocom.exe COM" + AllTrim(Str(nContador, 3, 0 )) + " ICC", 2 )
//Traza( 1, "nContador/nRespuesta:", nContador, "/", nRespuesta )
If nRespuesta = 0
nPORTCOMSIM := nContador
Exit
EndIf
EndFor
Return nContador
//------------------------------------------------------------------
//------------------------------------------------------------------
FUNCTION uSetPINSIM( nCom )
Local nPIN := 0
Local nRespuesta := 0
If nCom = 0
nCom := If( nPORTCOMSIM = 0, nGetCOMofSIM(), nPORTCOMSIM )
EndIf
MsgGet( "Atenció!", "Indiqui el COM del SIM:", @ncOM )
MsgGet( "Atenció!", "Indiqui el PIN del SIM:", @nPIN )
If nPIN <> 0
nRespuesta := Waitrun( "c:\temp\infocom.exe COM" + AllTrim(Str(nCOM, 3, 0 )) + " AT+CPIN=" + Right( Str( 10000 + nPIN, 10, 0), 4), 2 )
EndIf
//Traza( 1, "nRespuesta:", nRespuesta )
Return nRespuesta
//------------------------------------------------------------------
//------------------------------------------------------------------
FUNCTION lEnviaSMS( nCom, cTelefono, cMensaje )
Local nRespuesta := 0
If nCom = 0
nCom := If( nPORTCOMSIM = 0, nGetCOMofSIM(), nPORTCOMSIM )
EndIf
cMensaje := cMensaje := Strtran( cMensaje, '"', "'", nil, Nil )
nRespuesta := Waitrun( "c:\temp\infocom.exe COM" + AllTrim(Str(nCOM, 3, 0 )) + " SMS " + cTelefono + ' "' + cMensaje + '"', 2 )
//Traza( 1, "nRespuesta:", nRespuesta )
Inkey( 2 )
Return nRespuesta
//------------------------------------------------------------------
//------------------------------------------------------------------