Как программно работать с LPT портом?

Nugos

Работаю в среде Visual Studio C++.

yolki

поищи paraport, например
Я работал с ним из Delphi
сейчас, найду - у себя расшарю

yolki

ftp://homestead.hackers/setups_m/Paraport
Он устанавливает псевдо-драйвер, через который можно удобно работать непосредственно с каждой ногой LPT-порта

Nugos

Это COM компонент, иди dll?
Можешь его на форум выложить, а то я не в локалке.

yolki

это Dll.
http://www.paraport.net/

Nugos

Спасибо.
А есть какие-нибудь враперы, позволяющие не устанавливать драйвер, а работать на прямую с LPT?

Dasar

Что конкретно тебе нужно сделать с lpt-портом?

yolki

Напрямую - только в DOS/Win98.
ну ещё в Linux /dev/lp...
А в остальных NT-based - "DDK в зубы и вперёд!" (c)

Nugos

Считать значения с ножек, больше ничего.
Еще желательно, чтобы не было никаких внешних файлов, и ничего не нужно было устанавливать.
Я кое-чего нарыл о функции CreateFile. Но пока еще не нашел достаточного количества информации чтобы ее использовать.

evgen5555

Не проще ли сделать
int fd = open("LPTx", blablabla);
?

yolki

это не даст считать значение ног

STROBE
LINEFEED
INIT
SELECTIN
DIRECTION

А также всякие хитрые настройки про скорость порта, например.

Nugos

Ты так делал? Или предполагаешь, что должно работать?
И можно ли пример программки.

yolki

так можно писать в порт, но не читать из него.

Nugos

Мне особые навороты не нужны, достаточно чтения ножек данных.

yolki

чем не устраивает враппер?

Nugos

А можно ли читать с помощью, CreateFile?

Nugos

Не хотелось бы заниматся установкой. Программа для которой нужно чтение LPT работает без установки.

yolki

В общем, повторю:
"DDK в зубы и вперёд" (с)
Установи MSDN (неужели не установлен ?! ) и читай:
Win32 and COM Development -> Driver Development Kit -> Parallel Ports and Devices

Nugos

Подозреваю, что DDK для данной задачи будет многовато. Сейчас прорабатываю тему CreateFile, вроде инете говорят, что можно ее использовать.

yolki

Подсказываю: IoCreateDevice
PS: в DDK про parallel port немного - я уже взботнул.

yolki

А тебе один раз данные считать из LPT? = 1байт
Или несколько?
Если несколько - тут надо быть осторожным. дождаться, пока STROBE не сработает - что данные можно считывать.

Nugos

Во чего нашел
http://junglewin.narod.ru/lpt.html
Вот чего там по моей теме:
2.1 Открытие и закрытие порта.
Тут все просто, открываем доступ к устройству. Это осуществляется посредством функции CreateFile c параметром LPTn, где LPTn существующее имя для объекта устройства:
HANDLE hLpt = CreateFile( "LPT1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
0, NULL );
При удачном завершении операции будет возвращен файловый дескриптор, через который мы и будем управлять параллельным портом. Остается только добавить, что после использования следует освободить порт посредством вызова CloseHandle(hLpt).
2.2 Запись данных и чтение
Запись и чтение происходит как при обращении к обычному файлу. Для этого используются функции WriteFile и ReadFile.

Nugos

Это не принципиально. Для меня важно лишь изменеие данных на ножках, дублирование не проблема.

Dasar

> Считать значения с ножек, больше ничего.
С каких?
Только с data-ножек? или с системных тоже?
если только data, то OpenFile("LPT", ...) и вперед
Оставить комментарий
Имя или ник:
Комментарий: