Здравствуйте, Demon, Вы писали:
D>Господа!
D>Вот кусок ТЗ D>"Алгоритм записи: D>CLK 2 нога разъёма LPT – порта. D>DATA 3 нога разъёма LPT – порта. D>Исходно состояние выводов CLK и DATA высокое. Падение фронта CLK означает начало передачи информации в прибор. Низкий уровень CLK держится 0.1 мсек. В течение этого времени надо установить старший бит байта данных на выводе DATA. Далее (по истечении 0.1 мсек) состояние CLK переводится в высокое и ждём ещё 0.1 мсек. Затем процесс повторяется для остальных битов."
D>Вопросы: D>1. Что мне писать в 378-ой порт? (или в другой?) D>2. Реально ли перещелкивать с такой частотой значение в порту? Чего-то я не припомню в винде таймера точнее 1 мсек.
2 нога это D0 регистра адреса, а 3 нога — D1. Следовательно, чтобы выставить CLK-->1, надо ставить в выводимом байте разряд 0, соотв., DATA разряд 1.
Насчёт 0.1 мс надо бы просить разработчиков ТЗ уточнить, это строго "0.1 мс", или "не менее 0.1 мс"
Вообще можно сделать такую задержку. Самый простой вариант — читать тот же порт 378 в цикле.
На одно чтение приходится примерно 0.6-0.8 мкс.
Более правильный способ — KeDelayExecutionThread() внутри драйвера.