Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Очень точный таймер Добавлено: 21.08.06 18:19  

Автор вопроса:  Георгий | Web-сайт: tgvsoft.narod.ru
Помогите пожалуйста. Мне нужно сделать очень точный таймер. Стандартный не подойдет - если комп тормознет, то и показания будут неточными.
Я слышал что для этого есть какая-то функция WinAPI, но я не знаю какая.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 21.08.06 18:23
Можно обойтись и без API, правда точный до 0.001 с. - с помощью системного таймера и цикла Do с DoEvents:

Dim D As Double
Dim Interval As Double 'Интервал таймера в секундах, мин. значение 0.001
Interval = 0.001
Do
If Abs(D - Timer) > Interval Then
'Здесь пишеш свой код
End If
DoEvents
Loop

Ответить

Номер ответа: 2
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #2
Добавлено: 21.08.06 18:24
p. s. Правда на этот тоже тормоза влияют

Ответить

Номер ответа: 3
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #3
Добавлено: 21.08.06 20:37
форма:
Private Sub Form_Load()
Me.AutoRedraw = True
    SetTimer Me.hwnd, 0, 1000, AddressOf TimerProc
End Sub

Private Sub Form_Unload(Cancel As Integer)
    KillTimer Me.hwnd, 0
End Sub


модуль:
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Public t As Long

Public Sub TimerProc()
t = t + 1
Form1.Cls
Form1.Print t
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Георгий



Вопросов: 6
Ответов: 5
 Web-сайт: tgvsoft.narod.ru
 Профиль | | #4
Добавлено: 21.08.06 20:40
Спасибо.

Ответить

Номер ответа: 5
Автор ответа:
 Георгий



Вопросов: 6
Ответов: 5
 Web-сайт: tgvsoft.narod.ru
 Профиль | | #5
Добавлено: 21.08.06 21:40
Извините, возникла проблема:
SetTimer Me.hwnd, 0, 1000, AddressOf TimerProc

VB сообщает, что Invalid use of AddressOf operator

Ответить

Номер ответа: 6
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #6
Добавлено: 21.08.06 22:26
VB сообщает, что Invalid use of AddressOf operator

TimerProc должна находиться в модуле.

Ответить

Номер ответа: 7
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 22.08.06 09:58
Только вот я бы не сказал что это таймер особенно точный :)
Можно использовать QueryPerformanceFrequency + QueryPerformanceCounter, но железо вовсе не обязано всю эту хрень поддерживать ;)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам