Программирование LPT
От: Batatakumba  
Дата: 13.05.04 13:44
Оценка:
Мне очень нужно подать сигнал на выходы D0 и D1 LPT порта. Можно ли это сделать простыми функциями записи в файл или функциями записи в порт. Еще один нюансик, это должно по возможности быстро работать.

13.05.04 19:40: Перенесено модератором из 'C/C++' — ПК
Re: Программирование LPT
От: esquire Россия  
Дата: 13.05.04 14:09
Оценка:
Здравствуйте, Batatakumba, Вы писали:

B>Мне очень нужно подать сигнал на выходы D0 и D1 LPT порта. Можно ли это сделать простыми функциями записи в файл или функциями записи в порт. Еще один нюансик, это должно по возможности быстро работать.


По всей видимости ты имеешь в виду из-под Виндов

Для 9х/Ме все просто: outp.
Для НТ же гемморой — придется писать драйвер. Пример см. DDK\src\general\portio.
Пилите гирю знаний, она золотая! (с) В.М.Лушин
Re[2]: Программирование LPT
От: Protey Россия  
Дата: 14.05.04 06:40
Оценка:
Здравствуйте, esquire, Вы писали:

E>Здравствуйте, Batatakumba, Вы писали:


B>>Мне очень нужно подать сигнал на выходы D0 и D1 LPT порта. Можно ли это сделать простыми функциями записи в файл или функциями записи в порт. Еще один нюансик, это должно по возможности быстро работать.


E>По всей видимости ты имеешь в виду из-под Виндов


E>Для 9х/Ме все просто: outp.

E>Для НТ же гемморой — придется писать драйвер. Пример см. DDK\src\general\portio.

А CreateFile("////lpt1", ....), не пойдёт?. ИМХО D1 и D0 есть биты данных, записать байт в файл и оппа ... Ну, тут с режимом LPT ещё может быть гимор, тут думать надо.
Re[2]: Программирование LPT
От: TarasCo  
Дата: 14.05.04 07:36
Оценка:
Может это:
http://www.junglewin.narod.ru/lpt.html
Вам пригодится....
Да пребудет с тобою сила
Re[2]: Программирование LPT
От: BK  
Дата: 14.05.04 12:43
Оценка:
E>Для НТ же гемморой — придется писать драйвер. Пример см.

Есть Giveio.sys написано Dale Roberts
Позволяет получить доступ к портам под WinNT

вместе с исходниками можно взять здесь
http://www.ddj.com/articles/1996/9605/
Direct Port I/O and Windows NT
Re[3]: Программирование LPT
От: ДимДимыч Украина http://klug.org.ua
Дата: 15.05.04 12:01
Оценка:
Здравствуйте, Protey, Вы писали:

E>>Для 9х/Ме все просто: outp.

E>>Для НТ же гемморой — придется писать драйвер. Пример см. DDK\src\general\portio.

P>А CreateFile("////lpt1", ....), не пойдёт?. ИМХО D1 и D0 есть биты данных, записать байт в файл и оппа ...


имхо потом WriteFile() не возвратит управление, пока не появится ACK.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[4]: Программирование LPT
От: TarasCo  
Дата: 17.05.04 06:12
Оценка:
ДД>имхо потом WriteFile() не возвратит управление, пока не появится ACK.

Это точно. Но можно открыть файл в асинхронном режиме, а потом по истечении нужного времени отменить операцию с помощью CancelIo

Что-нибудь типа:
WriteFile
WaitForSingleObject(overlapped.hEvent, 20);
IoCancel

Чтобы работало пошустрей, вместо WaitForSingleObject можно вставить пустой цикл с проверкой времени
Да пребудет с тобою сила
Re[3]: Программирование LPT
От: Аноним  
Дата: 18.05.04 09:01
Оценка:
Здравствуйте, Protey, Вы писали:

P>Здравствуйте, esquire, Вы писали:


E>>Здравствуйте, Batatakumba, Вы писали:


B>>>Мне очень нужно подать сигнал на выходы D0 и D1 LPT порта. Можно ли это сделать простыми функциями записи в файл или функциями записи в порт. Еще один нюансик, это должно по возможности быстро работать.


E>>По всей видимости ты имеешь в виду из-под Виндов


E>>Для 9х/Ме все просто: outp.

E>>Для НТ же гемморой — придется писать драйвер. Пример см. DDK\src\general\portio.

P>А CreateFile("////lpt1", ....), не пойдёт?. ИМХО D1 и D0 есть биты данных, записать байт в файл и оппа ... Ну, тут с режимом LPT ещё может быть гимор, тут думать надо.



Я пишу под win2000, и не один из способов кроме как написание собственного драйвера я не обнаружил, по поводу
CreateFile("LPT1", ....) возвращает нормальный хендел, но привходе в функцию WriteFile замерает там довольно на долго (до нескольких минут), и возвращает 0 как количество удачно записанных байт.
CreateFile("////lpt1", ....) возвращает хендел, FFFFFFFF, по этому дальнейшее использование смысла не имеет.

Огромное спасибо всем кто принял участие в обсуждении этой темы, особенно тем кто дал талковы линки.
Re[4]: Программирование LPT
От: Batatakumba  
Дата: 18.05.04 09:04
Оценка:
Я пишу под win2000, и не один из способов кроме как написание собственного драйвера я не обнаружил, по поводу
CreateFile("LPT1", ....) возвращает нормальный хендел, но привходе в функцию WriteFile замерает там довольно на долго (до нескольких минут), и возвращает 0 как количество удачно записанных байт.
CreateFile("////lpt1", ....) возвращает хендел, FFFFFFFF, по этому дальнейшее использование смысла не имеет.

Огромное спасибо всем кто принял участие в обсуждении этой темы, особенно тем кто дал талковы линки..
Re[5]: Программирование LPT
От: Protey Россия  
Дата: 20.05.04 09:57
Оценка:
Здравствуйте, Batatakumba, Вы писали:

B>Я пишу под win2000, и не один из способов кроме как написание собственного драйвера я не обнаружил, по поводу

B>CreateFile("LPT1", ....) возвращает нормальный хендел, но привходе в функцию WriteFile замерает там довольно на долго (до нескольких минут), и возвращает 0 как количество удачно записанных байт.

Вот, тут и заковыка, скорее всего у тебя включён один из расширенных протоколов передачи данных по LPT. Попробуй указать в БИОСЕ, что LPT режим — стандатный.

B>CreateFile("////lpt1", ....) возвращает хендел, FFFFFFFF, по этому дальнейшее использование смысла не имеет.


Сорри, "\\\\lpt1" должно быть, это == "lpt1", но, при иницировании LPT10 и выше, нужно писать со слешами, к СОМ портам это тоже относиться.
Это что-бы не париться с проверкой на номер порта.

B>Огромное спасибо всем кто принял участие в обсуждении этой темы, особенно тем кто дал талковы линки..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.