Запись данных в адрес ввода / вывода - PullRequest
4 голосов
/ 01 августа 2011

У меня есть устройство (денежный ящик), и я хотел бы напрямую связаться с устройством. Я знаю, что это по адресу f1. Также openbit - 01.

Как я уже понял, мне нужно отправить 1 на адрес памяти f1, и денежный ящик должен открыться. Хотя используя ASM, я получаю нарушение прав доступа. С другой стороны, я прочитал, что Windows не позволяет напрямую связываться с адресами ввода-вывода устройства (необходимо использовать win). Какой будет правильный способ отправки данных на этот адрес. Обратите внимание, что я не могу использовать драйверы, потому что я не могу общаться с драйвером внутри моего приложения. Op. система win7.

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Была библиотека с именем inpout32.dll, которая позволяла прямой доступ к порту, вы можете найти ее здесь

http://logix4u.net/Inpout32.dll_Discussion/write_DELPHI_for_inpout32.dll.html

Но я не знаю, поддерживает ли Windows 7.

1 голос
/ 01 августа 2011

В дополнение к превосходным предложениям, приведенным выше, проверьте этот код Delphi для записи и чтения ввода / вывода . Мы использовали GWIOPM, чтобы выполнить то, что вы просите, но учтите, что это будет нормально для 32-разрядных версий Windows вплоть до W7 и т. Д. (Как в случае большинства «бесплатных» драйверов). Для 64-битной Windows вам нужен подписанный драйвер ядра. Для этого на данный момент доступно несколько вещей. Мы должны были написать наши собственные.

0 голосов
/ 01 августа 2011

Почему вы не можете общаться с водителем из вашего приложения?Для приложения ring 3 это лучший способ безопасного общения с оборудованием.

Однако, если вы действительно настаиваете на использовании драйверов, вы можете попытаться набрать 0 и сделать прямой доступ.Это намного сложнее, чем в предыдущих версиях Windows (XP и ранее), но это возможно.Я сам этого не делал, так как у меня нет Windows 7, но вы можете попробовать где-нибудь спросить на форуме программирования asm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...