Visual Basic.NET - Enviar SMS a móviles

 
Vista:

Enviar SMS a móviles

Publicado por apacheco (98 intervenciones) el 25/11/2019 16:56:40
Tengo que enviar SMS desde una aplicación a los operarios del SAT que visitan a los clientes

He procedido a conectar al ordenador un móvil SAMSUNG GALAXY J5 y lo ha reconocido como SAMSUNG Movile USB módem y le ha asignado (aplicado) el puerto COM3.

El formulario se compone de un combo para seleccionar el puerto (cmbPuerto), 2 botones btConectar y btEnviar y 3 campos de texto, uno para el número de teléfono (txtNumero), otro para el mensaje a enviar (txtTexto) y un tercero (txtModem) para recoger los mensaje devueltos por ell módem.

Así mismo se ha incorporado un SerialPort (SerialPort1), del que ha programado el evento DataReceived, que no se activa no por activa ni por pasiva.

Os adjunto el desarrollo, obviando la carga del los posibles puertos existentes, textos del numero y mensaje a enviar.

Al ejecutarlo no se produce ningún error (pero no hace nada) y el desarrollo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
Imports System.IO.Ports
Imports System.Threading
 
Private Sub btConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btConectar.Click
 
    Try
 
        SerialPort1.PortName = cmbPuerto.Text         ' Puerto seleccionado
        SerialPort1.Open()                                            ' Apertura del puerto
        btConectar.Enabled = False                             ' Para evitar varios intentos de conexión
        btEnviar.Enabled = True
 
        txtNumero.Focus()                                           ' Ir a pedir el número del destinatario
 
    Catch ex As Exception
        MessageBox.Show(ex.Message)
 
    End Try
 
End Sub
 
Private Sub btEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEnviar.Click
 
    Try
 
        If txtTexto.Text = String.Empty Then
            MessageBox.Show("INTRODUZCA EL TEXTO A ENVIAR")
 
            txtTexto.Focus()
 
        End If
 
        SerialPort1.DiscardOutBuffer()
 
        txtModem.Clear()                                            ' Inicializo  el texto de cotrol
        SerialPort1.Write("AT" & vbCrLf)                    ' Comprueba la conexión con el módem
        Threading.Thread.Sleep(1000)
        SerialPort1.Write("AT+CMGF=1" & vbCrLf)   ' Le indico que se va a enviar un SMS
        Threading.Thread.Sleep(1000)
        SerialPort1.Write("AT+CMGS=" & Chr(34) & txtNumero.Text & Chr(34) & vbCrLf) ' Enviará el mensaje sin almacenamiento
        Threading.Thread.Sleep(1000)
        SerialPort1.Write(txtTexto.Text & Chr(26))    ' Envia el mensaje 
 
        MessageBox.Show("ENVIADO")
 
        txtNumero.Focus()                                           ' Ir a pedir el número del siguiente destinatario
 
    Catch ex As Exception
        MsgBox(ex.Message)
 
    End Try
 
 
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    ' RECIBE LA INFORMACION DEL MODEM Y LA PONE EN EL TEXTBOX
    Dim recibido As String = Convert.ToString(SerialPort1.ReadExisting)
 
    txtModem.Text = txtModem.Text + recibido & vbCrLf
 
End Sub

El SerialPort1.DataReceived no se activa al enviar ninguno de los comandos.

¿Será un problema del móvil o que haya que cargar mas drivers aunque no los pida?


Un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder