Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Осмелюсь поправить member'а. 26.10.04 03:19 Число просмотров: 1862
Автор: Entity Статус: Незарегистрированный пользователь
|
> Если поправить serial.sys или сделать свой драйвер, то > конечно... > Но можно обойтись и без этого, только правильно используя > API к серийному драйверу: > > 1) Во-первых важно понимать что такое системные "тики". > Системный таймер в NT тикает примерно каждые 5-20 мс. > Конкретное значение зависит от системы, в среднем 10 мс, на > SMP немного больше 15 мс. Любые паузы (sleep-ы) и интервалы > ожидания, заказанные системе, буду выполняться с точностью > системных тиков. Частоту тиков можно поменять, вплоть до 1 > мс (см. "Multimedia Timers" в "Platform SDK"); > > 2) Чтобы сделать то, что вы хотите необходимо задействовать > асинхронные операции ввода-вывода (см. ReadFileEx() и > WriteFileEx()); > > 3) Установите таймаут по чтению на например 1 мс > (TotalReadConstantTimeout = 1). Организуйте и поддерживайте > очередь из нескольких запросов на чтение по одному байту. > Каждый запрос будет завершаться как только байт будет > принят, но не будет ждать более "системного тика". Можно > использовать другие режимы таймаутов или вовсе обойтись без > них; > > 4) Установите по-выше приоритет для вашего процесса и > треда, и все будет работать; > > Переход на IRP в режиме ядра ничем не лучше. Вам придется > запускать thread и вы лишь немного сэкономите на проходе > системных вызовов через "ворота" между user-mode и > kernel-mode; > > Реализовать вашу задачу в исходниках serial.sys достаточно > просто, и совсем другое дело интегрировать это с остальным > кодом serial.sys. Вам придется либо попотеть над пониманием > всех "заковырок" serial.sys и аккуратно "привить" вашу > функциональность, либо очень аккуратно выкусить то, что > делает serial.sys сейчас. > > Удачи!
Осмелюсь поправить member'а.
1. Приоритет процессов в данном контексте бесполезен т.к. здесь эта "сущность" недетерминистична т.к., в свою очередь, это не real-time OS.
2. Если уж Вы взялись говорить о "важности" понимании "тиков", то для честности и верности Вы должны были также сказать и о таких понятиях как "квант", "планирование", и т.д.
3. Если Вы, автор сабжа, хотите достичь стабильности в указанном временном интервале независимо от поведения ОС, категорически рекомендую Вам НЕ использовать асинхронные операции ввода-вывода.
4. Не следует быть настолько поверхностным г-н member, тем более, что Вы осмеливаетесь давать советы и тем более, что вы все-таки Member.
За сим откланиваюсь, искренне Ваш.
Пережиток прошлого.
|
|
|