Системный таймер

Объект sys. предоставляет событие таймера - on_sys_timer, - которое генерируется периодически. Период зависит от платформы. Если у платформы нет свойства sys.onsystimerperiod, период фиксирован и равен 0,5 секунды. Если платформа поддерживает это свойство, то 0,5 секунды - период по умолчанию, и программа может его изменить.

Если в вашем ПО есть периодические задачи, их код можно поместить в обработчик события on_sys_timer. Учтите: сгенерированное событие, как и все остальные, попадает в очередь и ждёт обработки. Поэтому не стоит рассчитывать на высокую точность периода, с которым вызывается обработчик on_sys_timer. Можно лишь рассчитывать, что в среднем это событие будет приходить каждые 0,5 секунды.

Есть и свойство sys.timercount (только чтение). Счётчик таймера - свободно идущий счётчик, который обнуляется при включении питания устройства и увеличивается каждые 0,5 секунды. Свойство sys.timercount удобно для определения прошедшего времени, например при ожидании чего-либо.

Пример. Допустим, вы ждёте поступления данных по последовательному порту, но готовы ждать не дольше 10 секунд:

dim w as word
...
...
w=sys.timecount 'memorize time count at the beginning of waiting for serial data
while ser.rxlen=0
	'nope, no data yet, do we still have time?
	if sys.timercount-w>20 then goto enough_waiting 'we quit after 10 seconds
	doevents 'polite waiting includes this
wend
...
Совет

Этот пример не образец лучшего стиля программирования. Вообще говоря, так писать не стоит, но иногда без ожидания в цикле не обойтись.

Исходный материал Tibbo обновлён 15 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке