Здравствуйте Alex_programmer, вы писали:
AP>Hi GDV, вы писали:
GDV>>кто-нибудь работал с LPT портом нестандартным образом, т.е. подключал к нему свои устройства, напрочь непохожие на принтер.
AP>А какие конкретно устройства ты хочешь подключить?
AP>Я подключал разную осветительную аппаратуру,мошные источники света(разумеется не AP>напрямую , а через буферную схему).
AP>В принципе, можно подключить все что угодно.
да собственно вопрос в том какой набор API при этом использовать .
я работал с СОМ портами, а как с LPT не знаю, особенно как распознавать входящие цепи
регстр состояния принтера
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);
}
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) непонятно вообще
Здравствуйте GDV, вы писали:
GDV>Здравствуйте 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>>вызовет ошибку привилегий доступа.
GDV>согласен с таким способом работы, но меня интересует простой набор функций API, GDV>например таких как для СОМ порта (GetCommMask,GetCommModemStatus), хотелось бы вообще узнать существуют ли такие. GDV>напимер получить дескриптор LPT можно через CreateFile, подозреваю что записать можно в него с помощью ф-ции WriteFile, но как с цепями управления быть и менять режим работы LPT (SPP,EPP,ECP) непонятно вообще
да еще есть вопрос: может в сети есть сайты или форумы где общается народ, который пишет драйвера под девайсы для WIN, разумеется на русском языке. мои личные поиски таких не принесли успеха, создается впечатление, что наш народ этим не интересуется, либо трудно для них это
Здравствуйте GDV, вы писали:
GDV>>согласен с таким способом работы, но меня интересует простой набор функций API, GDV>>например таких как для СОМ порта (GetCommMask,GetCommModemStatus), хотелось бы вообще узнать существуют ли такие. GDV>>напимер получить дескриптор LPT можно через CreateFile, подозреваю что записать можно в него с помощью ф-ции WriteFile, но как с цепями управления быть и менять режим работы LPT (SPP,EPP,ECP) непонятно вообще
GDV>да еще есть вопрос: может в сети есть сайты или форумы где общается народ, который пишет драйвера под девайсы для WIN, разумеется на русском языке. мои личные поиски таких не принесли успеха, создается впечатление, что наш народ этим не интересуется, либо трудно для них это
-----------------------------------------------------------------------------------------------------
Может я не прав , но что-то ни разу не встречал функции GetCommMask,GetCommModemStatus и т.д.
в связи с LPT портом.Очевидно, они для этого не предназначены.
А в Win2000 при работе с kernel-драйвером все равно идет прямое обращение к регистрам LPT,
поэтому я думаю,что ничего лучше еще не изобрели.
Насчет русских сайтов не знаю, а англоязычных по этой теме полно.Это не значит , что наш народ
этим не интересуется, просто многие читают и пишут по-английски.
Re: Нестандартная работа с LPT портом
От:
Аноним
Дата:
13.03.03 07:36
Оценка:
Здравствуйте, GDV, Вы писали:
GDV>кто-нибудь работал с LPT портом нестандартным образом, т.е. подключал к нему свои устройства, напрочь непохожие на принтер.
Здравствуйте ...
Меня тоже интересует вопрос подкл нестандартных девайсов к ЛПТ порту .. что — то посоветовать можете .. ???
Не по программированию а по железу ... ???
Мой Маил V_ZhiK@ukr.net буду очень признателен ... !!!
Re[3]: Нестандартная работа с LPT портом
От:
Аноним
Дата:
23.04.04 03:33
Оценка:
GDV>>>кто-нибудь работал с LPT портом нестандартным образом, т.е. подключал к нему свои устройства, напрочь непохожие на принтер.
************************************************************************************
Программа для управления LPT портом с 17 битным анализатором протокола обмена данными устройств использующих параллельный порт компьютера. Написана под Windows и имеет следующие возможности:
1. Три независимых канала, с помощью которых реализуется: ввод адреса порта (регистра), автоматическое чтение данных с порта, запись данных в порт в формате HEX или как десятичное число; отображение данных в форматах bite, word, Dword.
2. Отображение состояния каждого из 17 битов LPT порта и управление выходными битами с Pin клавиатуры.
3. Девять программируемых порт / данные банков памяти.
4. 17 канальный (бит на канал) анализатор – осциллограф логического состояния каждого бита (1/0) с возможностью установки скорости анализа (по времени), синхронизации по любому из 17 бит как по высокому уровню (1) так и по низкому (0), счетчик переданных данных по каждому биту и др. функции для удобной проверки и настройки цифровых устройств подключенных к компьютеру.
5. Может быть использованна в качестве цифрового (1/0) многоканального осциллографа, а также для управления внешними устройствами посредством компьютера.