Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    61

    [VB.NET] Informazione Timer_Tick

    Ciao ragazzi, dovrei utilizzare la funzione Timer_Tick per ciclare l'acquisizione di dati tramite una porta com. L'oggetto che vado a richiamare utilizza un metodo che chiude il thread dopo un certo timeout:

    obj.Read(N byte) //--> if no data come within 500ms close the thread

    La mia domanda è:
    considerando che la funzione Timer_Tick temporizzerebbe questa chiamata per un tempo prefissato (consideriamo 100ms), l'esecuzione totale della funzione durerebbe Tempo della Timer_tick + Timeout thread (100ms + 500 ms = 600ms)
    oppure solo il tempo della Timer_Tick (100ms) causando cosi la chiusura/crash anticipato del thread?

  2. #2
    Il titolo della discussione non è conforme al regolamento, mandami per favore un messaggio privato con la rettifica.
    Chi non cerca trova.

  3. #3
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Se intendi qualcosa del genere:
    codice:
        Private Sub Timer1_Tick() Handles Timer1.Tick
            obj.Read(N byte) //--> if no data come within 500ms close the thread
        End Sub
    ogni 100ms il programma verifica l' IF del tuo codice, non ho la possibilità di provare ma per la mia poca esperienza credo che non vada tanto bene...
    Penso che dovresti gestire i 500ms direttamente con il Timer "giocandoci" con Start e Stop, tipo:

    codice:
     
        Private Sub avvio_acquisione() Handles Button1.Click
            acquisizione()
        End Sub
        Private Sub acquisizione()
            'qui il tuo codice
            Timer1.Start()
        End Sub
        Private Sub Timer1_Tick() Handles Timer1.Tick
            Timer1.Stop()
            If acquisizione_dati = True Then
                'qui devi attendere la fine dei dati, qualcosa tipo WaitForExit
                acquisizione()
            Else
                ' qui devi chiudere il thread
                acquisizione()
            End If
        End Sub
    Devi anche aggiungere del codice per fermare definitivamente il timer.
    Comunque la mia è solo un' idea dettata dal quel che conosco, ti conviene aspettare qualcuno più esperto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.