Помощь - Поиск - Пользователи - Календарь
Полная версия: Альтернатива Delay в Delphi
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
AlienEmperor
Собственно сабж... Мне нужно, чтобы приложение при взаимодействии через COM-порт проверяло, свободно ли опрашиваемое устройство... Если да - то новая команда, если нет - ждем сколько-то мс, затем повторяем запрос... Есть ли альтернатива Sleep(ms); потому что с ним я ловлю дикие глюки (винда тормозит, хотя Application.ProcessMessages выполняю...
trminator
Попробуй воспользоваться Таймером Windows (из компонентов - TTimer, например).

Для TTimer : устанавливаешь TTimer.Interval := n (в миллисекундах). Каждые n миллисекунд будет выполняться обработчик TTimer.OnTime (или что-то в этом духе)
xds
Опрос (polling) - не самый предпочтительный метод взаимодействия с внешними устройствами. Win32 API позволяет обрабатывать прерывания com-порта.
AlienEmperor
Цитата
Опрос (polling) - не самый предпочтительный метод взаимодействия с внешними устройствами. Win32 API позволяет обрабатывать прерывания com-порта.


А поподробнее ?
AlienEmperor
Цитата
Попробуй воспользоваться Таймером Windows (из компонентов - TTimer, например).

Для TTimer : устанавливаешь TTimer.Interval := n (в миллисекундах). Каждые n миллисекунд будет выполняться обработчик TTimer.OnTime (или что-то в этом духе)



Timer это конечно хорошо... Тока вот задержки у меня и по 5 мс бывают... Таймер хорош для сотен мс, а не для единиц...
xds
Наиболее простое решение - функция WaitCommEvent. Если необходим "неблокирующий" режим (e. g., в GUI-приложении), ожидание готовности и приём данных следует реализовать в отдельном потоке (нити, витке).

О таймерах: Win32 API предоставляет два таймера высокого разрешения: "Multimedia Timer" (группа функций timeXXX, доступна во всех реализациях Win32) и "Waitable Timer" (группа функций XXXWaitableTimer, доступна в Windows NT/2000/XP и Windows 98).
xds
Модуль для работы с Multimedia Timer.
AlienEmperor
Цитата
Если необходим "неблокирующий" режим (e. g., в GUI-приложении), ожидание готовности и приём данных следует реализовать в отдельном потоке (нити, витке).


Т.е. если через DLL-ку сделаю, работать будет нормально ?
does gabapentin cause weight gai
comprar cialis en internet
nishaknapp
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. 3 Casino Games You Need to Play Now
WilliamHox
Очень понравился Ваш сайт. Может обменяемся ссылками ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.