Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: jjcoronas2017 en 4 Junio 2017, 17:29 pm



Título: Detección de Conectividad WEB
Publicado por: jjcoronas2017 en 4 Junio 2017, 17:29 pm
Saludos, modifiqué un fragmento de código bajado de la web que me permite en VB.NET verificar el estado de conexión a Internet con un formulario pequeño, el cual envía un dato a través de puerto serial (USB) a una tarjeta Arduino UNO R3 para que actúe en consecuencia. El código lo ejecuto dentro de un timer con un intervalo de 10 minutos, pero al correrlo (lo puse en segundos para probar su funcionamiento) cada vez que transcurre el tiempo fijado, obviamente ejecuta la acción y la tarjeta actúa, ya que recibe el dato. Lo que necesito es que evalúe el estado cada cierto tiempo y solo si se altera el estado de la conexión que envíe el dato. ¿Qué me sugieren hacer? Anexo el código para que puedan ver lo que actualmente hace:
Código
  1. Imports System.Net.NetworkInformation
  2. Imports System.Threading
  3. Public Class Form1
  4.    Private Sub InitializeTimer()
  5.        Timer1.Interval = 10000
  6.        Timer1.Enabled = True
  7.    End Sub
  8.    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  9.        If My.Computer.Network.IsAvailable() Then
  10.            Try
  11.                If My.Computer.Network.Ping("8.8.8.8", 1000) Then
  12.                    Label1.Text = "Conectado."
  13.                    Label1.Location = New Point(131, 65)
  14.                    Label1.ForeColor = Color.White
  15.                    Me.BackColor = Color.Green
  16.                    SerialPort1.Open()
  17.                    SerialPort1.Write("1")
  18.                    System.Threading.Thread.Sleep(3000)
  19.                    SerialPort1.Write("2")
  20.                    SerialPort1.Close()
  21.                Else
  22.                    Label1.Text = "Error de conexión."
  23.                    Label1.Location = New Point(95, 65)
  24.                    Label1.ForeColor = Color.White
  25.                    Me.BackColor = Color.Red
  26.                    SerialPort1.Open()
  27.                    SerialPort1.Write("0")
  28.                    System.Threading.Thread.Sleep(3000)
  29.                    SerialPort1.Write("2")
  30.                    SerialPort1.Close()
  31.                End If
  32.            Catch ex As PingException
  33.                Label1.Text = "Error de conexión."
  34.                Label1.Location = New Point(95, 65)
  35.                Label1.ForeColor = Color.White
  36.                Me.BackColor = Color.Red
  37.                SerialPort1.Open()
  38.                SerialPort1.Write("0")
  39.                System.Threading.Thread.Sleep(3000)
  40.                SerialPort1.Write("2")
  41.                SerialPort1.Close()
  42.            End Try
  43.        Else
  44.            Label1.Text = "Error de conexión."
  45.            Label1.Location = New Point(95, 65)
  46.            Label1.ForeColor = Color.White
  47.            Me.BackColor = Color.Red
  48.            SerialPort1.Open()
  49.            SerialPort1.Write("0")
  50.            System.Threading.Thread.Sleep(3000)
  51.            SerialPort1.Write("2")
  52.            SerialPort1.Close()
  53.        End If
  54.    End Sub