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 (vbnet) [Seleccionar]
Imports System.Net.NetworkInformation
Imports System.Threading
Public Class Form1
Private Sub InitializeTimer()
Timer1.Interval = 10000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If My.Computer.Network.IsAvailable() Then
Try
If My.Computer.Network.Ping("8.8.8.8", 1000) Then
Label1.Text = "Conectado."
Label1.Location = New Point(131, 65)
Label1.ForeColor = Color.White
Me.BackColor = Color.Green
SerialPort1.Open()
SerialPort1.Write("1")
System.Threading.Thread.Sleep(3000)
SerialPort1.Write("2")
SerialPort1.Close()
Else
Label1.Text = "Error de conexión."
Label1.Location = New Point(95, 65)
Label1.ForeColor = Color.White
Me.BackColor = Color.Red
SerialPort1.Open()
SerialPort1.Write("0")
System.Threading.Thread.Sleep(3000)
SerialPort1.Write("2")
SerialPort1.Close()
End If
Catch ex As PingException
Label1.Text = "Error de conexión."
Label1.Location = New Point(95, 65)
Label1.ForeColor = Color.White
Me.BackColor = Color.Red
SerialPort1.Open()
SerialPort1.Write("0")
System.Threading.Thread.Sleep(3000)
SerialPort1.Write("2")
SerialPort1.Close()
End Try
Else
Label1.Text = "Error de conexión."
Label1.Location = New Point(95, 65)
Label1.ForeColor = Color.White
Me.BackColor = Color.Red
SerialPort1.Open()
SerialPort1.Write("0")
System.Threading.Thread.Sleep(3000)
SerialPort1.Write("2")
SerialPort1.Close()
End If
End Sub