Enviar SMS desde la aplicacion en fox

738 views
Skip to first unread message

Heberto Villavicencio

unread,
Jan 20, 2015, 1:55:46 PM1/20/15
to publice...@googlegroups.com
Saludos, amigos, necesito desarrollar una aplicacion que debe enviar mensajes de texto desde un telefono con android, el detalle es que llevo varios dias tratando de conectar un android (samsung galaxy) a la pc para usarlo como modem serial (COMx), ya que se como enviar los SMS usando los comando AT, el detalle es que no he logrado que el telef foncione como modem serial

Alguien tiene alguna experiencia en esto que me pueda orientar un poco, mi punto de partida fue lograr que el telefono se viera en la PC como un modem en puerto COMx, pero no he logrado ningun avance

Gracias


arquinav

unread,
Jan 20, 2015, 3:26:41 PM1/20/15
to publice...@googlegroups.com

Lo he probado con galaxy mini s3 y baje samsung kies para que me instalara los drivers.

Heberto Villavicencio

unread,
Jan 20, 2015, 5:35:20 PM1/20/15
to publice...@googlegroups.com
Gracias, descargue kies y lo configuro perfectamente, habilitando el puerto com respecto, ahora bien haz trabajado con comandos AT, porque lo que funciona en un nokia (no smartphone), no funciona en el galaxy s5, no se si es por ser smartphone me falta algo, uso este codigo:

oCom = CREATEOBJECT("MSCOMMLib.MSComm")
oCom.CommPort = 9   &&  Estoy usando el puerto 1
oCom.Settings = "9600,N,8,1"

TRY
      IF oCom.PortOpen = .F.
          oCom.PortOpen = .T.
      ENDIF
CATCH
      ? 'Error : El puesto está abierto'
ENDTRY

oCom.Output ="ATZ" + CHR(13)
INKEY(.1)

oCom.Output ="AT+CMGF=1" + CHR(13)
INKEY(.1)

*- Número de destino al que enviamos el mensaje

oCom.Output = "AT+CMGS=" + "414665XXXX" + CHR(13)
INKEY(.1)

*-  Texto que queremos enviar (acabado con CTRL + Z)

oCom.Output = "Holas" + CHR(26)+ CHR(13)
oCom.PortOpen = .F.   
? "Enviado"


Si hago un test al modem desde panel de control, responde todos los comandos

Ahora bien, este codigo no envia nada (tampoco da error), probe con hyperterminal y tampoco da respuesta el modem
Message has been deleted

arquinav

unread,
Jan 20, 2015, 7:14:41 PM1/20/15
to publice...@googlegroups.com
Me ha funcionado al cambiar esta línea


*- Número de destino al que enviamos el mensaje

oCom.Output = "AT+CMGS=" +'"'+ "315XXXXXXX"+'"' + CHR(13)

Heberto Villavicencio

unread,
Jan 20, 2015, 8:04:46 PM1/20/15
to publice...@googlegroups.com
Hice el cambio sugerido, a pesar de NO dar error, no envia los mensajes simple el codigo funciona como si hubiera funcionado ok pero nunca llegan los mensaje

arquinav

unread,
Jan 20, 2015, 8:54:14 PM1/20/15
to publice...@googlegroups.com
utiliza este form. en el edit1 se captura posibles errores.  cambiar el puerto que tiene el modem y el numero telefónico en el codigo del botón.
Form.zip

Angel Dario Rodriguez

unread,
Jan 20, 2015, 8:59:17 PM1/20/15
to publice...@googlegroups.com
Dice que tiene virus y no se descarga.

Heberto Villavicencio

unread,
Jan 20, 2015, 9:23:40 PM1/20/15
to publice...@googlegroups.com
Lo baje e hice las pruebas, funciona bien hasta aca:

    oCom.Output = lcTexto + CHR(26)+CHR(13)

    DO WHILE .T.
        a=ALLTRIM(oCom.input())
        DO CASE
        CASE "ERROR" $ a
            THROW "ENVIANDO MENSAJE : "+a + CHR(13)
        CASE "OK" $ a OR !EMPTY(a)
            thisform.edit1.Value=thisform.edit1.Value+"ENVIANDO MENSAJE : "+a + CHR(13)
            EXIT
        OTHERWISE
            DOEVENTS
        ENDCASE
    ENDDO

En ese ciclo nunca termina  puesto que a siempre esta vacia

José Enrique Llopis

unread,
Jan 21, 2015, 3:16:50 AM1/21/15
to publice...@googlegroups.com

Yo utilizo los servicios de una pasarela, un broker, de envío de mensajes lo que tiene obviamente sus ventajas y sus inconvenientes, cada uno que valore lo que más le interesa en cada caso, os pongo el código que utilizo, se ha usado Fox9, West Wind client Tools para el envío y Chilkat para el formato de los mensajes.

 

En este caso lo que se hace es un post a un servicio Web que es el que al final manda el SMS, te ahorras todos los problemas de gestión de puertos com.

 

Compañeros míos lo que hicieron en otro caso fue colocar varios móviles, uno por operador, en un servidor con un servicio Web rodando al que los clientes hacían llamadas, vamos como si tu fueras el broker de mensajes, de esta forma también te quitas toda la gestión complicada en el cliente y la centralizas en un solo equipo con las ventajas de gestión que eso tiene.

 

Pepe Llopis

 

 

************************************************************

*** Manda un mensaje SMS directamente

*** lnAction: 1 = TASAR 2 = ENVIAR

************************************************************

FUNCTION _FFWK_SendSMSDirect

            LPARAMETER lnAction, lcTelefono, lcMensaje

 

#define TASAR_SMS  1

#define ENVIAR_SMS 2

 

 

            LOCAL loIP, lcControlString, lcServidor, lcPagina, lnResult, lcBuffer, lnSize, lcTextoError, lnCounter, llReturnValue

            LOCAL lcChecksumCifrado, lcCheckSum

 

            *** Crea el objeto charset que se va a usar para convertir de windows-1252 a iso-8859-1

            loXCharsetFunctions = CREATEOBJECT( "XCharsetFunctions" )

           

            *** Ahora convierto de windows-1252 a iso-8859-1

            lcMensaje = loXCharsetFunctions.convertdata( lcMensaje, "windows-1252", "iso-8859-1" )

           

            lcUserName = "USUARIO"

            lcPassword = "CONTRASEÑA"

 

 

            *** Busca los datos de conexión

            ***************************************

            lcServidor          = [bulksms.com.es]                  && Este es el que yo uso, pero hay muchos que ofrecen servicios similares

           

            DO CASE

                        CASE lnAction = TASAR_SMS

                                   lcPagina = ;

                                               [eapi/submission/quote_sms/2/2.0?username=]+;

                                               lcUserName+[&password=]+lcPassword+;

                                               [&message=] +lcMensaje+ [&msisdn=]+lcTelefono

 

                        CASE lnAction = ENVIAR_SMS

                                   lcPagina = ;

                                               [eapi/submission/send_sms/2/2.0?username=]+;

                                               lcUserName+[&password=]+lcPassword+;

                                               [&message=] +lcMensaje+ [&msisdn=]+lcTelefono

 

            ENDCASE

           

            *** Crea el objeto de comunicaciones

            loIP = CREATEOBJECT("wwHTTP")

            IF VARTYPE( loIP ) != "O"

                        RETURN ""

            ENDIF

            loIP.nHTTPPort = 5567

           

            lnresult = loIP.httpconnect(lcservidor)

            IF lnresult != 0

                        RETURN loIP.cerrormsg

            ENDIF

           

            *********************************************************************

            *** Ahora manda todo al Webservice y recibe la respuesta

            *********************************************************************

            lcbuffer             = SPACE(500000)

            lnsize               = LEN(lcbuffer)

            lnresult             = loip.httpgetex(lcpagina,@lcbuffer,@lnsize)

            lcTextoError      = ""

           

            IF VARTYPE( loIP )="O"

                        lctextoerror = loIP.cerrormsg

                        loIP.httpclose()

            ELSE

                        RETURN ""

            ENDIF

 

 

            *** Libera el objeto IP    

            RELEASE loIP

 

            RETURN lcbuffer

 

ENDFUNC

 


Heberto Villavicencio

unread,
Jan 21, 2015, 6:42:16 AM1/21/15
to publice...@googlegroups.com
Son opciones que he manejado, el detalle es que ya esto lo tenia solucionado trabajando con un telefono nokia sencillito, funcionan los comandos AT perfectamente, puedo enviar y recibir mensajes de mi aplicacion, ahora estoy tratando de hacer lo mismo desde un Android (galaxy S4 y S5) y no logro que funcione, a pesar de que se ve todo ok, simplemente no salen los mensajesm lo que no quisiera es tenerle que decir al cliente mira para que mi aplicacion te funcione pues tienes que cambiar de telefono, la mayoria en estos momentos disponen de algun modelo con SO android
Reply all
Reply to author
Forward
0 new messages