Italian Visuallizzare missilescondo con il Timer

lock255

Well-Known Member
Licensed User
Longtime User
Salve a tutti,

sto realizzando un cronometro, ma non riesco a far funzionare i millisecondi e non capisco dove sbaglio:

B4X:
Globals
    Dim cronometro As Timer
    Dim s, ms as int
End Sub

Sub Activity_Create(FirstTime As Boolean)
     cronometro.Initialize("cronometro", 0,100)
End Sub

Sub cronometro_Tick
        If ms=59 Then
            ms=0
            s=1
        Else
            ms=ms+1
            lbCronometro.Text=s&":"&ms
        End If
End Sub

Va ho provato a mette al posto di 100, 10 e 1 ma sempre troppo veloce rispetto a un vero millisecondo.
 

lock255

Well-Known Member
Licensed User
Longtime User
In teoria dovrebbe essere 1ms, ma in pratica è molto di più. Quindi non va neanche questo.
 

lock255

Well-Known Member
Licensed User
Longtime User
L'ho testato sul mio cell e funziona (anche semplicemente mettendo 1), il fatto che mi ha tratto in inganno e che sull'emulatore non funziona correttamente.
 

Spinter

Active Member
Licensed User
Longtime User
Allora hop fatto un po' di prove sia con B4 che con BJ.
Con BJ Funziona Perfettamente forse il pc gestisce meglio ma!!!!
Con B4 i millisecondi calcolati con un timer aumentano leggermente e dipende anche se il telefono e sotto carico do lavoro!
vi allego l'esempio!
 

Attachments

  • test.zip
    2.8 KB · Views: 297

LucaMs

Expert
Licensed User
Longtime User
Avevo già letto una domanda del genere e, compatibilmente con la mia memoria, in esso si diceva che non si può ottenere una precisione al millisecondo.
Come minimo 40ms, se non ricordo male.
Cerca nel sito.
 

lock255

Well-Known Member
Licensed User
Longtime User
Secondo voi è possibile dare la priorità a questo processo in modo tale da essere influenzato dal carico del telefono?
 

LucaMs

Expert
Licensed User
Longtime User
Anche per questo... ho letto troppo e confondo. Mi sembra che non sia possibile cambiare la priorità di un processo.
Potresti provare con un servizio che parta al boot.
(l'esempio che hai postato, per adesso non posso provarlo, hai una versione più recente di B4A. Devo rifare il progetto e copiare il codice).
 

lock255

Well-Known Member
Licensed User
Longtime User
secondo me dovresti seguire i millisecondi della data quelli sono perfetti se vedi!
Ci avevo pensato, ma non sapendo come fare ho provato con il timer, ma ho visto che non è proprio affidabile,. Dato che a me serve una certa precisione anche nei millisecondi, vorrei farei come mi hai consigliato.
Per caso sai come poter visualizzare i ms presi dalla data del sistema (come se fosse un timer)?
 

Spinter

Active Member
Licensed User
Longtime User
DateTime.TimeFormat="SSS"
label1.Text= DateTime.Time( DateTime.now)


logicamente dopo dovrai lavorarci un po' sopra sommando ecc
 

lock255

Well-Known Member
Licensed User
Longtime User
Grazie della dritta, ci lavorerò e vi farò sapere se ci sono riuscito :)
 

LucaMs

Expert
Licensed User
Longtime User
Gli ho dato un'occhiata e mi sembra che sia impossibile mostrare anche i millisecondi (che razza di crono è uno che mostra al massimo i secondi?!?!).
Intatti, c'è una proprieta Format per la view Chrono, ma può solo mostrare HH:MM:SS.

Adesso provo a "ricostruire" la tua app, adattandola per la mia versione di B4A. Suderò un po', ma la soluzione te la trovo :D


PER IL MOMENTO, STO LEGGENDO; I TIMER VANNO DICHIARATI NELLA PROCESS_GLOBALS, NON NELLA GLOBALS
 

lock255

Well-Known Member
Licensed User
Longtime User
Ok, io nel frattempo lavorerò con il tempo del sistema... vediamo se mi riesce :D
 
Top