Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
счетчики и таймеры
StrangerДата: Четверг, 14 Декабря 2006, 15:53 | Сообщение # 1
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
некоторые непонядки у меня есть. в хелпах ответа на них не нашел. Есть в ММБ возможность измерения временных интервалов в миллисекундах? Если есть, то как построить такой "секундомер"? спасибо за помощь заранее.
 
YURIYДата: Четверг, 14 Декабря 2006, 16:06 | Сообщение # 2
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
ScriptTimer вам в помощь!

В старте страницы пропишите:

Code
RunScript("Script")

В созданном вами объекте Script:

Code
a=a+1
a$=CHAR(a)
LoadText("Text","a$")
ScriptTimer("Script","1")

Ну и Text создайте.

Удачи!



Вечная память Андрею Сергееву!


Сообщение отредактировал toizy - Четверг, 14 Декабря 2006, 19:56
 
toizyДата: Четверг, 14 Декабря 2006, 16:07 | Сообщение # 3
Группа: Удаленные





Использовать таймеры.
Программа позволяет использовать три таймера. Цитата из справки:
Code

ScriptTimer("TimerA=ScriptLabel1","TimeDelay")  
ScriptTimer("TimerB=ScriptLabel2","TimeDelay")  
ScriptTimer("TimerC=ScriptLabel3","TimeDelay")  

Более подробно читай в самой справке, на русском.

Добавлено (14 Декабря 2006, 16:07)
---------------------------------------------
Вот блин! Опять опоздал...

 
YURIYДата: Четверг, 14 Декабря 2006, 16:11 | Сообщение # 4
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (toizy)
Вот блин! Опять опоздал...

Наоборот: я всегда опаздываю smile Но так как сегодня мой день, извини уж wink



Вечная память Андрею Сергееву!
 
as-masterДата: Четверг, 14 Декабря 2006, 17:48 | Сообщение # 5
Группа: Удаленные





Quote (Yuriy)
В созданном вами объекте Script:

a=a+1
a$=CHAR(a)
LoadText("Text","a$")
ScriptTimer("Script","1")

Вместо:

Code
a$=CHAR(a)   
LoadText("Text","a$")

Можно просто:

Code
DisplayValue("Text","a")

На одну переменную меньше :)

Сообщение отредактировал as-master - Четверг, 14 Декабря 2006, 17:49
 
StrangerДата: Четверг, 14 Декабря 2006, 18:22 | Сообщение # 6
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
To As-master... Ну эт понятно, насчет displayValue. Переменных в проге и без того хватает :). Кстати, счетчик не совсем корректный, "врет" ~ раз в десять...
 
YURIYДата: Четверг, 14 Декабря 2006, 18:53 | Сообщение # 7
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Stranger)
Кстати, счетчик не совсем корректный, "врет" ~ раз в десять...

В зависимости от процессора. Здесь надо использовать системное время Windows. Могу модуль сделать.



Вечная память Андрею Сергееву!
 
StrangerДата: Четверг, 14 Декабря 2006, 19:21 | Сообщение # 8
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
Quote (Yuriy)
В зависимости от процессора. Здесь надо использовать системное время Windows. Могу модуль сделать.

ProcFreq возвращает 2393 МГц. Разве в ММБ есть возможность пользования API?
 
YURIYДата: Четверг, 14 Декабря 2006, 19:44 | Сообщение # 9
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Stranger)
Разве в ММБ есть возможность пользования API?

Нет, конечно! Я же вам написал:

Quote (Yuriy)
Могу модуль сделать.

А он будет отображать системное время! Хотя, это плохой вариант... Ведь вы сможете получать от модуля счётчик через буфер обмена, а это туфта... Я отваливаю от проблемы smile Извините...



Вечная память Андрею Сергееву!
 
toizyДата: Четверг, 14 Декабря 2006, 20:05 | Сообщение # 10
Группа: Удаленные





Для того, чтобы таймер был точным, нужно создавать отдельный поток, в котором запускать уже через api мультимедийный таймер. Это задача не для плагинов и модулей. В этом случае даже плагин будет врать, так устроена MMB. А так - таймер базируется на виндах, отчего погрешность всегда будет составлять до 40 мс.

Смирись.

 
YURIYДата: Четверг, 14 Декабря 2006, 20:14 | Сообщение # 11
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (toizy)
Смирись.

И я о том же... cry



Вечная память Андрею Сергееву!
 
as-masterДата: Пятница, 15 Декабря 2006, 15:16 | Сообщение # 12
Группа: Удаленные





Таймер, построенный на команде ScriptTimer(), действительно базируется на виндах
и потому его нельзя применять в случаях. когда нужно иметь точное время.
В этом случае нужно использовать системное время компьютера, тогда счетчик будет точный.
Но... только с точностью до секунды, ибо в компе миллисекунды отсутствуют smile

Однако, когда нужно мерить именно миллисекунды в пределах от 1 до нескольких секунд,
с такой погрешностью вполне можно смириться.

 
StrangerДата: Пятница, 15 Декабря 2006, 16:46 | Сообщение # 13
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
Quote (as-master)
Но... только с точностью до секунды, ибо в компе миллисекунды отсутствуют

насколько я помню, какая-то из системных функций винды считает аж микроскунды. И на Си - простом Си, не визуальном smile (с подключением windows.h) есть возможность их достать.
ЗЫ. Да, опытным путем (секундомером в руках) установлено,
Quote (as-master)
В... объекте Script:

a=a+1

вместо единицы вводится слагаемое 16. Погрешность - 10 мс на 10 с, т.е. 0,1%. Т.к. мои измерения производятся в пределах 1-3 мс, такая точность вполне достаточна. Спасибо всем большое за живое участие.
 
toizyДата: Пятница, 15 Декабря 2006, 22:16 | Сообщение # 14
Группа: Удаленные





Пардон, ошибся. Погрешность измерения составляет не 40 мс, а 55, что связано с аппаратными особенностями компьютера. Т.е таймер привязан к системным часам, отчего и погрешность. Любой интервал для такого таймера всегда кратен 55 миллисекундам.
Quote (Stranger)
насколько я помню, какая-то из системных функций винды считает аж микроскунды

Эта функция - timeSetEvent. Она пускает таймер с частотой до 1 мс и даже меньше. Для того, чтобы использовать её в программе, нужна процедура обратного вызова, в этом и прикол. Мы своими плагинами не сможем сделать такой таймер, поскольку ммв общается с плагинами односторонне - pluginset, pluginget, а вот плагин ничего не может посылать в программу. Только клавиатурные сочетания, но это лажа...


Сообщение отредактировал toizy - Пятница, 15 Декабря 2006, 22:17
 
Oleg_88Дата: Суббота, 07 Января 2012, 13:04 | Сообщение # 15
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
Из проекта, тремя переменными записываю в блокнот время секундомера, строка за строкой. Получается много строк, хочу сложить все показания и посчитать как бы общее время.
С чего начать, помогите.

Добавлено (07 Январь 2012, 13:04)
---------------------------------------------
Так спокойно. Даже ни кто не скажет, ИДИ СПРАВКУ ЧИТАЙ. :) Никто не знает как посчитать или сюда на страницу месяцами вообще ни кто не заходит.

 
DEMBELДата: Суббота, 07 Января 2012, 13:06 | Сообщение # 16
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
попробуйте возмите начальное и конечные значения времени и посчитайте разницу вот этим



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Oleg_88Дата: Воскресенье, 08 Января 2012, 16:58 | Сообщение # 17
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
Наверно можно и разницу посчитать, но я решил попробывать сделать немного подругому. Я записал во внедрённом фаиле показания секунд, получилось так 0+15+23+34... теперь хочу содержимое строки сложить, но незнаю как это вставить в скрипт, и результат присвоить к переменной.
 
DEMBELДата: Воскресенье, 08 Января 2012, 18:42 | Сообщение # 18
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
мм... складывать между собой промежуточные результаты это заведомо чревато ошибками на каждом шагу. На самом деле, подобные вещи делаются именно вычитанием начального времени из конечного.



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Oleg_88Дата: Воскресенье, 08 Января 2012, 20:42 | Сообщение # 19
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
Да, я так и сделал, посчитал разницу, а результаты записал в текст, теперь хотел все разницы сложить и получить общее количество секунд.
 
  • Страница 1 из 1
  • 1
Поиск: