Перейти к содержанию
    

Базовые адреса LPT портов ?

Проблема такая: я установил дополнительный 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 порт и ничего не меняется. В чём тут проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У тех плат, что я пользовал, это было прописано в документации.

И ещё: к такой плате положен свой драйвер. Если он установлен, то просто надо найти это устройство в Диспетчере устройств и посмотреть на закладку "Ресурсы". Первый адрес там и будет базовый.

Правда, я за всю жизнь пробовал только две такие платы, так что возможны варианты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема такая: я установил дополнительный 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 читаю всё нормально...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Что вы имеете в виду?

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

Я под Windows XP работаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Что вы имеете в виду?

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

Я под Windows XP работаю.

 

Попробуйте запустить команду debug и затем набрать d 0:0400.

Будет выведен дамп области данных BIOSa .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У тех плат, что я пользовал, это было прописано в документации.

И ещё: к такой плате положен свой драйвер. Если он установлен, то просто надо найти это устройство в Диспетчере устройств и посмотреть на закладку "Ресурсы". Первый адрес там и будет базовый.

Правда, я за всю жизнь пробовал только две такие платы, так что возможны варианты.

 

Дакументации нет.

Плата стоит такая: 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 буфера чтоли ?

Изменено пользователем rihkov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

A800 - базовый, A801 - порт управления, A802 - порт состояния и т.д. Или наоборот, не помню. Должны читаться debug без проблем. И записываться тоже. Или своим софтом можно доставать, если под XP, то через левый драйвер, как здесь писали.

Второй диапазон - это адреса ECP. Здесь не стоит расписывать, подробнее есть у меня на http://www.dsioffe.narod.ru/stuff/stuff.htm#parport и ещё много где.

Кстати, у меня тоже NetMos, работает прекрасно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверно мода у нас какая-то на LPT с недавнего времени (updata - LPT++). На форуме уде столько синонимных тем в которых предаставлено исчерпывающее количество информации и ссылок по LPT просто непонятно чего там еще можно выяснять!!! Наверно поиск не работает... :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо что уделили мне время!

С адресами я разобрался, всё работает, но остаётся проблема с определением количества установленных LPT портов?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо что уделили мне время!

С адресами я разобрался, всё работает, но остаётся проблема с определением количества установленных LPT портов?

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

Если не получается plug-and-play (Windows) необходимо вручную сделать поиск вновь установленного оборудования и система прераспределит имеющиеся адреса на LPT. Возможно нужен новый драйвер для LPT, который обычно идет в комплекте с платой расширителем LPT.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну если ты пишешь программу для Windows тебе вообще не надо знать адреса портов. Вставляешь в вызов API наименование порта и вперед.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...