Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 257

/ вопрос открыт /

Здраствуйте! Мне необходимо минимум через каждые 500мкс делать опрос и установки через LPT. И также регулировать этот интервал опроса. С помощью TTimer это не получается и нет стабильных интервалов. Помогите кто чем может!

CherepVM Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: CherepVM (статус: Посетитель)
Вопрос отправлен: 12 января 2007, 12:22
Состояние вопроса: открыт, ответов: 3.

Ответ #1. Отвечает эксперт: Alexander A. Gribanov

Посмотри в сторону QueryPerformanceFrequency(), QueryPerformanceCounter(). Ну и не забывать, что Windows не обеспечивает никаких _гарантированных_ интервалов времени. Хотя продуманное выделение критических частей в отдельные потоки с соответствующими приоритетами в большинстве случаев даёт положительный результат.

Ответ отправил: Alexander A. Gribanov (статус: 2-ой класс)
Время отправки: 12 января 2007, 16:50

Ответ #2. Отвечает эксперт: Knjazev

Здравствуйте, Цопа Владимир Милузиевич!
Попробуйте зациклить в ПОТОКЕ с использованием вместо таймера либо Sleep(500), либо (что лучше):
...
var
h: THandle;
begin
...
h := CreateEvent(nil,true,false,'');
WaitForSingleObject(h,500);
CloseHandle(h);
...

Ответ отправил: Knjazev (статус: 3-ий класс)
Время отправки: 12 января 2007, 17:05

Ответ #3. Отвечает эксперт: Вадим К

Здравствуйте, Цопа Владимир Милузиевич!
Чёто мне кажеться, вы на неправильном пути. Дело в том, что таким способом при всём желании вы не получите стабильных интервалов. Даже если генератор на мамке позволит это (не путать с тактовым генераторм проца! У порта свой контролер.) Например некоторые СОМ порты не могут преодолеть скорость в 256кб. Вдобавок, при всём старании Windows не гарантирует вам, что она вовремя отправит запрос. Она не операционка реального времени. Выходов здесь 3
1)Использовать операционку реального времени, QNX. Но тогда прийдётся забыть о Делфи, хотя есть FreePascal на котором под неё можно писать, но я не знаю, позволяет ли он корректно работать в режиме реального времени.
2) Использовать контролер. Теперь вы просто отдаёте ему комманды по мере необходимости, а он сам всё разруливает. По мере необходимости отсылает вам данные. Возможно прийдётся перейти на USB порт.
3)Использовать не полноценный контролер, а просто схему с генератором и несколькими регистрами.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 12 января 2007, 17:06


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 12 января 2007, 18:05; участников в обсуждении: 1.
Knjazev

Knjazev (статус: 3-ий класс), 12 января 2007, 18:05 [#1]:

Да, ещё. Выставте потоку приоритет побольше.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:34
Выполнено за 0.02 сек.