Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

LPT-порт и прерывания   Найти похожие ветки 

 
MAXHO ©   (2004-01-20 17:14) [0]

Не поможет ли кто с прерываниями? Конкретно - куда подавать импульс прерывания от внешнего устройства, как организовать, чтобы программа реагировала на прерывания и куда ложить (или как указать) обработчик прерывания? Был бы очень благодарен за какой нибудь пример (исходник) с пояснениями. Моя почта vasser@krw.ru. Но можно и сюда :)


 
Slym ©   (2004-01-21 09:08) [1]

1. В Виндах на пользовательском уровне понятия прерывание НЕТ! Поэтому для твоей программы прерываний НЕТ!
2. Импульсы подавать в порт к которому подключено устройство Импульс вызовет аппаратное прерывание.

Ты можешь работать с устройством как с файлом:
f:=FileOpen("Com1",...)
FileRead(f,...)


 
N169   (2004-01-21 10:39) [2]

Подавать на вх. линию ACK.

Обрабатывать можно в [своём] [legacy] драйвере, предварительно зарегистрировав свой обработчик (см. инфу на запрос IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT в Windows DDK), обратившись к драйверу логического устройства Параллельный порт.

Уведомлять user mode приложения можно через именованные события (event с именем).

Если речь идёт о подсчёте импульсов, то разумно в своём драйвере сделать кольцевой буфер достаточной длины, в который будут записываться метки времени (чтобы получить метку времени, при обработке прерывания можно вызвать KeQueryPerformanceCounter()), а внешнее приложение сможет их считывать и обрабатывать.


 
MAXHO ©   (2004-01-21 15:39) [3]

еххх....ну не знаю я как писать драйвера, даже не знаю на чём :)


 
tesseract ©   (2004-01-22 10:11) [4]

есть нмало копонентов которые работают наплевав на стандарты IEEE1284 - прямой записью в порт - ну почитайте вы наконец форумы до задавания глупых вопросов!!!!


 
Digitman ©   (2004-01-24 13:51) [5]


> LPT-порт и прерывания [D6, WinXP]


см.
CreateFile("LPT1", ..., FILE_FLAG_OVERLAPPED, ..)

и никакие "прерывания" не нужны будут - в этом режиме система сама обрабатывает прерывания порта и извещает тебя о факте их возникновения вызовом указанной тобой overlap-функции


 
Digitman ©   (2004-01-24 13:53) [6]

FILE_FLAG_OVERLAPPED
Instructs the operating system to initialize the object, so ReadFile, WriteFile, ConnectNamedPipe, and TransactNamedPipe operations that take a significant amount of time to process return ERROR_IO_PENDING. When the operation is finished, an event is set to the signaled state.
When you specify FILE_FLAG_OVERLAPPED, the ReadFile and WriteFile functions must specify an OVERLAPPED structure. That is, when FILE_FLAG_OVERLAPPED is specified, an application must perform overlapped reading and writing.
When FILE_FLAG_OVERLAPPED is specified, the operating system does not maintain the file pointer. The file position must be passed as part of the lpOverlapped parameter (pointing to an OVERLAPPED structure) to the ReadFile and WriteFile functions.
This flag also enables more than one operation to be performed simultaneously with the handle (a simultaneous read and write operation, for example).



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
6-1074880350
kor@l
2004-01-23 20:52
2004.04.04
Twebbrowser


1-1079215766
Димка
2004-03-14 01:09
2004.04.04
Принтер


11-1059547007
_Polymorphic_
2003-07-30 10:36
2004.04.04
Как встроить компоненты редактирования в KOLmdvXLGrid?


1-1079441862
zac
2004-03-16 15:57
2004.04.04
Как удалить нарисованное?


3-1078210812
aga123
2004-03-02 10:00
2004.04.04
GUID в поле таблицы DBF