Provo a scrivere come mi sembra funzioni attualmente il programma (così ci ragiono sopra, sperando che qualcun altro trovi la soluzione
).
Hai una SeekBar con la quale imposti la velocità: valori tra 0 e 200 (km/h).
In base al valore di questa "velocità", calcoli l'intervallo del timer SendTimer, che quindi avrà valori 0 (per velocità 0), 7000 (per velocità 1),... 35 (per velocità 200).
L'evento di SendTimer verrà quindi scatenato con maggiore frequenza in base alla velocità selezionata.
L'evento chiama il metodo NewData della classe clsSpeed. In questo metodo viene impostato un tempo iniziale StartTime (al primo ricevimento di NewData), se è il secondo "dato" ricevuto, viene calcolato il tempo trascorso (che sarà tra il secondo tick ed il primo). Poi viene calcolato:
tmpSpeed = Abrollumfang / time * 3600
ovvero la circonferenza della ruota diviso il tempo trascorso, moltiplicato per 3600 suppongo per calcolare la velocità oraria.
Ma questo sarebbe giusto se i tick di SendTimer corrispondessero al giro completo della ruota (e non mi sembra così) o sbaglio?
Se, come penso, il SendTimer deve simulare un sensore sulla ruota per contare i giri della ruota, Abrollumfang deve intervenire nel calcolo nel Main, per far sì che ogni SendTimer_Tick avvenga ad ogni giro di ruota completato.
Oppure...
non c'ho capito un tubo