Re[4]: Нестандартная работа с LPT портом
От: GDV Беларусь  
Дата: 14.06.01 08:47
Оценка:
Здравствуйте Alex_programmer, вы писали:


GDV>>да собственно вопрос в том какой набор API при этом использовать .

GDV>>я работал с СОМ портами, а как с LPT не знаю, особенно как распознавать входящие цепи
GDV>>регстр состояния принтера

AP>В Windows98/98 никакой API не нужен-можешь писать напрямую в порты

AP>принтера,примерно так :

AP>#define PortData 0x0378 // Parallel port data register address

AP>#define PortStat (PortData+1) // Parallel port status register address
AP>#define PortCtrl (PortData+2) // Parallel port control register address

AP>void Strobe() // эта функция инициирует передачу байта,который уже помещен в регистр данных

AP>{
AP> BYTE b=_inp(PortCtrl);
AP> // установить строб бит в 0
AP> b = SetBit(b,5,0) ;
AP> _outp(PortCtrl,b);
AP>}

AP>BYTE SetBit(BYTE Byte, BYTE nBit, BYTE value)

AP>{
AP> if (value)
AP> Byte = Byte | (1<<nBit);
AP> else
AP> Byte = Byte &(~(1<<nBit));
AP>
AP> return Byte;
AP>}


AP>// посылка байта в LPT port выглядит так

AP>void SendByte(BYTE data)
AP>{
AP> _outp(PortData,data); // заносим байт в регистр данных
AP> Strobe(); // послать байт
AP>}


AP>А в Win NT/2000 нужно работать через Kernel-driver,иначе попытка обращения к портам напрямую

AP>вызовет ошибку привилегий доступа.

согласен с таким способом работы, но меня интересует простой набор функций API,
например таких как для СОМ порта (GetCommMask,GetCommModemStatus), хотелось бы вообще узнать существуют ли такие.
напимер получить дескриптор LPT можно через CreateFile, подозреваю что записать можно в него с помощью ф-ции WriteFile, но как с цепями управления быть и менять режим работы LPT (SPP,EPP,ECP) непонятно вообще
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.