Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа Real Time под Windows, Возможно ли это и с какой точностью? 
V
    Опции темы
Dias2004
Дата 26.1.2006, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 24.1.2006
Где: Москва

Репутация: нет
Всего: нет



Встала задача управления технологическим оборудованием. Необходимо выдавать данные (байты) с частотой порядка 1000 Гц.
Поскольку частота низкая, возникает соблазн решить задачу с помощью компьютера под Win XP, выставляя данные через LPT порт.

Реализована выдача данных по прерыванию от таймера Win (с частотой не выше 20 Гц), работает нормально.

Таймер с необходимым быстродействием можно применить аппаратный внешний, или как-то использовать таймер порта.
Позволит ли ОС гарантированно обработать очередное прерывание (для выставления очередного байта данных) раньше, чем наступит следующее, то есть не медленне, чем за 1 мс?

Если у кого есть опыт создания программ "в реальном времени" под Win XP - поделитесь пожалуйста.
PM MAIL   Вверх
Snowy
Дата 26.1.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Нет, Windows совсем не подходит для таких задач.
Для этого и писаны операционки, навроде QNX.
А винда на такую точность не способна.
PM MAIL   Вверх
Romikgy
Дата 26.1.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Свободно только в нулевое кольцо попади smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 26.1.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Винда не сможет выдерживать точный интервал.
Процесс будет прерываться на несколько мс, восстанавливаться с плавающим периодом.

PM MAIL   Вверх
Romikgy
Дата 26.1.2006, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Имхо если поставить высокий приоритет прерывания и работать в нулевом кольце , то можно получить максимум на что расчитан встроенный таймер машины


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 26.1.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Высокие приоритет уменьшит периоды прерываний, но не сделает их стабильней и уж тем более не избавит от них.
Реалтайм и винда изначально не совместимы.
Не тот профиль.
Linux в этом плане более продуман, но и он не совершенен.
Это дело QNX. Она создавалась для этого.
PM MAIL   Вверх
allx
Дата 26.1.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 1.9.2005

Репутация: нет
Всего: нет



Dias2004

Под досом будет бегать замечательно... Так что пора переходить на turbo pascal 7 ))
PM MAIL   Вверх
Guedda
Дата 27.1.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 3
Всего: 78



Цитата(allx @ 26.1.2006, 19:00)
Так что пора переходить на turbo pascal 7 ))

Паскаль на такие вещи вообще не горазд... Ему бы с точностью в секунду работать... А тут 1000Гц.
Я соглашусь с Snowy, и скажу, что QNX вполне подойдет для решения задачи.
Кстати, теперь QNX для некоммерческого использования совершенно бесплатный. И, кстати, там gcc из Unix есть, так что проблема решится быстро.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Spike
Дата 6.2.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 5.7.2005
Где: Протвино МО

Репутация: нет
Всего: 1



Здравствуйте!
А как же звуковой порт, с которого можно получить (и довольно просто) сигнал с частотой даже гораздо большей чем 1кГц (с неплохой точностью по частоте), конечно система получается как бы реал тайм.

PM MAIL   Вверх
Snowy
Дата 6.2.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Так то на входе. Драйвер делает буферизацию, а приложение периодически забирает пачками накопленное.
PM MAIL   Вверх
Spike
Дата 6.2.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 5.7.2005
Где: Протвино МО

Репутация: нет
Всего: 1



Дык, то же самое на выходе: DirectX-ом формируются последовательно два буфера и проигрываются один за другим.
PM MAIL   Вверх
Snowy
Дата 6.2.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



С одним ньюансом.
Буфер находится у звуковой карты и обрабатывается ее процессором по ее правилам.
Можешь попробовать передавать данные через звуковую карту smile
PM MAIL   Вверх
Spike
Дата 6.2.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 5.7.2005
Где: Протвино МО

Репутация: нет
Всего: 1



Цитата(Snowy @ 6.2.2006, 14:44 Найти цитируемый пост)

Буфер находится у звуковой карты и обрабатывается ее процессором по ее правилам.

Это что за "свои" правила? Правила просты и одинаковы для всех, конечно у каждой звуковухи свои ньюансы, но частоту на выходе они отрабатывают честно (что записано в буфере, то и будет проиграно), если это было бы не так музыку слушать было бы невозможно.
Цитата(Snowy @ 6.2.2006, 14:44 Найти цитируемый пост)

Можешь попробовать передавать данные через звуковую карту 

Да можно их передавать, и передал бы, если было бы нужно.

Конечно система с таким управлением не будет натурально реал тайм, т.е. время реакции системы не может быть меньше времени проигрывания двух буферов (ну при больших извращениях 1.5 smile ).
Вообще мне кажется что формирование буферов и последовательное их воспроизведение - единственный способ из под Виндовс добиться чего нибудь с частотой больше 20Гц (а точнее 53мс на период) без применения нестандартных устройств.
PM MAIL   Вверх
Snowy
Дата 6.2.2006, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Spike @ 6.2.2006, 16:05 Найти цитируемый пост)
Это что за "свои" правила

Банально - выводом звука занимается звуковая карта, а не операционка.
Операционка только снабжает звуковуху данными, а та их воспроизводит, согласно установленных параметров.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1260 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.