|
Вопрос # 257/ вопрос открыт / |
|
Здраствуйте! Мне необходимо минимум через каждые 500мкс делать опрос и установки через LPT. И также регулировать этот интервал опроса. С помощью TTimer это не получается и нет стабильных интервалов. Помогите кто чем может!
 |
Вопрос задал: CherepVM (статус: Посетитель)
Вопрос отправлен: 12 января 2007, 12:22
Состояние вопроса: открыт, ответов: 3.
|
Ответ #1. Отвечает эксперт: Alexander A. Gribanov
Посмотри в сторону QueryPerformanceFrequency(), QueryPerformanceCounter(). Ну и не забывать, что Windows не обеспечивает никаких _гарантированных_ интервалов времени. Хотя продуманное выделение критических частей в отдельные потоки с соответствующими приоритетами в большинстве случаев даёт положительный результат.
Ответ #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 (статус: 3-ий класс), 12 января 2007, 18:05 [#1]:
Да, ещё. Выставте потоку приоритет побольше.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|