Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пауза в цикле / 22 сообщений из 22, страница 1 из 1
05.07.2006, 20:04
    #33834049
Саня_OTIS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Подскажите пожалуйста, как сделать паузу в цикле:

Private Sub Command1_Click()
For n = 0 To 8
Out &H378, n
???
Next n
End Sub

Данные отправляются слишком быстро и шаговый двигатель не успевает сделать оборот.
...
Рейтинг: 0 / 0
05.07.2006, 20:35
    #33834094
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
DoEvents

Magnus
...
Рейтинг: 0 / 0
05.07.2006, 22:14
    #33834174
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
смотри апи функцию wait - задержка на некоторое время.
или Timer.
...
Рейтинг: 0 / 0
06.07.2006, 09:41
    #33834614
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Лучше Sleep, думаю.
...
Рейтинг: 0 / 0
06.07.2006, 22:32
    #33836997
Саня_OTIS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Ни на wait, ни на sleep он не реагирует. Это надо специальную библиотеку подключать?
...
Рейтинг: 0 / 0
07.07.2006, 08:36
    #33837200
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Библиотеки подключать не надо, надо просто объявит эту функцию.

Код: plaintext
1.
Public Declare Sub Sleep Lib "kernel32" ( _
  ByVal dwMilliseconds As Long)
...
Рейтинг: 0 / 0
07.07.2006, 08:56
    #33837224
hawkV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
.........
Sleep 1000
.........
End Sub
...
Рейтинг: 0 / 0
09.07.2006, 23:22
    #33840939
Саня_OTIS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Спасибо! Вроде заработало :) только у меня не работало с Public, я Privat писал.
...
Рейтинг: 0 / 0
14.07.2006, 17:24
    #33854835
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Можно и так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Pause()
   Dim PauseTime As Single
    Dim Start As Single
    Dim Finish As Single
    Dim TotalTime As Single
    
    PauseTime =  0 . 05  'По желанию !!!
    Start = Timer

    Do While Timer < Start + PauseTime
        DoEvents
    Loop

    Finish = Timer
    TotalTime = Finish - Start
   End Sub
...
Рейтинг: 0 / 0
14.07.2006, 20:41
    #33855241
Danilo K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Не! Все те способы - это шляпа!
Потому что DoEvents жрет процессор, а Sleep - "умертвщляет" прогу (ни на чо не реагирует).

Надо таг:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Declare Function WaitMessage Lib "user32" () As Long

Private Sub Form_Load()
 Dim tm#
 Const pause% =  2 
 tm = timer + pause
 Do
    WaitMessage
    DoEvents
 Loop Until timer > tm
End Sub
...
Рейтинг: 0 / 0
14.07.2006, 21:15
    #33855277
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Danilo KНе! Все те способы - это шляпа!
Потому что DoEvents жрет процессор]
Интересно как? И сколько он его жрет? И какая собственно разница если нужна пауза?
DоEvents дает возможность операционке обработать события в очереди.

Danilo K
WaitMessage


The WaitMessage function yields control to other threads when a thread has no other messages in its message queue. The WaitMessage function suspends the thread and does not return until a new message is placed in the thread's message queue.
И?
...
Рейтинг: 0 / 0
16.07.2006, 18:42
    #33856546
Danilo K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Magnus23Интересно как? И сколько он его жрет? И какая собственно разница если нужна пауза?
DоEvents дает возможность операционке обработать события в очереди.
Как жрет? Да так и ждет, что все эти две секунды паузы (или сколько длится пауза) постоянно проверяет события в очереди и загружает проц на 100%, что притесняет процессы с более низким приоритетом.
Magnus23The WaitMessage function yields control to other threads when a thread has no other messages in its message queue. The WaitMessage function suspends the thread and does not return until a new message is placed in the thread's message queue.
И?
Ну да, если приложению не поступает никаких сообщений, и драйвер этого двигателя не посылает никаких событий, то прога будет suspend. В данном случае этот вариант не подходит - пардон.
Тогда все же лучше использовать
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
- она не загружает проц, поскольку приостанавливает выполнение приложения ровно на заданное время.
...
Рейтинг: 0 / 0
16.07.2006, 19:59
    #33856621
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
DoEvents может вызвать серьезные тормоза на слабых машинах если вызовов будет очень много. В данном же случае - это несущественный мизер. Как раз для паузы.

Magnus
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
09.11.2007, 20:27
    #34929480
Пауза в цикле
А у меня беда такая, что никак не установить задержку порядка миллисекунды, ни слипами, ни паузами, ни циклами: есть какой-то порог через который не удаётся пройти с линейной скоростью, а всегда он преодолевается скачком.
Я самый грустный и тупой программист на свете.
...
Рейтинг: 0 / 0
09.11.2007, 21:39
    #34929533
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
РасквантушаА у меня беда такая, что никак не установить задержку порядка миллисекунды, ни слипами, ни паузами, ни циклами: есть какой-то порог через который не удаётся пройти с линейной скоростью, а всегда он преодолевается скачком.
Я самый грустный и тупой программист на свете.

http://support.microsoft.com/default.aspx?scid=kb;EN-US;172338
http://www.xtremevbtalk.com/showthread.php?p=546463
...
Рейтинг: 0 / 0
20.02.2008, 15:31
    #35144842
Cloudofstars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Скажите. пожалуйста, как увеличить в Visual Basic, в таймере время до 2 минут?
...
Рейтинг: 0 / 0
20.02.2008, 19:35
    #35145709
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
CloudofstarsСкажите. пожалуйста, как увеличить в Visual Basic, в таймере время до 2 минут?

Никак: The maximum, 65,535 milliseconds.

Пишите свой контроль или свою функцию. Используйте АПИ...
...
Рейтинг: 0 / 0
27.05.2008, 03:14
    #35336295
Андрей Гр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Привет всем!
У меня похожая задача, только мне нужно задавать частоту следования импульсов. Я работаю только в Visual Basic'e и сильно ограничен во времени для изучения более мощных языков. Мне нужно управлять шаговым дигателем. Я сделал программку со Sleep'ом, но меня не устраивает достигнутая частота, поскольку получил только 10-15 Гц. Кто может помочь разобраться со Sleep'ом или предлодить другой вариант, как можно на LPT полчить приемлимую частоту следования импульсов 10-50 кГц ну или хотябы 100 Гц. Был бы рад аже ссылке.
В порт вывожу так:
Out& H378, (число для включения необходимого пина)
Sleep I
С уважением Андреу.
...
Рейтинг: 0 / 0
27.05.2008, 05:01
    #35336309
M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
Коротко:
Функция Sleep "говорит" системе снять вызывающий поток с планирования (распределения процессорного времени, грубо говоря)... Естественно Sleep лучше...
...
Рейтинг: 0 / 0
27.05.2008, 05:02
    #35336311
M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
По крайней мере для меня... ;)
...
Рейтинг: 0 / 0
27.05.2008, 08:02
    #35336346
Malyav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
CloudofstarsСкажите. пожалуйста, как увеличить в Visual Basic, в таймере время до 2 минут?
...
Рейтинг: 0 / 0
27.05.2008, 08:06
    #35336348
Malyav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пауза в цикле
CloudofstarsСкажите. пожалуйста, как увеличить в Visual Basic, в таймере время до 2 минут?
В процедуре таймера, с установленным Interval=60000
Код: plaintext
1.
2.
3.
4.
5.
Static i as integer
i=i+ 1 
if i= 2  then
  i= 0 
  'код для выполнения задачи
end if
При необходимости на время задачи можно приостанавливать таймер. Я так делаю.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пауза в цикле / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]