Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Базовые адреса LPT портов ?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
rihkov
Проблема такая: я установил дополнительный LPT порт (PCI плата), и не могу найти адрес этого порта ?
Есть тут одна книга под рукой, в ней написано что адреса LPT портов находятся в следующих ячейках памяти: для LPT1 0x0408, для LPT2 0x040A, для LPT3 0x040C, для LPT4 0x040E. Пробовал считывать содержимое этих ячеек, в 0x0408 всё правильно находится базовый адрес 888 (0x378) порта LPT1, в 0x040A находится 0, в 0x040C находится 2680160256 (если перевести в Hex то 9FC00000), в 0x040E находится 1076338624 (если перевести в Hex то 40279FC0), что это за данные находятся в ячейках 0x040C и 0x040E ?

Как узнать базовый адрес LPT порта который я установил?

Ещё проблема с определением количества LPT портов, в книге написано что 0x0411 содержит информацию о количестве установленных LPT портов (информацию несут только биты 6 и 7) считываю содержимое 0x0411 без установки дополнительного LPT порта, бит 6 = 0, а бит 7 = 1 соответствует что установлено 2 LPT порта, устанавливаю дополнительный LPT порт и ничего не меняется. В чём тут проблема?
DSIoffe
У тех плат, что я пользовал, это было прописано в документации.
И ещё: к такой плате положен свой драйвер. Если он установлен, то просто надо найти это устройство в Диспетчере устройств и посмотреть на закладку "Ресурсы". Первый адрес там и будет базовый.
Правда, я за всю жизнь пробовал только две такие платы, так что возможны варианты.
okela
Цитата(rihkov @ Mar 3 2006, 20:14) *
Проблема такая: я установил дополнительный LPT порт (PCI плата), и не могу найти адрес этого порта ?
Есть тут одна книга под рукой, в ней написано что адреса LPT портов находятся в следующих ячейках памяти: для LPT1 0x0408, для LPT2 0x040A, для LPT3 0x040C, для LPT4 0x040E. Пробовал считывать содержимое этих ячеек, в 0x0408 всё правильно находится базовый адрес 888 (0x378) порта LPT1, в 0x040A находится 0, в 0x040C находится 2680160256 (если перевести в Hex то 9FC00000), в 0x040E находится 1076338624 (если перевести в Hex то 40279FC0), что это за данные находятся в ячейках 0x040C и 0x040E ?

Как узнать базовый адрес LPT порта который я установил?

Ещё проблема с определением количества LPT портов, в книге написано что 0x0411 содержит информацию о количестве установленных LPT портов (информацию несут только биты 6 и 7) считываю содержимое 0x0411 без установки дополнительного LPT порта, бит 6 = 0, а бит 7 = 1 соответствует что установлено 2 LPT порта, устанавливаю дополнительный LPT порт и ничего не меняется. В чём тут проблема?


А какими средствами информация считывается ? Я при помощи debug читаю всё нормально...
rihkov
Цитата
А какими средствами информация считывается ?


Что вы имеете в виду?
Если то как я считываю содержимое ячеек памяти, то я пользую WinIO, и считываю из ячеек двухбайтовые слова.
Я под Windows XP работаю.
okela
Цитата(rihkov @ Mar 6 2006, 14:01) *
Цитата

А какими средствами информация считывается ?


Что вы имеете в виду?
Если то как я считываю содержимое ячеек памяти, то я пользую WinIO, и считываю из ячеек двухбайтовые слова.
Я под Windows XP работаю.


Попробуйте запустить команду debug и затем набрать d 0:0400.
Будет выведен дамп области данных BIOSa .
rihkov
Цитата
У тех плат, что я пользовал, это было прописано в документации.
И ещё: к такой плате положен свой драйвер. Если он установлен, то просто надо найти это устройство в Диспетчере устройств и посмотреть на закладку "Ресурсы". Первый адрес там и будет базовый.
Правда, я за всю жизнь пробовал только две такие платы, так что возможны варианты.


Дакументации нет.
Плата стоит такая: NetMos 9835 PCI Multi-I/O Controller
Драйвер установлен и нормално работает, в диспетчере устройств в "Ресурсы" первым стоит
диапазон I/O A800 - A807 а второй диапазон I/O AC00 - AC07, если у меня в родном LPT порту в диспетчере устройств в "Ресурсы" первым стоит диапазон I/O 0378 - 037F а второй диапазон
I/O 0778 - 077B , здесь понятно что базовый адрес 0378 и я обращаюсь к нему как 0x378, если предположить что базовый адрес установленного мной LPT порта A800 как мне к нему обращаться?
Диапазоны I/O которые стоят вторыми в диспетчере устройств в "Ресурсы" это что за адреса, FIFO буфера чтоли ?
DSIoffe
A800 - базовый, A801 - порт управления, A802 - порт состояния и т.д. Или наоборот, не помню. Должны читаться debug без проблем. И записываться тоже. Или своим софтом можно доставать, если под XP, то через левый драйвер, как здесь писали.
Второй диапазон - это адреса ECP. Здесь не стоит расписывать, подробнее есть у меня на http://www.dsioffe.narod.ru/stuff/stuff.htm#parport и ещё много где.
Кстати, у меня тоже NetMos, работает прекрасно.
BVU
Наверно мода у нас какая-то на LPT с недавнего времени (updata - LPT++). На форуме уде столько синонимных тем в которых предаставлено исчерпывающее количество информации и ссылок по LPT просто непонятно чего там еще можно выяснять!!! Наверно поиск не работает... sad.gif
rihkov
Спасибо что уделили мне время!
С адресами я разобрался, всё работает, но остаётся проблема с определением количества установленных LPT портов?
Считываю содержимое 0x0411 без установки дополнительного LPT порта, бит 6 = 0, а бит 7 = 1 соответствует что установлено 2 LPT порта, устанавливаю дополнительный LPT порт и ничего не меняется. В чём тут проблема?
BVU
Цитата(rihkov @ Mar 6 2006, 18:52) *
Спасибо что уделили мне время!
С адресами я разобрался, всё работает, но остаётся проблема с определением количества установленных LPT портов?
Считываю содержимое 0x0411 без установки дополнительного LPT порта, бит 6 = 0, а бит 7 = 1 соответствует что установлено 2 LPT порта, устанавливаю дополнительный LPT порт и ничего не меняется. В чём тут проблема?

Если не получается plug-and-play (Windows) необходимо вручную сделать поиск вновь установленного оборудования и система прераспределит имеющиеся адреса на LPT. Возможно нужен новый драйвер для LPT, который обычно идет в комплекте с платой расширителем LPT.
alekseykoj
Ну если ты пишешь программу для Windows тебе вообще не надо знать адреса портов. Вставляешь в вызов API наименование порта и вперед.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.