Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Marzo 04, 2013, 07:06:38 pm
-
HOLA AMIGO HAY ALGUNA FORMA DE ENVIAR VARIOS SMS SEGUIDOS A UN MISMO NUMERO.?
ME REFIEREO DESDE VISUAL ALGUN CODIGO SIMPLE PARA HACERLO.
GRACIAS
-
Creo que no se puede por que hay que cachear por cada mensaje.
-
Bazooka, existen empresas que te ofrecen el servicio por mensualidades. Afiliate a una de estas empresas, ellos te envian un ejemplo en VB, el cual facilmente puedes adaptar a tu soft. Es sencillo, simplemente envias comando a una ip con un puerto especifico en los cuales va el mensaje y el numero, y seguido de esto el mensaje se envía sin problemas. Lo interesante de esto es que muchas de estas empresas te habilitan un panel donde puedes ver los mensajes enviados, el numero, todo...!
Saludos
-
Hola Bazooka, tu puedes enviar mensajes y recibirlos también, hacer llamadas, etc , desde visual, abres un puerto serial del COM correspondiente módem GSM o bién tu propio móvil conectado a través del USB o Serial, envías comandos AT y listo ... Puedes hacer mucho mas cosas, que se yo ... ver señal del equipo, cuanto le queda de batería, etc etc etc etc ... salu2
-
Hola, tienes algun codigo que me sirva para enviar mensajes a un telefono movil o PDA a traves de VB6 en Chile
-
Hola yo vengo trabajando hace unos años con unos modems motorola G20/G24, tienen una interface serial Rs-232, podes usar cualq modem GSM-GPRS, se manejan por un set de comandos AT.
Tenes comandos para enviar sms, recibir, abrir una conex a internet, ver nivel de señal, etc, etc.
Obviamente el modem necesita un SIM de alguna telefonica
-
Hola Waldo,
Tengo varias PDA que tienen señal de internet, tarjeta sims, y necesito enviar mensajes desde mi PC a estos equipos moviles, tienes por casualidad algun codigo en VB6 que puedas compartir.
Gracias
Lvaldesu
-
es que no se envia directamente con la PC, necesitas conectar un modem GSM/GPRS a la pc, y el modem con un sim es el que envia el SMS
-
Hola, bueno explicaré un poco como es el tema de los módem GSM a través de USB, así pueden practicar desde su celular, módem Claro, módem Movistar o desde cuales quiera…
Es realmente fácil la manipulación de los mismos, hay código AT estándar que se aplica prácticamente en todos los módem y hay otros que son particulares de cada dispositivo…
Estos códigos AT nos permiten conversar con el dispositivo, pudiendo ejecutar intrucciones en el mismo, obtener datos y establecer configuraciones ...
No empecé explicando que es un comando AT, porque no pretendo profundizar conceptos, ni aburrirlos, pero sería bueno que investiguen un poco sobre el tema
Vamos al grano…
Explicaré con Vb.net, pero es equivalente a VB6…
Trataré de hacer el ejemplo lo más simple que se pueda
Primero hay que tener el driver del módem el cual permitirá interactuar con el puerto serie a través del puerto USB … este puede venir en forma individual o contenido en el aplicativo que la empresa haya proporcionado para interactuar con el mismo … ok
Una vez que tenemos instalado el driver… hay que identificar el puerto COM con el que acepta los comandos AT, ya que puede haber más de uno utilizados por el dispositivo…
En algunos casos se puede saber porque esta descripto en el mismo nombre con el que se encuentra el driver, en administrador de dispositivos (caso Windows), pero otras veces habrá que hacer algunas pruebas…
Programación
Agregamos un Control que nos permite conectar el puerto COM (o puerto serial), “Serialport”
Armamos una función de conexión
Private Function Conectar() As String
Try
With SerialPort1
If .IsOpen Then
.Close()
End If
.PortName = “COM9”
.BaudRate = 9600 ‘bits por segundo (velocidad)
.DataBits = 8 ‘bits de datos
.DtrEnable = False
.StopBits = IO.Ports.StopBits.One
.Parity = IO.Ports.Parity.None
.Handshake = IO.Ports.Handshake.None
.WriteBufferSize = 1024 ‘buffer de escritura
.ReadBufferSize = 2048 ‘buffer de lectura
.WriteTimeout = 500 ‘tiempo de espera
.Encoding = System.Text.Encoding.Default
.Open()
End With
Conectar = vbOK
Catch ex As Exception
Conectar = ex.Message
End Try
End Function
De donde saque los datos de la función? De las propiedades del dispositivo, allí se detalla la configuración del puerto …
Bién, ya estamos conectados… ahora … ¿Cómo enviamos un comando AT?
Haremos otra función para que se entienda
Public Function Check_AT() As String
Try
SerialPort1.Write("AT" & Chr(13))
Check_AT = vbOK
Catch ex As Exception
Check_AT = ex.Message
End Try
End Function
EL chr(13) es necesario para darle ingreso al comando AT
Ahora unos comandos AT para tener en cuenta
ATZ&F = resetea el dispositivo
Private Function Resetear() As String
Try
SerialPort1.Write("ATZ&F" & Chr(13))
Resetear = vbOK
Catch ex As Exception
Resetear = ex.Message
End Try
End Function
Para enviar SMS se construiría de la siguiente manera: AT+CMGS
Private Function Enviar_mensaje(ByVal Numero_Movil As String, ByVal Mensaje As String) As String
Try
SerialPort1.Write("APZ&F" & Chr(13))
SerialPort1.Write("AT+CMGF=1" & Chr(13)) ‘este comando establece el modo texto
SerialPort1.Write("AT+CMGS=" & Chr(34) & (Numero_Movil) & Chr(34) & Chr(13))
SerialPort1.Write(Mensaje & Chr(26))
Enviar_mensaje = vbOK
Catch ex As Exception
Enviar_mensaje = ex.Message
End Try
End Function
Chr(26) es un carácter especial necesario para poder indicar el envío del mensaje “→”
Para obtener mensajes contenidos en el dispositivo sería algo así: AT+CMGL
Private Function Recibir_mensaje(ByVal Tipo As Tipo) As String
Try
SerialPort1.Write("ATZ&F" & Chr(13))
SerialPort1.Write("AT+CMGF=1" & Chr(13)) ‘este comando establece el modo texto
Select Case Tipo
Case 0
SerialPort1.Write("AT+CMGL=" & Chr(34) & "REC UNREAD" & Chr(34) & Chr(13)) ‘solo recibiremos los sms no leidos
Case 1
SerialPort1.Write("AT+CMGL=" & Chr(34) & "REC READ" & Chr(34) & Chr(13)) ‘solo recibiremos los sms leidos
Case 2
SerialPort1.Write("AT+CMGL=" & Chr(34) & "STO UNSENT" & Chr(34) & Chr(13)) ‘solo recibiremos los sms no enviados
Case 3
SerialPort1.Write("AT+CMGL=" & Chr(34) & "STO SENT" & Chr(34) & Chr(13)) ‘solo recibiremos los sms enviados
Case 4
SerialPort1.Write("AT+CMGL=" & Chr(34) & "ALL" & Chr(34) & Chr(13)) ‘Recibiremos todos los sms
End Select
Recibir_mensaje = vbOK
Catch ex As Exception
Recibir_mensaje = ex.Message
End Try
End Function
Para recibir en forma automática mensajes que vaya recibiendo el dispositivo sería:
Private Function Auto_Recibir() As String
Try
SerialPort1.Write("ATZ&F" & Chr(13)) ‘reseteamos
SerialPort1.Write("AT+CMGF=1" & Chr(13)) ‘establecemos el modo texto
SerialPort1.Write("AT+CNMI=" & Chr(34) & "1,2,0,0,0" & Chr(34) & Chr(13)) ‘esto es más largo de explicar, recomiendo lo investiguen
Auto_Recibir = vbOK
Catch ex As Exception
Auto_Recibir = ex.Message
End Try
End Function
Bueno hay muchos comandos mas, como saber la señal del dispositivo, nivel de carga de la batería, fabricante, se pueden hacer llamadas, colgar llamadas, etc y algo interesante para que investiguen, se pueden redireccionar llamadas ... mnmnm
Bueno salu2
-
Buenisimo el aporte!! lo miraremos!!!
Gracias