![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Dias2004 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.1.2006 Где: Москва Репутация: нет Всего: нет |
Встала задача управления технологическим оборудованием. Необходимо выдавать данные (байты) с частотой порядка 1000 Гц.
Поскольку частота низкая, возникает соблазн решить задачу с помощью компьютера под Win XP, выставляя данные через LPT порт. Реализована выдача данных по прерыванию от таймера Win (с частотой не выше 20 Гц), работает нормально. Таймер с необходимым быстродействием можно применить аппаратный внешний, или как-то использовать таймер порта. Позволит ли ОС гарантированно обработать очередное прерывание (для выставления очередного байта данных) раньше, чем наступит следующее, то есть не медленне, чем за 1 мс? Если у кого есть опыт создания программ "в реальном времени" под Win XP - поделитесь пожалуйста. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Нет, Windows совсем не подходит для таких задач.
Для этого и писаны операционки, навроде QNX. А винда на такую точность не способна. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Свободно только в нулевое кольцо попади
![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Винда не сможет выдерживать точный интервал.
Процесс будет прерываться на несколько мс, восстанавливаться с плавающим периодом. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Имхо если поставить высокий приоритет прерывания и работать в нулевом кольце , то можно получить максимум на что расчитан встроенный таймер машины
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Высокие приоритет уменьшит периоды прерываний, но не сделает их стабильней и уж тем более не избавит от них.
Реалтайм и винда изначально не совместимы. Не тот профиль. Linux в этом плане более продуман, но и он не совершенен. Это дело QNX. Она создавалась для этого. |
|||
|
||||
allx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 1.9.2005 Репутация: нет Всего: нет |
Dias2004
Под досом будет бегать замечательно... Так что пора переходить на turbo pascal 7 )) |
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 3 Всего: 78 |
Паскаль на такие вещи вообще не горазд... Ему бы с точностью в секунду работать... А тут 1000Гц. Я соглашусь с Snowy, и скажу, что QNX вполне подойдет для решения задачи. Кстати, теперь QNX для некоммерческого использования совершенно бесплатный. И, кстати, там gcc из Unix есть, так что проблема решится быстро. -------------------- Ll 2 |
|||
|
||||
Spike |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 5.7.2005 Где: Протвино МО Репутация: нет Всего: 1 |
Здравствуйте!
А как же звуковой порт, с которого можно получить (и довольно просто) сигнал с частотой даже гораздо большей чем 1кГц (с неплохой точностью по частоте), конечно система получается как бы реал тайм. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Так то на входе. Драйвер делает буферизацию, а приложение периодически забирает пачками накопленное.
|
|||
|
||||
Spike |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 5.7.2005 Где: Протвино МО Репутация: нет Всего: 1 |
Дык, то же самое на выходе: DirectX-ом формируются последовательно два буфера и проигрываются один за другим.
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
С одним ньюансом.
Буфер находится у звуковой карты и обрабатывается ее процессором по ее правилам. Можешь попробовать передавать данные через звуковую карту ![]() |
|||
|
||||
Spike |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 5.7.2005 Где: Протвино МО Репутация: нет Всего: 1 |
Это что за "свои" правила? Правила просты и одинаковы для всех, конечно у каждой звуковухи свои ньюансы, но частоту на выходе они отрабатывают честно (что записано в буфере, то и будет проиграно), если это было бы не так музыку слушать было бы невозможно. Да можно их передавать, и передал бы, если было бы нужно. Конечно система с таким управлением не будет натурально реал тайм, т.е. время реакции системы не может быть меньше времени проигрывания двух буферов (ну при больших извращениях 1.5 ![]() Вообще мне кажется что формирование буферов и последовательное их воспроизведение - единственный способ из под Виндовс добиться чего нибудь с частотой больше 20Гц (а точнее 53мс на период) без применения нестандартных устройств. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |