Re[3]: Нестандартная работа с LPT портом
От: Alex_programmer  
Дата: 14.06.01 04:40
Оценка:
GDV>да собственно вопрос в том какой набор API при этом использовать .
GDV>я работал с СОМ портами, а как с LPT не знаю, особенно как распознавать входящие цепи
GDV>регстр состояния принтера

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

#define PortData 0x0378 // Parallel port data register address
#define PortStat (PortData+1) // Parallel port status register address
#define PortCtrl (PortData+2) // Parallel port control register address

void Strobe() // эта функция инициирует передачу байта,который уже помещен в регистр данных
{
BYTE b=_inp(PortCtrl);
// установить строб бит в 0
b = SetBit(b,5,0) ;
_outp(PortCtrl,b);
}

BYTE SetBit(BYTE Byte, BYTE nBit, BYTE value)
{
if (value)
Byte = Byte | (1<<nBit);
else
Byte = Byte &(~(1<<nBit));

return Byte;
}


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


А в Win NT/2000 нужно работать через Kernel-driver,иначе попытка обращения к портам напрямую
вызовет ошибку привилегий доступа.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.