Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [VB6] Funzione Sleep

  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [VB6] Funzione Sleep

    Ciao a tutti,

    Non riesco proprio a capire una cosa.
    Sto lavorando con VB6.
    Mettiamo che ho un oggetto timer che richiama una determinata funzione test() ogni 60ms, e prendiamo per esempio 2 thread generati.

    th1 invocato dopo 60ms (dall'avvio del timer)
    th2 invocato dopo 120ms (dall'avvio del timer)

    Sa all'interno della mia funzione test() ho un sleep di 30ms.

    th1 ovviamente subirà un ritardo di 30ms.

    e th2?
    subira sempre e solo un ritardo i 30ms, oppure il ritardo si cumula con il th1 percui di 60ms?

    In sostanza quando io richiamo sleep, e questo è in una funzione richiamata dal timer subisce il ritardo solo la funzione oppure tutta la mia applicazione?

    Ciao
    Paolo
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Di quali thread parli? Come crei thread in vb6?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    No molto probabilmente, anzi sicuramente ho usato la parola thread in maniera impropria.
    A rigor di logica il ciclo timer invocato ogni 60ms crea un processo separato presumo per ogni richiamo della funzione.
    E vorrei capire se uno sleep invocato nel primo processo si ripercuote anche sul secondo.
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ah ... ecco ...

    No, in VB6 gira tutto su un thread. I timer sono gestiti tramite il messaggio WM_TIMER comunque nell'unico thread della GUI.

    Una Sleep, ovunque posta, blocca tutto.

    Non ho comunque capito tutto il meccanismo che hai messo in piedi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    E' un processo un po complicato cerco di essere chiaro.

    Ho in mano un software che come attività principale ha il richiamo a questa funzione lavoro() tramite un timer impostato a 60ms.
    Questa funzione in prims valuta lo stato logico di alcune uscite di una scheda proprietaria pci national.
    In base allo stato deve compiere determinate operazioni.

    In passato alcune di queste uscite digitali (uscite che la pci rendeva disponibili) avevano il compito di leggere in realtime lo stato di una rigaottica.
    Adesso non esiste più il dispositivo che permette di collegare la riga ottica alla scheda pci proprietaria e devo collegare sta cosa tramite usb, virtualizzandola come com.

    In gioco ci sono 6 cicli timer, ognuno dei quali monitora un componente (sempre tramite le porte digitali o analogiche del scheda proprietaria pci).

    Ad un certo punto il software ora deve richiedere il dato della rigaottica e al fine di ottenere il dato devo mandargli un carattare ch(2), ma devo attendere almeno 20ms al fine di ottenere il dato.

    Il problema è che il primo dato lo ottengo coerente, gli altri no(come se il dato richiesto fosse troppo alto e la riga ottica si fosse spostata di più rispetto a quello teorico).

    Ho infatti pensato che il problema potrebbe essere dovuto allo sleep che blocca l'esecuzione degli altri cicli timer e che il dato lo andassi a richiedere troppo tardi.

    Solo per info ho anche un altro problema.
    I cicli timer sono cosi veloci che vado a richiedere 6 volte il dato in modo troppo veloce e il dipositivo a volte si inchioda dandomi un bel avviso "Command read too fast"... uff.

    Bhe almeno un passo avanti l'ho fatto...

    Scusa lo sfogo
    Che mestiere difficile.....essere da soli ancora di più

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.