-
Не подскажете, где ошибка: Обращаюсь непосредествеено к Lpt порту с помощью IOEngine. Перед обращением проверяю базовые адреса BIOS (408, 40A, 40C, 40E) - везде 0. По канонам ДОС это значит, что Lpt портов нет, хотя по свойствам Windows XP и по жизни - порт установлен и работает. (Lpt1). Прямое обращение к 378H срабатывает не на всех машинах. Видимо, XP где-то в реестре держит базовый адрес Lpt порта. Где? Не поможете?
-
> XP где-то в реестре держит базовый адрес Lpt порта
Порт запросто может быть отображен на адресное пространство физической памяти, если это позволяет чипсет. Посмотри в ресурсы LPT-порта в его свойствах (Мой компьютер - Свойства - Оборудование - Диспетчер устройств) - тум увидишь, куда отображен интерфейс контроллера порта: либо на такие-то порты ввода-вывода, либо на такой-то диапазон адресов.
-
Спасибо, смотрел - Lpt1 - порт $378. Не в этом ошибка.
-
Наверное, действительно, отображён. А как это определить средствами ОС? (API)
-
> А как это определить средствами ОС?
А за каким лешим тебе понадобился прямой доступ к порту ?
-
Написал протокол I2C через Lpt. Удобно - датчики влаги и температуры. Писал на своём компе - без вопросов. Перед сдачей решил проверить на других и "умылся". Хорошо, что проверил. Сейчас ищу пути. Так что по-делу.
-
> Писал на своём компе - без вопросов
Под Win9x ?
-
Да нет, под XP.
-
А конвертер купить не проще было ?
-
Извините, а что за конвертер и где? Наверное, проще, да не знал, что такие есть.
-
Отвечаю сам себе - может кому пригодиться. Всё дело в драйвере для прямого доступа IOEngine.dll. После смены драйвера на inpout32.dll все проблемы пропали на любых PC, у inpout32.dll и интерфейс проще и понятнее.
|