Работа с LPT портом напрямую

По мотивам статьи Управление лампой через интернет собираю нечто подобное. Но столкнулся с проблемой решение которой я не могу найти уже несколько дней. Очень надеюсь на подсказку или идею… Ситуация такая:
С LPT я взял только 2 пина: D0 (2) и GND (3). Подключил через резистор на 300 Ом к оптопаре 4N35. Оптопара в моем случае выступает в роли ключа, который замыкает/размыкает внешнюю цепь (в плане поставить параллельно кнопке на стене). В роли теста управляемая цепь сейчас банальна: 5V — R(300 Ом) — светодиод — GND. То есть максимально простая схема.
Результат получается следующий: при включении ПК целевой светодиод горит, как и ожидается. Но как только управление передается ОС, светодиод гаснет и уже ничто не может его зажечь ( при перезагрузке до передачи управления ОС горит). Для работы с LPT программно я перепробовал все что нашел.
inpout32.dll как в питоне, так и в Си;
giveio.sys c pyparaller
Другие спец драйверы и спец проги.

Результат один: в порт пишется (0х378, я проверял у себя, действительно адрес этот), читается записанное значение с этой ячейки памяти, все тесты проходит на ОК, но светодиод не горит. При этом горит, пока находишься в BIOS. Пробовал в Windows 7, Windows XP, Ubuntu и на 2х разных системниках.
Уже много перечитал по этому поводу, ничего не помогает. Я явно что-то упускаю.
  • Вопрос задан
  • 17231 просмотр
Пригласить эксперта
Ответы на вопрос 5
Atxmega
@Atxmega
Посоветую 100% рабочий вариант. HiAsm
Там ставите кнопку и LPT и все.
Земли действительно 18-25, но не все! соедените их все вместе.
Для проверки поставте светодиодик и резистор.
Если возникнет проблема контролировать состояние, когда компьютер включается — обращайтесь, подскажу.
Ответ написан
Комментировать
Zak
@Zak
Рекомендую отбросить на время всю схему и тестером (мультиметром) или осциллографом измерять уровни на самом LPT в зависимости от записанных в порт значений. Проще всего это сделать, взяв примеры кода от библиотек работы с LPT.
Ответ написан
Pinsky
@Pinsky
Кофеиноникотиновая смесь в backend-код
Проверьте, никакие драйвера не отслеживают порт помимо Вас?
Ответ написан
Pinsky
@Pinsky
Кофеиноникотиновая смесь в backend-код
Сразу показалось что то не так.
3ий пин — это D1, а не земля
Земли идут с 18 по 25 контакт.
Ответ написан
Комментировать
@elgordo
Я использовал подобные решения и у меня всё работало. В BIOS можно попробовать ещё переключить режим порта, там 3 режима бывает. Под Windows 2000 и Windows XP у меня работало, но какие либы использовал, не помню. Вообще, Windows не разрешает прямого доступа к портам и нужен драйвер, который обходит это ограничение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы