|
Базовые адреса LPT портов ? |
|
|
|
Mar 3 2006, 16:14
|
Участник

Группа: Новичок
Сообщений: 52
Регистрация: 25-01-06
Пользователь №: 13 617

|
Проблема такая: я установил дополнительный 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 порт и ничего не меняется. В чём тут проблема?
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Mar 6 2006, 09:04
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Цитата(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 читаю всё нормально...
|
|
|
|
|
Mar 6 2006, 10:01
|
Участник

Группа: Новичок
Сообщений: 52
Регистрация: 25-01-06
Пользователь №: 13 617

|
Цитата А какими средствами информация считывается ? Что вы имеете в виду? Если то как я считываю содержимое ячеек памяти, то я пользую WinIO, и считываю из ячеек двухбайтовые слова. Я под Windows XP работаю.
|
|
|
|
|
Mar 6 2006, 10:20
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Цитата(rihkov @ Mar 6 2006, 14:01)  Цитата А какими средствами информация считывается ?
Что вы имеете в виду? Если то как я считываю содержимое ячеек памяти, то я пользую WinIO, и считываю из ячеек двухбайтовые слова. Я под Windows XP работаю. Попробуйте запустить команду debug и затем набрать d 0:0400. Будет выведен дамп области данных BIOSa .
|
|
|
|
|
Mar 6 2006, 10:55
|
Участник

Группа: Новичок
Сообщений: 52
Регистрация: 25-01-06
Пользователь №: 13 617

|
Цитата У тех плат, что я пользовал, это было прописано в документации. И ещё: к такой плате положен свой драйвер. Если он установлен, то просто надо найти это устройство в Диспетчере устройств и посмотреть на закладку "Ресурсы". Первый адрес там и будет базовый. Правда, я за всю жизнь пробовал только две такие платы, так что возможны варианты. Дакументации нет. Плата стоит такая: 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 - Mar 6 2006, 10:57
|
|
|
|
|
Mar 6 2006, 15:01
|

Дима
    
Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486

|
A800 - базовый, A801 - порт управления, A802 - порт состояния и т.д. Или наоборот, не помню. Должны читаться debug без проблем. И записываться тоже. Или своим софтом можно доставать, если под XP, то через левый драйвер, как здесь писали. Второй диапазон - это адреса ECP. Здесь не стоит расписывать, подробнее есть у меня на http://www.dsioffe.narod.ru/stuff/stuff.htm#parport и ещё много где. Кстати, у меня тоже NetMos, работает прекрасно.
--------------------
|
|
|
|
|
Mar 6 2006, 15:52
|
Участник

Группа: Новичок
Сообщений: 52
Регистрация: 25-01-06
Пользователь №: 13 617

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

Профессионал
    
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264

|
Цитата(rihkov @ Mar 6 2006, 18:52)  Спасибо что уделили мне время! С адресами я разобрался, всё работает, но остаётся проблема с определением количества установленных LPT портов? Считываю содержимое 0x0411 без установки дополнительного LPT порта, бит 6 = 0, а бит 7 = 1 соответствует что установлено 2 LPT порта, устанавливаю дополнительный LPT порт и ничего не меняется. В чём тут проблема? Если не получается plug-and-play (Windows) необходимо вручную сделать поиск вновь установленного оборудования и система прераспределит имеющиеся адреса на LPT. Возможно нужен новый драйвер для LPT, который обычно идет в комплекте с платой расширителем LPT.
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Mar 17 2006, 08:43
|
Участник

Группа: Свой
Сообщений: 60
Регистрация: 8-11-05
Пользователь №: 10 602

|
Ну если ты пишешь программу для Windows тебе вообще не надо знать адреса портов. Вставляешь в вызов API наименование порта и вперед.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|