| | | | |
Работа с параллельным портом под Windows | Полный текст материала
Цитата или краткий комментарий: «... Прочитал я недавно где-то в интернете, что драйвер параллельного порта в Windows 2000 и Windows XP непосредственно поддерживает работу с устройствами в режимах EPP и ECP, и решил проверить, в чем это выражается и как это использовать. ...» |
Важно:- Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
- Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
- При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
- Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.
Добавить свое мнение.
| | Содержит полезные и(или) интересные сведения | [1] | 4 | 100% | | | | Ничего особенно нового и интересного | [2] | 0 | 0% | | | | Написано неверно (обязательно укажите почему) | [3] | 0 | 0% | | Всего проголосовали: 4 | | | Все понятно, материал читается легко | [1] | 3 | 100% | | | | Есть неясности в изложении | [2] | 0 | 0% | | | | Непонятно написано, трудно читается | [3] | 0 | 0% | | Всего проголосовали: 3 |
[LPT] [Драйверы]
Отслеживать это обсуждение
Всего сообщений: 1029-12-2009 07:48Все, что написано попробовал, но DeviceIoControl на все команды дает нули и на ваходе LPT сигнады не меняются.
У меня Windows XP Home |
|
17-11-2006 07:46Какой адрес нужно задать чтобы подать сигнал на Strobe или на DB1(LPT-порта)? |
|
22-04-2006 09:30для MVG-V70
>> что означает в примере "запись по адресу $AA или $BB"?
Это адреса EPP-режима
устройство защелкивает адрес в цикле записи адреса и использует его для идентификации данных, которые поступают в следующем цикле записи данных.
Т.е. адрес и данные как бы мультиплексируются по одним и тем же линиям. Адрес сопровождается стробом по одной линии, а данные по другой. См. режим EPP
Возможно в заблуждение вводит неточность в моем примере...
...я "забыл включить" нужный режим (шаг 2) перед тем как выполнить операции ввода-вывода (шаг 3).
Должно быть так:
const
IOCTL_IEEE1284_NEGOTIATE = $160018;
EPP_ANY = $0060; // любой из EPP
var
ReqMode, LptMode: PARCLASS_NEGOTIATION_MASK;
// 1 шаг (открыть устройство)
// 2 шаг (установить режим EPP)
ReqMode. usReadMask:= EPP_ANY;
ReqMode. usWriteMask:= EPP_ANY;
DeviceIoControl(hLpt, IOCTL_IEEE1284_NEGOTIATE,
@ReqMode, sizeof(PARCLASS_NEGOTIATION_MASK),
@LptMode, sizeof(PARCLASS_NEGOTIATION_MASK),
ret, nil);
// 3 шаг (читать писать)
// 4 шаг (закрыть устройство)
|
|
29-03-2006 16:18кроме кода IOCTL_IEEE1284_GET_MODE похоже драйвер больше ничего не понимает или не хочет выполнять
я пошел далее и посканировал остальными IOCTL кодами драйвер parport.sys
и оказалось что драйвер ко многим равнодушен
//IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO
//IOCTL_INTERNAL_PARCLASS_CONNECT
//IOCTL_INTERNAL_PARCLASS_DISCONNECT
//IOCTL_INTERNAL_LOCK_PORT
//IOCTL_INTERNAL_UNLOCK_PORT
//IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE
//IOCTL_INTERNAL_PARALLEL_PORT_FREE
//IOCTL_INTERNAL_PARCLASS_DISCONNECT
мне так кажется что под XP произошли сурьезные изменения в структурах
и почему то они не были описаны. А под 64-битную винду драйвер LPT порта не будет поставляется майкрософтом так я вычитал в MSDN
так что ... если кто то отрыл поделитесь
|
|
26-01-2006 12:33Странно, у меня на отрез отказывается работать функция DeviceIoControl.
Она ничего не возвращает.
hLPT=CreateFile("CLPT1",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
if(hLPT!=NULL)
Memo1->Lines->Add("LPT1 is opened;");
DWORD ans=DeviceIoControl(hLPT,IOCTL_IEEE1284_GET_MODE,NULL,0,&Mode,sizeof(PARCLASS_NEGOTIATION_MASK),&ret,lpOverlapped);
Memo1->Lines->Add("Device control= "+IntToStr(ans));
Memo1->Lines->Add("Ret size= "+FloatToStr(ret));
CloseHandle(hLPT);
LPT1 is opened;
Device control= 0
Ret size= 0 |
|
05-01-2006 15:53что означает в примере "запись по адресу $AA или $BB"?
что это за адреса? |
|
20-03-2005 16:02Оценку дать не могу...По мне, так уж очень заумно. Мне больше понравилась информация на сайте http://pccontrol.bib.com.ua/XpCoding/XPlpt.html. Все предельно ясно и понятно. По исходникам смотрим, как прочитать/записать в регистры порта, как считать состояние всех пинов порта. По большому счету этого вполне достаточно, чтобы работать на малых скоростях для отладки. Потом правда прийдется самому большую часть программы перенести в собственный драйвер, который еще нужно написать. |
|
16-02-2005 05:46
19-01-2005 07:31Вообще-то данные по протоколу должны появляться только на момент строба, т.е. в ходе цикла квитирования. Но реально выходной регистр LPT обычно защелкивает последний байт независимо от того - адрес это или данные. Поэтому точно на Ваш вопрос ответить не могу. Думаю проблема в программе. |
|
18-01-2005 19:43Почему при записи на LPT порту не появляются данные. Порт окрывается, согласование происходит(устанавливается режим программный EPP). |
|
|
|