none
Открытие портов ввода/вывода в Windows 7.

    Вопрос

  • Пусть есть ОС младше Windows XP. Там порты ввода/вывода открыты, и стандартные функции в языках программирования вида outp и inp работают нормально.

    Однако с ОС старше (XP, 7 и выше) данные функции не функционируют. К примеру, заставить пищать системный динамик данными командами не удается.

    Вопрос: как включить доступ к портам I/O в Windows 7?

    16 июля 2014 г. 15:56

Ответы

  • Для таких целей обычно пишется драйвер. Ничего фантастически сложного в этом нет. Следует, однако, учитывать, что Windows не является real time системой.

    S.A.

    17 июля 2014 г. 18:31
  • Если динамик запищит то вовсе не факт что платы заработают. Порты динамика эмулируются, а о плате ОС ничего не знает. В общем случае приложения работать с портами на прямую не могут, это фича всех ОС начиная где то с середины 90х.

    В общем у вас два варианта:

    1. Написать драйвер для плат плат АЦП и прочих. В коде драйвера команды ввода/вывода работают. Приложение работает с драйвером на прямую через вызов DeviceIoControl либо через АПИ ОС если есть такая возможность. Например драйвер платы АЦП/ЦАП потенциально может выглядеть как звуковая плата и тогда можно использовать АPI для работы со звуком что гораздо удобнее. 

    2. Давным давно был универсальный драйвер который через ioctl позволял читать/писать произвольные порты. Не рекомендую, но если очень надо то можно попробовать его найти. Скорее всего в 64 битых ОС работать не будет.

    В настоящее время имеется тенденция делать спецустройства с USB интерфейсом, большинство работают либо через HID либо же через виртуальный последовательный порт. Это позволяет избежать трудоемкого дрйавера и проблем с проверкой подписей.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    17 июля 2014 г. 18:59
    Модератор

Все ответы

  • юзайте другие языки программирования которые чуток младше 15 лет
    17 июля 2014 г. 6:57
    Модератор
  • Попробуйте, как здесь дано: Parallel port I/O on Windows 7/64bit -- working!


    • Изменено Bandurist 17 июля 2014 г. 8:02
    17 июля 2014 г. 8:01
  • В интернете есть несколько таких библиотек. Библиотека с автором "logix4u.net" не пошла на Borland C++ Builder 6. Не пищит динамик у меня с ней.
    17 июля 2014 г. 15:03
  • Порты закрыты в любых современных ОС. Просто XP эмулировала некоторые из них для совместимости с очень старым 16 битным софтом. В 64 битных ОС (видимо у вас  такая) совместимость с такими программами изъята, хотя 32 битные версии скорее всего ее все еще имеют.

    В любом случае вы не сказали зачем вам это. Варианты действий зависит от цели данной операции.

    1. Для упражнений с динамиками для обучиения программированию используйте эмуляторы, например DOSBOX. 

    2. Для генерации звука используйте API ОС для работы со звуком.

    3. Для управления внешними устройствами используйте что нибудь подключаемое по USB. Например любые варианты Аrduino.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    17 июля 2014 г. 16:32
    Модератор
  • Фактически мне нужно подавать данные в порт и читать их - для работы с платами АЦП и прочими платами. О динамике я написал всего лишь как о примере: если динамик запищит - и платы заработают. Команды, которые не работают на текущий момент, вида outp(port,byte), inp(port).
    17 июля 2014 г. 16:37
  • Для таких целей обычно пишется драйвер. Ничего фантастически сложного в этом нет. Следует, однако, учитывать, что Windows не является real time системой.

    S.A.

    17 июля 2014 г. 18:31
  • Если динамик запищит то вовсе не факт что платы заработают. Порты динамика эмулируются, а о плате ОС ничего не знает. В общем случае приложения работать с портами на прямую не могут, это фича всех ОС начиная где то с середины 90х.

    В общем у вас два варианта:

    1. Написать драйвер для плат плат АЦП и прочих. В коде драйвера команды ввода/вывода работают. Приложение работает с драйвером на прямую через вызов DeviceIoControl либо через АПИ ОС если есть такая возможность. Например драйвер платы АЦП/ЦАП потенциально может выглядеть как звуковая плата и тогда можно использовать АPI для работы со звуком что гораздо удобнее. 

    2. Давным давно был универсальный драйвер который через ioctl позволял читать/писать произвольные порты. Не рекомендую, но если очень надо то можно попробовать его найти. Скорее всего в 64 битых ОС работать не будет.

    В настоящее время имеется тенденция делать спецустройства с USB интерфейсом, большинство работают либо через HID либо же через виртуальный последовательный порт. Это позволяет избежать трудоемкого дрйавера и проблем с проверкой подписей.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    17 июля 2014 г. 18:59
    Модератор