Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: extreme69 en 1 Marzo 2011, 07:59 am



Título: MSCOMM - Manejar el celular desde la PC
Publicado por: extreme69 en 1 Marzo 2011, 07:59 am
Hace 2 días que estoy intentando que esto me funcione...

No encontré absolutamente nada en el foro sobre este control.

Código:
| |-+  Resultados de la búsqueda
Páginas: [1]
No se encontraron resultados
Páginas: [1]

Si encontré unos ... 1200 ejemplos distintos... pero obviamente me falta algo porque no logro hacer que me funcione.

Paso a explicar... estoy intentando manejar el celular desde la pc, ¿para que? bueno, mando muchos sms por día y me queda más cómodo escribirlos en un teclado de pc que en el celular.

Así que estoy intentando hacer un programa que me permita desde el pc enviar sms (con el celular conectado por usb).

Bueno, mis primeras pruebas fueron 100% exitosas, utilicé hyperterminal para conectarme al COM correspondiente y luego jugué con comandos AT hasta lograr enviar el SMS con éxito.

Pongo los comandos y describo cada línea:

Código:
AT 'son comandos AT
OK
AT+CMGF=1 'manejar el mensaje en formato texto
OK
AT+CMGW="+666" 'mandar sms a este numero
> Testeo de texto largo para probar bla bla bla bla bla bla bla bla bla. 'contenido del sms a enviar
+CMGW: 14398

OK
AT+CMSS=14398
+CMSS: 20

OK

Ahora lo quiero hacer en VB6... y me encuentro con importantes inconvenientes.

Primero que nada creé una función con un "sleep" improvisado... el código sería algo así:

Código:
Sub Espera(Segundos As Single)
  Dim ComienzoSeg As Single
  Dim FinSeg As Single
  ComienzoSeg = Timer
  FinSeg = ComienzoSeg + Segundos
  Do While FinSeg > Timer
      DoEvents
      If ComienzoSeg > Timer Then
          FinSeg = FinSeg - 24 * 60 * 60
      End If
  Loop
End Sub

Luego agregué el control MSComm y un botón con el siguiente código:

Código:
MSComm1.InputLen = 0
MSComm1.CommPort = "3" ' Com3 Port
Espera (1)
MSComm1.Settings = "57600,n,8,1"
Espera (1)
MSComm1.PortOpen = True
Espera (1)
MSComm1.Output = "AT" & Chr(10)
Espera (1)
MSComm1.Output = "AT+CMGF=1" & Chr(10)
Espera (1)
MSComm1.Output = "AT+CMGW=" & "+666" & Chr$(13) & Chr(13) & Chr(10)
Espera (1)
MSComm1.Output = "Contenido sms aca" & Chr(26)

Pero esto NO me funciona... aunque está igual de seteado que el hyperterminal...

Por otro lado, si pretendo enviar sms desde un programa, debo saber el "index" del mensaje a enviar, en el caso del hyperterminal como lo hago a mano ví que el index del mensaje a enviar era "14398", para luego utilizar CMSS=14398 para enviar el sms, pero si lo hago con el soft ¿como hago que determine este número para luego usarlo en CMSS?

Podría usar MSComm.Input = RichTextBox1.Text y mid para sacar el contenido, pero no funciona tampoco, obviamente estoy haciendo algo mal.

¿Un poco de luz?  ;-)


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: BlackZeroX en 1 Marzo 2011, 11:05 am
.
No estas respectando la sintasis de los comandos AT, Prueba con esto:

Alternativa al OCX.
Clase para los puertos Com hecha por Coco/Cocus (http://infrangelux.sytes.net/FileX/?file=clsCom.cls&dir=/BlackZeroX/Programacion/vb6/Modulos%20de%20Clase/Puertos%20Com).

Código
  1.  
  2. Option Explicit
  3.  
  4. Private WithEvents obj_clscom           As clsCom
  5.  
  6. '
  7. '   /////////////////////////////////////////////////////////////
  8. '   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
  9. '   //                                                         //
  10. '   // Web:     http://InfrAngeluX.Sytes.Net/                  //
  11. '   //                                                         //
  12. '   //    |-> Pueden Distribuir Este codigo siempre y cuando   //
  13. '   // no se eliminen los creditos originales de este codigo   //
  14. '   // No importando que sea modificado/editado o engrandecido //
  15. '   // o achicado, si es en base a este codigo                 //
  16. '   /////////////////////////////////////////////////////////////
  17. '   // http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=6:artwait&catid=2:catprocmanager&Itemid=8
  18. '   /////////////////////////////////////////////////////////////
  19.  
  20. Private Declare Function WaitMessage Lib "user32" () As Long
  21.  
  22. Enum eTime
  23.    Horas = 3600
  24.    Minutos = 60
  25.    Segundos = 1
  26. End Enum
  27.  
  28. Public Sub Wait(ByVal vToWait&, Optional ByVal ThisWait As eTime = Segundos, Optional ByVal UseAllProc As Boolean = False)
  29. Dim vDateE      As Date
  30.    vDateE = DateAdd("s", vToWait& * (ThisWait + 0), Time)
  31.    Do While vDateE > Time
  32.        Call WaitMessage
  33.        If Not UseAllProc Then DoEvents
  34.    Loop
  35. End Sub
  36. Private Sub Form_Load()
  37.    Set obj_clscom = New clsCom
  38.    With obj_clscom
  39.        .ComPort = 4
  40.        .ComSettings = "57600,N,8,1"    ' 57600 bps, sin paridad, 8 bits de data, 1 bit de stop
  41.        .TimerDelay = 1000              ' 1000ms = 1 Segundo para chequear si entro data
  42.        .TimerEnabled = True
  43.        If .InitCom Then
  44.            Call .WriteCom("AT" & vbCr)
  45. ' wait()
  46.            Call .WriteCom("AT+CMGF=1" & vbCr)
  47. ' wait()
  48.            Call .WriteCom("AT+CMGS=" & Chr(34) & "0445526651140" & Chr(34) & vbCr) ' // Segun el protocolo lo que nos retorna es +CMGS: <Num. Identificador>
  49. ' wait()
  50.            Call .WriteCom("Espero una jalada en mi cel, aun que ya no tengo credito xP" & Chr(26))    ' 26 = Ctrl+Z ( Segun el protocolo AT )
  51.        End If
  52.    End With
  53. End Sub
  54.  
  55. Private Sub Form_Unload(Cancel As Integer)
  56.    Set obj_clscom = Nothing
  57. End Sub
  58.  
  59. Private Sub obj_clscom_DataReceived(ByVal strData As String)
  60.    Debug.Print strData
  61.    If InStr(1, strData, "+CMGS:") > 0 Then
  62.        If InStr(1, strData, "OK") > 0 Then
  63.            Dim str_Ret()       As String
  64.            str_Ret() = Split(Replace(Replace(strData, vbCr, ""), "OK", ""), " ")
  65.            Call obj_clscom.WriteCom("AT+CMSS=" & Val(str_Ret(1)) & vbCr)
  66.        End If
  67.    End If
  68. End Sub
  69.  
  70.  

Temibles Lunas!¡.


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: -- KiLiaN -- en 1 Marzo 2011, 11:28 am
Citar
Temibles Lunas!¡.

y porque ahora temibles?? xD


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: BlackZeroX en 1 Marzo 2011, 11:56 am
.

OJO el codigo que puse es funcional al 100%

Tan solo con el comando
Código:
AT+CMGS
Enviara el SMS

No conozco, ni me figura en mis libros el comando:
Código:
AT+CMSS
Pero lo agregue a como creo que va.

Temibles Lunas!¡.


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: extreme69 en 1 Marzo 2011, 17:37 pm
BlackZeroX, ¿como decirlo sin sonar gay?

Sos un tierno  :-*

Tuve que cambiar algunos comandos AT pero funcionó EXCELENTE  ;-)


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: Psyke1 en 1 Marzo 2011, 18:18 pm
BlackZeroX, ¿como decirlo sin sonar gay?

Sos un tierno  :-*

Tuve que cambiar algunos comandos AT pero funcionó EXCELENTE  ;-)
gay :xD

DoEvents! :P


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: extreme69 en 1 Marzo 2011, 19:40 pm
gay :xD

DoEvents! :P

Uy! ese me conoce  :-[

De paso por si alguien más está intentando hacer lo mismo que yo explico la diferencia entre CMGW y CMGS es que con CMGW el mensaje se guarda en el storage area de "mensajes salientes" y hasta que no usás CMSS=Numero_Index no se envía el mensaje.

Yo venía utilizando CMGW + CMSS y tenía un grave problema que era como obtener las respuestas para obtener el numero index del mensaje a enviar, ahora con el CMGS quedó solucionado.

Esos libros mágicos de BlackZeroX son increíbles... debe tener una biblioteca de 9000m2...  :o

Ahora noto una gran diferencia más en el CMSS... estoy haciendo las pruebas enviandome un sms a mi mismo, el mensaje llega, y lo puedo leer, PERO NO QUEDA GUARDADO EN NINGUN LADO jajajaja, es increíble... se puede leer 1 única vez, y no queda ningún rastro del mensaje luego de salir del mensaje, simplemente desaparece.



Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: BlackZeroX en 1 Marzo 2011, 20:26 pm
.
Tu como crees que le enviaba mensajes a la Mr. Frogs sin que tuviera evidencias de quien le envio el mensajito xP.

Con:
Código:
AT+CMGW
lo guardas

Dulces Lunas!¡.


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: extreme69 en 1 Marzo 2011, 20:34 pm
Jajaja, si, si, ya ví, pero lo raro... es que se entiende que no kede en la bandeja de salida porque no se está guardando el mensaje... pero ¡¿en la de entrada tampoco?!


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: 79137913 en 1 Marzo 2011, 22:33 pm
HOLA!!!

No se si me estoy metiendo mal, pero los mensajes que conozco que no se guardan en ninguna casilla son las notificaciones de red.

GRACIAS POR LEER!!!


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: extreme69 en 1 Marzo 2011, 22:56 pm
HOLA!!!

No se si me estoy metiendo mal, pero los mensajes que conozco que no se guardan en ninguna casilla son las notificaciones de red.

GRACIAS POR LEER!!!

No es por el tipo de mensaje sino por la forma en que se envía (al menos en cuanto a la bandeja de salida se refiere), ahora voy a probar mandando sms a otro numero y fijandome si queda en la de entrada o no :P


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: elcarancho en 26 Enero 2012, 12:24 pm
Perdon, son novato...
Podrían decirme como sería el proyecto completo para el envio de sms?
Utilizo la clase para los puertos com y el código de BlackZeroX  sería un formulario?
Muchas gracias por compartir esta valiosa información


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: extreme69 en 30 Enero 2012, 11:07 am
Tenés mi código ahí arriba, el cual funciona perfecto, sólo hay que cambiar el AT+CMGW por AT+CMGS que ese era mi problema.

De todas formas, no todos los celulares soportan todos los comandos AT... deberías revisar la lista de comandos AT permitidos por tu cel.


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: dmgdani en 17 Febrero 2012, 02:14 am
hola todos
si me lo permitis hay una manera para lo que quieres sin utilizar visual basic.
pero necesitas de un movil nokia yo tengo un n73 y me va perfecto.

utilizo este programa
http://mobileways.de/products/remotepro/remote-professional/ (http://mobileways.de/products/remotepro/remote-professional/)

pudes manejar el movil desde el ordenador y escribir los mensajes.
funciona tanto por cable usb o bluethoot.
si lo quieres el programa te lo puedo pasar full si no lo encuentras.


perdon si esta mal mi respuesta al no responer nada con relacion a vsial basic lo hago para ayudar tambien a las personas que quieren manejar el movil con el ordenador y los comandos AT se les quedan grandes o no les funcionan.

un saludo a todos


Título: Re: MSCOMM - Manejar el celular desde la PC
Publicado por: BlackZeroX en 18 Febrero 2012, 10:03 am
hola todos
si me lo permitis hay una manera para lo que quieres sin utilizar visual basic.
pero necesitas de un movil nokia yo tengo un n73 y me va perfecto.

Tu respuesta esta fuera de lugar (es muy tonta) debido a que estas en un foro de PROGRAMACIÓN, mas no de software existente...

P.D.: ¿Revisaste la fecha de las publicaciones?

Dulces Lunas!¡.