AlienEmperor
5.04.2005 18:45
Собственно сабж... Мне нужно, чтобы приложение при взаимодействии через COM-порт проверяло, свободно ли опрашиваемое устройство... Если да - то новая команда, если нет - ждем сколько-то мс, затем повторяем запрос... Есть ли альтернатива Sleep(ms); потому что с ним я ловлю дикие глюки (винда тормозит, хотя Application.ProcessMessages выполняю...
Попробуй воспользоваться Таймером Windows (из компонентов - TTimer, например).
Для TTimer : устанавливаешь TTimer.Interval := n (в миллисекундах). Каждые n миллисекунд будет выполняться обработчик TTimer.OnTime (или что-то в этом духе)
Опрос (polling) - не самый предпочтительный метод взаимодействия с внешними устройствами. Win32 API позволяет обрабатывать прерывания com-порта.
AlienEmperor
11.04.2005 14:22
Цитата
Опрос (polling) - не самый предпочтительный метод взаимодействия с внешними устройствами. Win32 API позволяет обрабатывать прерывания com-порта.
А поподробнее ?
AlienEmperor
11.04.2005 14:23
Цитата
Попробуй воспользоваться Таймером Windows (из компонентов - TTimer, например).
Для TTimer : устанавливаешь TTimer.Interval := n (в миллисекундах). Каждые n миллисекунд будет выполняться обработчик TTimer.OnTime (или что-то в этом духе)
Timer это конечно хорошо... Тока вот задержки у меня и по 5 мс бывают... Таймер хорош для сотен мс, а не для единиц...
Наиболее простое решение - функция WaitCommEvent. Если необходим "неблокирующий" режим (e. g., в GUI-приложении), ожидание готовности и приём данных следует реализовать в отдельном потоке (нити, витке).
О таймерах: Win32 API предоставляет два таймера высокого разрешения: "Multimedia Timer" (группа функций timeXXX, доступна во всех реализациях Win32) и "Waitable Timer" (группа функций XXXWaitableTimer, доступна в Windows NT/2000/XP и Windows 98).
Модуль для работы с Multimedia Timer.
AlienEmperor
12.04.2005 14:47
Цитата
Если необходим "неблокирующий" режим (e. g., в GUI-приложении), ожидание готовности и приём данных следует реализовать в отдельном потоке (нити, витке).
Т.е. если через DLL-ку сделаю, работать будет нормально ?
does gabapentin cause weight gai
9.12.2021 7:06
comprar cialis en internet
nishaknapp
16.01.2023 6:30
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
30.11.2023 7:14
Очень понравился Ваш сайт. Может обменяемся ссылками ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.