powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пауза в цикле
22 сообщений из 22, страница 1 из 1
Пауза в цикле
    #33834049
Саня_OTIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как сделать паузу в цикле:

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

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

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

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

Private Sub Command1_Click()
.........
Sleep 1000
.........
End Sub
...
Рейтинг: 0 / 0
Пауза в цикле
    #33840939
Саня_OTIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Вроде заработало :) только у меня не работало с Public, я Privat писал.
...
Рейтинг: 0 / 0
Пауза в цикле
    #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
Пауза в цикле
    #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
Пауза в цикле
    #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
Пауза в цикле
    #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
Пауза в цикле
    #33856621
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoEvents может вызвать серьезные тормоза на слабых машинах если вызовов будет очень много. В данном же случае - это несущественный мизер. Как раз для паузы.

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

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

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

Пишите свой контроль или свою функцию. Используйте АПИ...
...
Рейтинг: 0 / 0
Пауза в цикле
    #35336295
Андрей Гр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
У меня похожая задача, только мне нужно задавать частоту следования импульсов. Я работаю только в Visual Basic'e и сильно ограничен во времени для изучения более мощных языков. Мне нужно управлять шаговым дигателем. Я сделал программку со Sleep'ом, но меня не устраивает достигнутая частота, поскольку получил только 10-15 Гц. Кто может помочь разобраться со Sleep'ом или предлодить другой вариант, как можно на LPT полчить приемлимую частоту следования импульсов 10-50 кГц ну или хотябы 100 Гц. Был бы рад аже ссылке.
В порт вывожу так:
Out& H378, (число для включения необходимого пина)
Sleep I
С уважением Андреу.
...
Рейтинг: 0 / 0
Пауза в цикле
    #35336309
M.A.R.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коротко:
Функция Sleep "говорит" системе снять вызывающий поток с планирования (распределения процессорного времени, грубо говоря)... Естественно Sleep лучше...
...
Рейтинг: 0 / 0
Пауза в цикле
    #35336311
M.A.R.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По крайней мере для меня... ;)
...
Рейтинг: 0 / 0
Пауза в цикле
    #35336346
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CloudofstarsСкажите. пожалуйста, как увеличить в Visual Basic, в таймере время до 2 минут?
...
Рейтинг: 0 / 0
Пауза в цикле
    #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
22 сообщений из 22, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пауза в цикле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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