счетчики и таймеры
|
|
Stranger | Дата: Четверг, 14 Декабря 2006, 15:53 | Сообщение # 1 |
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
| некоторые непонядки у меня есть. в хелпах ответа на них не нашел. Есть в ММБ возможность измерения временных интервалов в миллисекундах? Если есть, то как построить такой "секундомер"? спасибо за помощь заранее.
|
|
| |
YURIY | Дата: Четверг, 14 Декабря 2006, 16:06 | Сообщение # 2 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| ScriptTimer вам в помощь! В старте страницы пропишите: В созданном вами объекте 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) | Вот блин! Опять опоздал... | Наоборот: я всегда опаздываю Но так как сегодня мой день, извини уж
Вечная память Андрею Сергееву!
|
|
| |
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) | Могу модуль сделать. | А он будет отображать системное время! Хотя, это плохой вариант... Ведь вы сможете получать от модуля счётчик через буфер обмена, а это туфта... Я отваливаю от проблемы Извините...
Вечная память Андрею Сергееву!
|
|
| |
toizy | Дата: Четверг, 14 Декабря 2006, 20:05 | Сообщение # 10 |
Группа: Удаленные
| Для того, чтобы таймер был точным, нужно создавать отдельный поток, в котором запускать уже через api мультимедийный таймер. Это задача не для плагинов и модулей. В этом случае даже плагин будет врать, так устроена MMB. А так - таймер базируется на виндах, отчего погрешность всегда будет составлять до 40 мс. Смирись.
|
|
| |
YURIY | Дата: Четверг, 14 Декабря 2006, 20:14 | Сообщение # 11 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| И я о том же...
Вечная память Андрею Сергееву!
|
|
| |
as-master | Дата: Пятница, 15 Декабря 2006, 15:16 | Сообщение # 12 |
Группа: Удаленные
| Таймер, построенный на команде ScriptTimer(), действительно базируется на виндах и потому его нельзя применять в случаях. когда нужно иметь точное время. В этом случае нужно использовать системное время компьютера, тогда счетчик будет точный. Но... только с точностью до секунды, ибо в компе миллисекунды отсутствуют Однако, когда нужно мерить именно миллисекунды в пределах от 1 до нескольких секунд, с такой погрешностью вполне можно смириться.
|
|
| |
Stranger | Дата: Пятница, 15 Декабря 2006, 16:46 | Сообщение # 13 |
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
| Quote (as-master) | Но... только с точностью до секунды, ибо в компе миллисекунды отсутствуют | насколько я помню, какая-то из системных функций винды считает аж микроскунды. И на Си - простом Си, не визуальном (с подключением 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
| Да, я так и сделал, посчитал разницу, а результаты записал в текст, теперь хотел все разницы сложить и получить общее количество секунд.
|
|
| |