PDA

Просмотр полной версии : Как послать сигналы с порта джойстика на LPT порт PC в эмуляторе? И в каком?



Rembo
30.06.2008, 12:18
Когда-то написал на Бейсике прогу. Она через первый порт BB55-ой (на джойстик который обычно) управляла через оптотиристоры елочными гирляндами. (4-мя или 6-ю каналами, было 2 версии.) На компе она работает ок, а вот как подать сигналы в эмуляторе? На потр LPT лучше всего было бы.

Вот сама прога. Попробуйте, если хотите. Только, если сбросили брейком, запускайте через go to 1, а не run!
http://www.divshare.com/download/4834773-f24

Прога позволяет управлять через соответствующую схему гирляндами, лампами подсветки и т.д. У нее 10 забитых программ по 64 шага каждая, алгоритм работы каждой можно менять, регулируемая скорость проигрывания эффектов, паузы и автопереходы. Кто заинтересуется, могу рассказать подробнее. Схемы упраления есть в инете, но тоже могу нарисовать.

Но главное - КАК ЗАСТАВИТЬ ЕЁ РАБОТАТЬ НА PC? Т.е посылать команды в порт, так то она сама по себе работает! Перепробовал эмуляторов 10.
Кстати, на PC стоит XP.

AS
30.06.2008, 14:54
Боюсь на XP ни как так как там должен быть соответсвующий дравер для LPT.
Так как любое обращение к LPT не из Ring 0 вызовет исключение и система станет ругатся. Самое оптимальное это Win 98 там реализация Ring 0 хуже сделана там можно и напрямую к порту обращатся. И я не уверен что есть эмуляторы которые без последников смогут напрямую управлять LPT портом.

Rembo
30.06.2008, 15:02
Да я тоже не уверен, что XP пустит, но все-таки... Может, в каком-нибудь эмуляторе есть плагинчик какой? Или его можно как-то написать...
Что XP вредная к доступу к LPT, я в курсе. Вот, хотя бы:
http://www.pcports.ru/Articles.php
Но побороть то вроде можно, хотя и через ... , ну, в общем, с обратной стороны.
А 98-ю ставить только ради этого как-то не хочется.

AS
30.06.2008, 15:49
Можно поробывать через драйвер www.pcports.ru толко я не уверен что какойто эмулятор поддержит прямое обращение к порту. Проще на Delphi написать программу и использовать драйвер с www.pcports.ru. Как управлять LPT можно прочитать у Гука.

Alexandr Medvedev
02.07.2008, 18:00
Так как любое обращение к LPT не из Ring 0 вызовет исключениеПрежде чем писать подобные глупости рекомендую запустить команду
echo "Hello world!" >lpt1Самое интересное что если принтер подключен к LPT1 то он начнёт печатать. Для этого даже администраторских прав не нужно.

cyrax inc
02.07.2008, 20:17
а какие эмуляторы транслируют состояние порта джойстика (какого, кстати? 0x01F?) в порт LPT?

Vitamin
02.07.2008, 20:19
А что, порт джойстика уже доступен на запись? Так и говорите- порт SounDrive....

AS
02.07.2008, 20:49
Прежде чем писать подобные глупости рекомендую запустить команду
echo "Hello world!" >lpt1Самое интересное что если принтер подключен к LPT1 то он начнёт печатать. Для этого даже администраторских прав не нужно.

Так это команда вывода на печать по стандартному протоколу SPP или ECP (что в биосе включено) драйвер протокола прописан в виндовс.
А вот слабо состояние линии STROBE из командной строки подергать.:)
Мы тут вообще говорили про прямое управление LPT.

Alexandr Medvedev
02.07.2008, 21:18
Дык не надо путать порт LPT1 с портом 0x378. С первым можно работать хоть через CreateFile, а вот со вторым тока через драйвер.

AS
03.07.2008, 07:40
Дык не надо путать порт LPT1 с портом 0x378. С первым можно работать хоть через CreateFile, а вот со вторым тока через драйвер.

Так я и не путаю это одно и тоже LPT это логическое имя 0х378 порта.
И как показывает практика открыть порт LPT через CreateFile очень проблемотично если установлен нестандартный драйвер принтера.

Eltaron
24.07.2008, 09:16
может я что-то не понимаю, но банальное решение, через которое работают программаторы etc не подойдет? навроде dlportio.dll
оно вроде как раз работать в Ring 0 и все обращения к lpt перехватывать и обрабатывать самостоятельно