Visual Basic.NET - Timer desde Una Clase

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 18 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Timer desde Una Clase

Publicado por German (1 intervención) el 05/08/2019 18:24:25
Saludos compañeros, les comento lo que esto haciendo, tengo un modulo con 8 sensores de termocupla, estoy obteniendo los datos de cada sensor via serial, ya que necesito que los datos sean de tiempo real, decidi afregarlo en un timer, hice la siguiente clase:

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
Imports System.Timers
Imports System.Threading
 
Public Class Class_Modulos_Sensores
 
    Public Shared SerialPort As New IO.Ports.SerialPort
    Public Shared cadena_sensores As String
 
    Public Shared Sub CommPortSetup()
        SerialPort.PortName = "COM7"
        SerialPort.BaudRate = "9600"
        SerialPort.DataBits = "8"
        SerialPort.StopBits = "1"
        SerialPort.Open()
    End Sub
 
    Public Shared Sub main()
        Dim Timer_Sensores As New System.Timers.Timer()
        AddHandler Timer_Sensores.Elapsed, New ElapsedEventHandler(AddressOf OnTimer)
        Timer_Sensores.Interval = 100
        Timer_Sensores.Enabled = True
        Timer_Sensores.AutoReset = False
    End Sub
 
    Public Shared Sub OnTimer(ByVal source As [Object], ByVal e As ElapsedEventArgs)
        SerialPort.Write("#03A" & vbCr)
        SerialPort.DiscardInBuffer()
        cadena_sensores = SerialPort.ReadTo(vbCr)
        Dim theTimer As System.Timers.Timer = DirectCast(source, System.Timers.Timer)
        theTimer.Interval += 1000
        theTimer.Enabled = True
    End Sub
 
End Class

y en el formulario hice lo 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
Public Class Form1
 
    Dim canal0_nd03, canal1_nd03, canal2_nd03, canal3_nd03, canal4_nd03, canal5_nd03, canal6_nd03, canal7_nd03 As String
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Class_Modulos_Sensores.CommPortSetup()
        Class_Modulos_Sensores.main()
 
        canal0_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 4, 5)
        canal1_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 11, 5)
        canal2_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 18, 5)
        canal3_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 25, 5)
        canal4_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 32, 5)
        canal5_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 39, 5)
        canal6_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 46, 5)
        canal7_nd03 = Mid(Class_Modulos_Sensores.cadena_sensores, 53, 5)
 
        'MOSTRAR DATOS
        Label2.Text = canal0_nd03 & " ºC"
        Label6.Text = canal1_nd03 & " ºC"
        Label10.Text = canal2_nd03 & " ºC"
        Label7.Text = canal3_nd03 & " ºC"
        Label14.Text = canal4_nd03 & " ºC"
        Label11.Text = canal5_nd03 & " ºC"
        Label18.Text = canal6_nd03 & " ºC"
        Label15.Text = canal7_nd03 & " ºC"
 
 
    End Sub
 
End Class

mi duda es que no se esta actualizando el valor de cada sensor en la pantalla del formulario, como s no funcionara el timer, en que me estoy equivocando??

estoy usando vb .net 2008
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