Autore Topic: Come rallentare un ciclo ?  (Letto 1026 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #1 il: 09 Febbraio 2018, 23:59:10 »
Noi abbiamo Sleep e Wait, se non vado errante. :)
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #2 il: 10 Febbraio 2018, 00:35:56 »
Noi abbiamo Sleep e Wait

......e se io volessi un ritardo inferiore al millesimo di secondo ?

« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #3 il: 10 Febbraio 2018, 09:15:53 »
Teoria:
Creo un ciclo, avvio un contatore, quando arrivo ad un millisecondo esco dal ciclo e memorizzo l'indice del ciclo.
Calcolo le frazioni di millisecondo.
Quando mi serve genero un ciclo con valore definito (frazione di millisecondi)
Certo questo contravviene alla condizione posta, che la temporizzazione fosse slegata dalla velocità del microprocessore!
È un idea tanto strampalata?
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #4 il: 10 Febbraio 2018, 14:17:10 »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #5 il: 10 Febbraio 2018, 14:48:40 »
Ammetto la mia ignoranza in materia, ma questo non ritarda il ciclo di un microsecondo?:
Codice: [Seleziona]
Public Sub Main()

  Dim i As Integer
  Do
    Inc i
    Wait 0.0000001
  Loop Until i = 2000000
  Print i

End

Ho provato a mettere in pratica le indicazioni di kicco ma mi sono slogato una spalla  ;D

P.S. con Sleep non funziona con Wait sembra di si, potete fare la prova prima commentando Wait e poi de-commentandolo per vedere la differenza.

 :ciao: :ciao:
« Ultima modifica: 10 Febbraio 2018, 15:27:31 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #6 il: 10 Febbraio 2018, 16:17:46 »
La domanda vera è:
le funzioni di "attesa" di Gambas supportano valori inferiori al millesimo di secondo ?


Forse potrebbero aiutarci questi esempi:  :-X
Codice: [Seleziona]
Public Sub Main()

  Print CFloat(Time)

  Wait 0.001
 
  Print CFloat(Time)
  Print "      |^^^"
  Print "      Sdcm"
  Print "S= secondi\nd= decimi di sec.\nc= centesimi di sec.\nm= millisecondi"

End

Codice: [Seleziona]
Public Sub Main()

  Print CFloat(Time)

  Wait
 
  Print CFloat(Time)
  Print "      |^^^"
  Print "      Sdcm"
  Print "S= secondi\nd= decimi di sec.\nc= centesimi di sec.\nm= millisecondi"

End

Codice: [Seleziona]
Public Sub Main()

  Print CFloat(Time)

  Wait 0.0001
 
  Print CFloat(Time)
  Print "      |^^^"
  Print "      Sdcm"
  Print "S= secondi\nd= decimi di sec.\nc= centesimi di sec.\nm= millisecondi"

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #7 il: 10 Febbraio 2018, 16:34:50 »
Ottima dimostrazione  :ok:
Dai mille in su non sortisce effetto alcuno.
Pertanto non può essere usato ad esempio per i miei microsecondi  ;D

Comunque lo avevo premesso che di queste cose ci capisco...  :poke:

 :ciao:

P.S. Stai a vedere che kicco ha ragione...
« Ultima modifica: 10 Febbraio 2018, 16:36:12 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #8 il: 10 Febbraio 2018, 17:07:38 »
P.S. Stai a vedere che kicco ha ragione...

« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #9 il: 10 Febbraio 2018, 23:04:33 »
[......e se io volessi un ritardo inferiore al millesimo di secondo ?

For i = 0 To 1
Next

 ;D ;D
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #10 il: 11 Febbraio 2018, 01:43:57 »
A questo punto suggerirei una seduta spiritica...

« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #11 il: 11 Febbraio 2018, 08:43:27 »
 :ciao: :ciao:
Pensavo in realtà a una cosa così, ma purtroppo, ho l'impressione, che il contatore non parta in parallelo al Main quando riceve il comando enabled, ma aspetti che termini il ciclo LOOP...

Codice: [Seleziona]
Private timer1 As Timer 
Private a As Boolean

Public Sub Main()
 
  Dim i As Integer
 
  a = False
  timer1 = New Timer As "timer1"
  timer1.delay = 1  'carica 1ms nel timer
  timer1.enabled = 1  'fa partire il timer
 
  Do
    Inc i
  Loop Until a = True
  Print i
 
End

Public Sub Timer1_timer()
 
  a = True  'allo scadere modifica la variabile
  timer1.Enabled = 0  'ferma il timer
  Print "Stop"

End
:ciao:
PS: vediamo come mi cazzia Vuott, stavolta!  :P
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #12 il: 11 Febbraio 2018, 14:08:10 »
 :rolleyes: ...no, scusa.... mi puoi spiegare per quale ragione con il tuo codice il ciclo
Codice: [Seleziona]
  Do
    Inc i
  Loop Until a = True
 
riceve un'attesa inferiore al millisecondo ? 


« Ultima modifica: 11 Febbraio 2018, 14:19:59 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #13 il: 11 Febbraio 2018, 18:02:35 »
Perchè credo che la velocità del microprocessore permetta di effettuare un numero elevato di cicli in 1ms.
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Come rallentare un ciclo ?
« Risposta #14 il: 11 Febbraio 2018, 19:37:31 »
......e se io volessi un ritardo inferiore al millesimo di secondo ?

Naturalmente stai parlando di risorse in puro Gambas, non è che alla fine te ne esci con le librerie C che prevedono micro e nano secondi, giusto?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro