[ X-Cite @ 15.04.2005. 14:38 ] @
| U StatusBar upisujem šta se dešavaa tokom rada u programu... i imam aktiviran tajmer u istom vremenu da pobriše StatusBar za 5sec... ali on meni nekad to pobriše u sekundi, nekad u 3, nekad u 5... kao da briše po nekom default vremenu a da mu je maximalno vrijeme 5sec.
Tajmer kad pobriše StatusBar, on se i disejbluje timer.enabled=false, kako bi stao i počeo od nule drugi put kad se enejbluje.
kako uraditi da se to ne dešava... i da uvijek radi sve poslije toliko vremena, koliko mu se postavi interval?
Samo mi prvi put uradi u tom vremenu... i nikad više!
Hvala |
[ Burgos @ 15.04.2005. 15:01 ] @
Možeš li postovati kod? Verovatno je uzrok nepreciznost Timer Kontrole.
[ X-Cite @ 15.04.2005. 15:27 ] @
Code:
Private Sub Form_Load()
Timer.Enabled = False ' Disable Timer for StatusBar
Timer.Interval = 7000
End Sub
'--------------------------------------------------------
Private Sub cmdStop_Click
StatusBar.Panels(2) = "Control Stopped! Choose fiber mode now"
Timer.Enabled = True ' Enable Timer to delete StatusBar panel2 after 7 sec
End Sub
'--------------------------------------------------------
Private Sub Timer_Timer()
StatusBar.Panels(2) = "" ' Timer will delete text in StatusBar panel2 after 7 sec
Timer.Enabled = False ' Disable Timer
End Sub
Znači posle toga kad se izvrši sve to... drugi put kada se stisne cmdStop... Timer više ne radi na 7 sec... nego uvek manje nego 7
[ mladenovicz @ 15.04.2005. 15:51 ] @
A ako kompajliras i pokrenes exe, da li onda radi ispravno?
[ Not now, John! @ 15.04.2005. 17:36 ] @
Timer je neprecizna kontrola. Intervali zavise od zauzeća procesora. Ja sam ranije pravio program za odgođeno gašenje računara i koristio tu kontrolu. Taj program sam koristio da mi ugasi računar nakon što Winamp završi sa svirkom. Pokazalo se da se vrijeme kod Winampa i kod ovog programa mnogo razlikuje. Problem sam riješio tako što sam koristio Timer funkciju koja je vezana za sistemski sat, a pomoću Timer kontrole sam svakih (npr.) pola sekunde provjeravao vrijednost sistemskog sata. Probaj i ti tako da riješiš svoj problem, ako su ti bitni tačni vremenski intervali.
[ X-Cite @ 15.04.2005. 21:27 ] @
@mladenovicz
isto je i kad uradim .exe
@Not now, John!
pa treba mi dosta precizno... pošto programiram jedan čitav postupak u laboratoriju za optiku (Optical Fibre Attenuation) i pošto uzimam 5 vrijednosti u sekundi i pravim njihov prosjek... pa onda ubacim signal da se Monokromator pomjeri za korak i sačekam 2 sekunde da se umiri i opet čitam 5 i prosjek........
znači ako mi počne ranije nego 2 sekunde, ne valja... ako mi u intervalu 0,2sec... ne dolazi u obzir da mi nekad uzme svih 5 vrednosti u manje nego što treba 1 vrijednost.
kako si napravijo funkciju, da ti stalno gleda sistemski sat? ustvari da odbraja itd...
može li nešto više neko o tome?
Hvala za odgovore svima
[ Dark Icarus @ 16.04.2005. 00:16 ] @
Ako hoćeš preciznije od kontrole Timer onda koristi funkciju Timer(), ona je sistemska tj. ne moraš da je deklarišeš a inače daje broj sekundi proteklih od ponoći. Code: ReferentnoVreme = Timer
Do
DoEvents
ProtekloVreme = Timer - ReferentnoVreme
If ProtekloVreme <0 Then ProtekloVreme = ProtekloVreme + 24*60*60 ' korekcija za slučaj da je upravo prošla ponoć
If ProtekloVreme >= 7 Then 'ovde naravno može bilo koji interval
ReferentnoVreme = Timer
'ovde ide kod koji hoćeš da se izvršava svakih 7 sekundi
End If
Loop
[Ovu poruku je menjao Dark Icarus dana 16.04.2005. u 15:37 GMT+1]
[ X-Cite @ 16.04.2005. 07:17 ] @
Ovo ću moći da isprobam tek sledeće sedmice, pa ću javiti...
Hvala!
[ mladenovicz @ 16.04.2005. 15:07 ] @
[ manix @ 23.04.2005. 18:48 ] @
mozda bi trebaloa da probas sa ocitavanjem biosovog sata (Time$)
u okviru tajmera
zapises trenutno vreme(time$)
u inervalu 100-500 proveravas razliku izmedju trenutnog i zapisanog vremena
ako je razlika 7 izvrsis procedure koju hoces i na kraju te procedure
zapises novo trenutno vreme i sve tako
Time$ nikada ne gresi.Naravno radi se o sekundama.
Ukoliko nisi resio problem reci. Modu da postavim kod.
Trenutno sam preinstalirao win pa jos nisam instalirao VB ali to cu uskoro uraditi!
[ Dark Icarus @ 24.04.2005. 03:43 ] @
A sad pročitaj moj prethodni post.
[ manix @ 28.06.2005. 21:09 ] @
ok ali Timer i Time$ valjda nije isto
Ako jesu onda je greska moja...
Uzmite u obzir da sam pocetnik,a zeleo sam da pomognem !
[Ovu poruku je menjao manix dana 28.06.2005. u 22:14 GMT+1]
[ Aleksandar Ružičić @ 29.06.2005. 13:20 ] @
naravno da Time i Timer nije isto Timer vraca vreme proteklo od ponoci a Time vraca nesto u formatu HH:MM:SS
[ yooyo @ 29.06.2005. 14:41 ] @
Timer se oslanja na windows poruku WM_TIMER, koja moze biti odlizena zbog nekog hitnijeg posla. Ako ste primetili kako stuca i zapinje scroll SMS poruka po domacim televizijama, uzrok je koriscenje isto tog Timera koji ti zelis da iskoristis. Obicno kliktanje misa po dugmicima u aplikaciji drasticno poremeti rad ovog timera.
Windows nije relatime OS. Da bi dobio precizno merenje moras napraviti mrtvu petlju i kontrolisati frequency counter (API funkcije su QueryPerformanceCounter i QueryPerformanceFrequency). Na ovaj nacin ces potrositi 100% procesora u trenutku merenja, ali ce bar biti precizno.
Sa druge strane ako zelis da imas timer koji radi svakih npr N ms, (N > 10ms), mozes koristiti Multimedia Timere (funkcije timeBeginPeriod, timeEndPeriod, timeGetDevCaps,
timeGetSystemTime, timeGetTime, timeKillEvent, TimeProc, timeSetEvent) koji su prilicno precizni.
yooyo
[ manix @ 29.06.2005. 23:32 ] @
DA neke od tih stvari sam vec znao...
Moje pitanje se odnosilo na post "Dark Icarus -A sad pročitaj moj prethodni post."
Hteo sam reci da moj i njegov odgovor nisu isti jer on koristi Timer a ja sam nave primer sa Time$...
Sada mi recite jesam li upravu ???
Hvala vam za odgovore.
Takodje me zanima gde mogu saznati vise o:
"Multimedia Timere (funkcije timeBeginPeriod, timeEndPeriod, timeGetDevCaps,
timeGetSystemTime, timeGetTime, timeKillEvent, TimeProc, timeSetEvent) koji su prilicno precizni.
yooyo"
[Ovu poruku je menjao manix dana 30.06.2005. u 00:35 GMT+1]
[ yooyo @ 30.06.2005. 12:48 ] @
Citat:
Takodje me zanima gde mogu saznati vise o:
Multimedia Timere (funkcije timeBeginPeriod, timeEndPeriod, timeGetDevCaps,
timeGetSystemTime, timeGetTime, timeKillEvent, TimeProc, timeSetEvent) koji su prilicno precizni.
Sve se nalazi u MSDN.
Nije mi jasno kako ljudi uopste mogu da programiraju a da nemaju MSDN?
yooyo
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|