Italian Comportamento incomprensibile (Timer / Sender)

zamb

Active Member
Licensed User
Non escludo nulla ma dubito di essere lento. Tengo il pollicione a pochi mm e tappo alla velocità della luce o quasi. Non sarà che sul mio cell il ritardo di aggiornamento sia maggiore che sul tuo?
Se provi a scendere sui 150-200 conta ancora?
 

zamb

Active Member
Licensed User
Seppure quanto sto per dire non sia strettamente legato alla programmazione, credo sia istruttivo e forse utile ad altri.
Dunque, ho capito che i "tempi di reazione" semplici o complessi (TRS/TRC) sono cosa complicata. Dipendono da molti fattori. Ho trovato questo sito http://www.earmi.it/varie/reazione/reazione.htm che fornisce una semplice interfaccia per misurarli direttamente. Il test che propone è simile a quello che si realizza con i nostri codici (a casella fissa) non considerando la necessità di cliccare o meno in ragione del tipo di stimolo (in questo caso si tratterebbe di TSC, normalmente più lungo in quanto implica una decisione). Il bello è che se provo sul PC usando la tastiera o il mouse come strumento di input ottengo tempi dell'ordine dei 250-350 msec mentre se lo faccio sul cellulare ottengo circa 850 msec e vi consiglio di provare. Che anche qui influisca il tempo di aggiornamento della UI?
Ho anche interessato vecchi colleghi universitari che si occupano di argomenti similari in ambito sportivo ed attendo loro risposte.
Comunque pensavo che stabilire un criterio on/off di accettazione sia molto restrittivo (come la data del cambio divisa indipendente dal clima nell'esercito :) ) e comporterebbe la necessità di stabilire un valore soglia. Pensavo di non contare più i successi, metodo che espone anche alla evidenziazione di eventuali discrepanze quali quelle da me osservate (clicco sulla coda del tempo, vedo chiaramente il simbolo ancora sotto il mio dito ma il conteggio non incrementa/decrementa) ma di attribuire un punteggio in funzione dell'inverso del tempo impiegato lasciando lo stimolo visualizzato fino alla sua sostituzione con il nuovo. Questo credo sia decisamente meglio. Il feedback audio potrebbe essere legato all'incremento del punteggio. Mi resta da decidere come gestire gli errori (decrementare di un valore proporzionale al tempo impiegato, azzerare il punteggio o altro)...
La saga ( :)) continua. Se interessa vi terrò aggiornati.
 

udg

Expert
Licensed User
Longtime User
Ciao, ho provato il test sul sito e direi di essere in linea con i tuoi valori (278, 246, 243, 273, 301).
Ho riprovato poco dopo utilizzando il tasto Enter invece del mouse e i 5 valori risultavano tutti tranne uno leggermente al di sopra dei 300ms.

Non so quanto sia affidabile questo tipo di misurazione. Come abbiamo visto la componente tecnologica (hw e sw) gioca la sua parte e differenze tra dispositivi inficiano alla radice la possibilità di confrontare valori di soggetti diversi.
Per il "mistero" UI, aggiungerei che esiste un valore predefinito (non modificabile che io sappia) in base al quale il device "sente" l'evento click; quindi al di sotto di quel valore, anche nelle condizioni ottimali non si può andare.
Un tentativo si potrebbe fare con un panel e l'evento Touch; misurando la differenza di tempo tra Down e Up si avrebbe l'equivalente di un click.

Ma siamo sempre nelle condizioni di tempo "virtuale". Benchè il clock di un PC (o device) sia ben definito in base all'oscillatore utilizzato, bisogna considerare che il sistema operativo svolge centinaia di compiti "contemporaneamente" e quindi lo scorrere del tempo in un determinato programma potrebbe essere comunque a scatti.
Android, per di più, si basa sugli eventi. Quindi sia "sentire" il click che aggiornare la UI sono operazioni svolte tramite una coda di eventi.

ps: ho provato da cellulare (Android 4.4, vecchiotto e scarso) con tempi medi di 0.6

pps: poi sono tornato alla tastiera del Pc per giocare ancora un po' sul sito e migliorare lo score inziale
 

Attachments

  • Reazione2PNG.PNG
    Reazione2PNG.PNG
    26.4 KB · Views: 100

zamb

Active Member
Licensed User
Ciao, ho provato il test sul sito e direi di essere in linea con i tuoi valori (278, 246, 243, 273, 301).
Ho riprovato poco dopo utilizzando il tasto Enter invece del mouse e i 5 valori risultavano tutti tranne uno leggermente al di sopra dei 300ms.

Non so quanto sia affidabile questo tipo di misurazione. Come abbiamo visto la componente tecnologica (hw e sw) gioca la sua parte e differenze tra dispositivi inficiano alla radice la possibilità di confrontare valori di soggetti diversi.
Per il "mistero" UI, aggiungerei che esiste un valore predefinito (non modificabile che io sappia) in base al quale il device "sente" l'evento click; quindi al di sotto di quel valore, anche nelle condizioni ottimali non si può andare.
Un tentativo si potrebbe fare con un panel e l'evento Touch; misurando la differenza di tempo tra Down e Up si avrebbe l'equivalente di un click.

Ma siamo sempre nelle condizioni di tempo "virtuale". Benchè il clock di un PC (o device) sia ben definito in base all'oscillatore utilizzato, bisogna considerare che il sistema operativo svolge centinaia di compiti "contemporaneamente" e quindi lo scorrere del tempo in un determinato programma potrebbe essere comunque a scatti.
Android, per di più, si basa sugli eventi. Quindi sia "sentire" il click che aggiornare la UI sono operazioni svolte tramite una coda di eventi.

ps: ho provato da cellulare (Android 4.4, vecchiotto e scarso) con tempi medi di 0.6

pps: poi sono tornato alla tastiera del Pc per giocare ancora un po' sul sito e migliorare lo score inziale
Complimenti vivissimi per i tuoi tempi finali!!! Effettivamente i tempi di reazione migliorano con l'allenamento ma tu vai alla velocità della luce :)!
Ho rifatto anche io le prove al PC ed ho visto valori medi di circa 0.27 sec usando il mouse wireless e circa 0,3 usando la tastiera cablata confermando in sostanza i tuoi primi risultati (con i secondi ci rinuncio) mentre con il cellulare (Android 8.1, abbastanza scarso) ottengo sempre medie di circa 0,88 sec. Condivido la incertezza sulla validità delle misure ma le conferme mi fanno pensare che sia abbastanza accettabile. La differenza nei tempi tra PC e cellulare, mi convince che il busillis sia l'aggiornamento della UI. Questo, nel caso in cui non si ipotizzi un rallentamento di Android 8.1 rispetto al 4.4, mi farebbe propendere per un problema HW (il mio per una foto impiega mediamente 10 sec!!). Comunque tutto questo mi convince sempre più che è meglio attribuire un punteggio legato all'inverso del tempo piuttosto che fare un colpito/non colpito. Una tal soluzione taglia abbastanza fuori le problematiche della prima ipotesi ed i punteggi dovrebbero essere paragonabili almeno su dispositivi con pari HW/SW.
Certo che mi sarei aspettato tempi di reazione al click da parte di Android decisamente più bassi :mad: ma altrettanto certo che nell'uso quotidiano questo non è un problema...
 

udg

Expert
Licensed User
Longtime User
Non lasciarti ingannare dai tempi nell'ordine dei millesimi...ho barato! :)
È vero che ho sempre avuto tempi di reazione ottimi e questo spesso mi ha aiutato nell'attività agonistica da gggiovane, ma qui ho usato un banale accorgimento.. prova a cliccare furiosamente quando esce il messaggio di attendere il verde!
 
Last edited:

zamb

Active Member
Licensed User
Non lasciarti ingannare dai tempi nell'ordine dei millesi...ho barato! :)
È vero che ho sempre avuto tempi di reazione ottimi e questo spesso mi ha aiutato nell'attività agonistica da gggiovane, ma qui ho usato un banale accorgimento.. prova a cliccare furiosamente quando esce il messaggio di attendere il verde!
Ahhh, mi pareva. Furbetto :)
 

LucaMs

Expert
Licensed User
Longtime User
Certo che siete invecchiati parecchio, eh!

Tempi.png


Non lasciarti ingannare dai tempi nell'ordine dei millesi...ho barato! :)
È vero che ho sempre avuto tempi di reazione ottimi e questo spesso mi ha aiutato nell'attività agonistica da gggiovane, ma qui ho usato un banale accorgimento.. prova a cliccare furiosamente quando esce il messaggio di attendere il verde!
Se proprio devi barare, sappilo fare come si deve, hehehe.
 

udg

Expert
Licensed User
Longtime User
Spoiler: In genere il suo trucco è quello di utilizzare un "fotoritocco" dell'immagine...
Io almeno avevo "partecipato"..ehehe
 

LucaMs

Expert
Licensed User
Longtime User
Spoiler: In genere il suo trucco è quello di utilizzare un "fotoritocco" dell'immagine...
Io almeno avevo "partecipato"..ehehe
Non si dovrebbero svelare i trucchi dei... colleghi prestigiatori 😄
 

udg

Expert
Licensed User
Longtime User
Eh eh, qui siamo tutti vecchi maghi..vedrai che @zamb ci avrà già pensato da sè e solo per educazione non ci ha infamati da subito :)
 

LucaMs

Expert
Licensed User
Longtime User
Eh eh, qui siamo tutti vecchi maghi..vedrai che @zamb ci avrà già pensato da sè e solo per educazione non ci ha infamati da subito :)
Il mio trucco l'avrà capito immediatamente; soprattutto dopo aver saputo del tuo!
 

zamb

Active Member
Licensed User
Cari amici maghi, il sospetto della photoshoppata o similari m'era venuto ma effettivamente non l'avrei mai detto 😁 😁
 

Star-Dust

Expert
Licensed User
Rapporto conclusivo:
- codice di cui al post 42 (LucaMs) senza nessunissima modifica installato (release) sia sul MotoG5 Android 8.1 che sul Doogee Valencia2_Y100Pro Android 5.1 genera caselle tutte bianche, nessun conteggio anche aumentando lo sleep.

- il codice di cui al post 47 (Satar-Dust) senza nessunissima modifica installato (release) sul MotoG5 Android 8.1 con gli sleep originari per diversi conteggi; aumentando gli sleep direi che va bene fatto salvo il problema della durata che devo vedere se settabile e devo verificare il comportamento dei click sulla coda della validità.
Sul Doogee Valencia2_Y100Pro con gli sleep originari perde alcuni conteggi conteggi (meno che il MotoG5); aumentando gli sleep direi che va bene fatto salvo il problema, anche qui ovviamente della durata che devo vedere se settabile come pure devo verificare il comportamento dei click sulla coda della validità.

- Il codice di cui al post 50 (quello con il Do While di Satar-Dust) senza nessunissima modifica installato (release) sia sul MotoG5 Android 8.1 che sul Doogee Valencia2_Y100Pro sembrano promettenti anche se probabilmente bisogna incrementare il tempo degli sleep (non ancora provato) perchè perde un po' di conteggi.
Quindi si deduce che il mio codice funziona anche senza dover aggiornare con B4A 9.90.
Hai perso giorni e giorni a fare test sui diversi sorgenti quando potevi usare già un codice funzionante 😂 😂 😂
Ho visto giochi molto complessi realizzati con versioni B4A molto vecchie.
Visto la semplicità dell'App e considerando che non sfrutti nessuna nuova funzionalità, un buon codice avrebbe dovuto funzionare anche con le versioni precedenti.

Ti rimane solo di aumentare il TimeLapse (il tempo di ritardo che ho impostato a 50) a un valore di 350 che è il tempo medio di risposta e hai concluso.
 
Last edited:

Sagenut

Well-Known Member
Licensed User
Longtime User
Ma resta il fatto che anche il codice di @LucaMs era molto semplice e di base....... Ma pare avesse problemi con la 9.80
Sarebbe stato interessante capire se c'era effettivamente un bug, o se ci fosse altro che interferiva.
Ma ora c'è la 9.90 e qualsiasi risposta richiederà prima di aggiornare. :p
 

zamb

Active Member
Licensed User
Quindi si deduce che il mio codice funziona anche senza dover aggiornare con B4A 9.90.
Hai perso giorni e giorni a fare test sui diversi sorgenti quando potevi usare già un codice funzionante 😂 😂 😂
Ho visto giochi molto complessi realizzati con versioni B4A molto vecchie.
Visto la semplicità dell'App e considerando che non sfrutti nessuna nuova funzionalità, un buon codice avrebbe dovuto funzionare anche con le versioni precedenti.

Ti rimane solo di aumentare il TimeLapse (il tempo di ritardo che ho impostato a 50) a un valore di 350 che è il tempo medio di risposta e hai concluso.
Carissimo Star-Dust, ti assicuro che non sto affatto trascurando i tuoi codici che restano per ora solo in stand-by in quanto ero interessato alle idee di arricchimento (audio e randomizzazione degli stimoli) suggerite da LucasMs e sto inoltre lavorando sulla nuova idea del punteggio proporzionale al tempo piuttosto che ad un conteggio dei "centri".
Certo però riprenderò in mano i tuoi codici e cercherò i vantaggi/svantaggi (il fatto che lavorino anche con la versione 9.80 è molto interessante anche se oggi c'è la 9.90). Non escludo che alla fine possa nascere un codice mixato tra quanto suggerito da LucasMs e quanto suggerito da te e vi ringrazio entrambi per il prezioso aiuto! Naturalmente sarete i primi ad averlo :)👍
 

zamb

Active Member
Licensed User
Carissimi, ariecchime!
Non ci crederete ma continuo a lavorare sullo stesso stupido progettino e, per il momento, sempre basandomi sul codice di LucaMs.
Seppure sia ancora work in progress, ho ottenuto significativi risultati. Ora non ho più problemi di click sulla coda della validità, ho fatto i punteggi come voglio, etc, etc.
Tutto ok per quanto riguarda la versione con 9 caselle (3x3). Poi sono passato alla versione con 16 caselle (4X4) e si ripresentano i problemi relativi alla mancata rilevazione del click il tutto testato con 2 cellulari diversi con diverse versioni Android :eek:
Allego i miei due sorgenti nella versione di lavoro con molte cose disabilitate (diversa gestione simboli, suoni e punteggi). In queste versioni tutti i simboli sono accettati come validi ed i tempi per il click sono decisamente sovradimensionati (quelli che misuro sono compresi tra circa 600 e 800 msec mentre ne do circa 2000).
i due sorgenti sono identici tranne che per il numero di caselle e dimostrano che, mentre per la versione a 9 caselle tutto funziona, nella versione a 16 il sistema non intercetta il click a partire dalla casella 9.
Alla riga 248 c'è la randomizzazione della casella e alla riga 249 la forzatura a casella fissa per agevolare la verifica del problema.
In caso di successo, nella casella di testo viene indicato il punteggio parziale, totale e una esclamazione mentre in mancanza di intercettazione del click compare la scritta "false" (cliccato = false).
Preciso di lavorare con B4A 9.90.
Io non riesco a capire. Sono io cretino (cosa molto probabile) o c'è qualche cosa di inspiegabile?
A solito vi ringrazio in anticipo
 

Attachments

  • Zamb9.zip
    349.5 KB · Views: 101
  • Zamb16.zip
    350 KB · Views: 97

LucaMs

Expert
Licensed User
Longtime User
Nel Designer, a tutte le ImageView devi dare il medesimo nome evento.

Mentre le prime hanno "ImgV", quelle che hai aggiunto hanno come nome quello di default, che poi è il nome della Imageview stessa:

1594113801136.png
 

zamb

Active Member
Licensed User
Come sempre hai ragione ed io sono proprio cretino! Era tanto ovvio... :mad: :mad:
Grazie infinite!
 
Top