Linux узнать адрес lpt
Как узнать адрес LPT
LPT (параллельный порт) предназначен для связи компьютера с внешними (перефирийными) устройствами и имеет базовый адрес &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3), что в десятичной системе соответствует адресам: 888 (LPT1), 632 (LPT2) и 956 (LPT3).
Эти три адреса являются базовыми и при загрузке операционной системы происходит опрос именно этих трех адресов. По этим адресам посылается байт после чего происходит считывание этого байта. Если считанный байт равен записанному, то по данному адресу обнаруживается активный LPT-порт. На этом принципе и основан алгоритм программы LPT Port Scaner , о которой пойдет речь ниже.
Современные компьютеры всё реже стали оснащать LPT — портами, что уж говорить о ноутбуках, на которых они и вовсе исчезли, почем не заслуженно. Существует множество программаторов, работающих через LPT — порт. Что же делать пользователям этих устройств? Рынок наводнили разного рода адаптерами, работающими через интерфейс USB, PCMCIA (произносится пи-си-эм-си-ай-эй), ExpressCard (ранее NEWCARD) и др. и теперь нам есть из чего выбрать. Но даже сделав правильный выбор мы не всегда можем прийти к желаемому результату, как это было со мной. Купив PCMCIA to LPT карту я надеялся оснастить свой ноутбук полноценным LPT — портом, но тут меня ожидало разочарование: мои программы никак не могли найти порт, как и программы сторонних производителей. Оказалось, что адрес, выделяемый устройством не всегда находится в стандартном диапазоне. Это и стало причиной, сподвигшей меня к написанию программы LPT Port Scaner .
Рисунок 1. USB to LPT
Рисунок 2. PCMCIA to LPT
Рисунок 3. Expresscard to LPT
Рисунок 4. PCI to LPT
Если Вы не можете обойтись без LPT — порта в силу сложившихся обстоятельств или еще чего-нибудь, то Вы можете преобрести одно из вышеуказанных устройств. Однако, при использовании таких адаптеров зачастую возникают проблемы с адресами портов, т. к., они бывают расположены не в стандартном для LPT — порта адресном пространстве, а в пространстве, присвоенном устройству во время обнаружения, что особенно касается Plug and Play устройств.
Существует множество программ для программаторов, работающих через LPT и поддерживающих ручную настройку адресации. Такие программы не найдя LPT — потра по стандартному адресу обычно вместо адреса выводят надпись «Hex». Зная адрес порта можно ввести его вручную, если того позволяет ПО, с которым Вы работаете.
Попробуем разобраться в этом на примере адаптера PCMCIA to LPT. После установки устройства и драйвера к ниму в диспетчере устройств появится устройство с именем LPT Port1 или что-то в роде того (На Рис. 5 PCI Parallel Port (LPT3)). Кликаем на Устройстве, после чего переходим на вкладку «Ресурсы» (Рис.6.), где отчетливо видим все доступные ресурсы этого устройства и диапазоны ввода/вывода. Адрес LPT — Порта будет находится в диапазоне ввода/вывода ресурса устройства, который отображается в шестьнадцатиричной системе счисления (0 1 2 3 4 5 6 7 8 9 A B C D E F) в столбце «Параметры».
Теперь, для того, чтобы найти адрес LPT — Порта, Вам понадобится программа LPT Port Scaner .
Рисунок 5. Диспетчер устройств.
Рисунок 6. Свойства LPT — Порта.
Рисунок 7. Интерфейс программы LPT Port Scaner
Рисунок 8. Распиновка LPT — Порта.
Сразу должен предупредить, что программа LPT Port Scaner использует библиотеку inpout32.dll, которая находится в архиве с программой и всегда должна находиться в папке с ней, иначе возникнет ошибка. Так же, в архиве находится картинка с распиновкой LPT — порта.
И так, как было сказано выше, адрес порта находится в диапазоне ввода/вывода ресурса устройства в столбце «Параметры». По-этому, после того, как вы скачали программу и запустили её (рисунок 7) имеет смысл узнать в каком диапазоне находится адрес порта на Вашем компьютере (как это сделать сказано выше.). Определив минимальное значение ресурса, вводим его в поле рядом с надписью «С адреса:» (на рисунке 6 минимальное значение = FDE0). Следом определяем максимальное значение (на рисунке 6 оно равно FDEF), вводим его в поле рядом с надписью «по адрес:» и нажимаем кнопку «Задать», после чего в полях справа должен определиться диапазон в десятичной (Dec) системе счисления. Ну а теперь можно нажать кнопочку «Scan» и в текстовом окне справа выведется результат опроса портов в заданном диапазоне.
В столбце «Dec» выводится адрес в десятичной системе счисления
В столбце «Hex» — в шестьнадцатиричной.
В столбце «Запись» выводится число, посылаемое в порт и оно зависит от параметров, выставленных в разделе «Вывод данных» (по умолчанию флажки установлены так, чтоб число, посылаемое в порт было равно 0).
В столбце «Чтение» выводится считанное из порта число. Если оно равно записанному, то, возможно, по данному адресу находится искомый LPT.
А самым простым способом, по моему мнению, является поиск в столбце «Чтение» числа 120 (Рисунок 7). Это регистр состояния (status) и если не одна из цепей не заземлена (разьем отключен), то считываемое число будет именно 120. Строкой выше будет находиться регистр данных (Data) с цепями D0-D7, а строкой ниже — регистр управления (Control) с цепями C0-C3 (рисунок 8).
Таким образом мы получили адреса FDE8, FDE9 и FDEA, которые в нашем случае соответствуют стандартному LPT — Порту с адресами 378, 379 и 37A.
Чтобы убедиться в том, что мы нашли именно нужный нам порт, можно вставить светодиод прямо в разъем порта анодом в любую цепь с D0 по D7 (c 2-го по 9-й пин см. рисунок 8), катодом в любую цепь с 18-го по 25-й пин (это общая земля), после чего необходимо выставить верхний диапазон равный нижнему (например: с адреса FDE8, по адрес FDE8), и поставить соответствующую галку в разделе «Вывод данных». После чего при каждом нажатии кнопки «Scan» цепи регистров будут включаться в соответствии с конфигурацией галок в разделе «Вывод данных».
Если вы захотите подключить светодиод к регистру управления Control (1-й, 14-й, 16-й и 17-й пин(C0-C3)), то учтите, что три из четырех цепей инвертированы. В программе учтена эта особенность, и по умолчанию на всех цепях регистров будет логический ноль.
Скачать программу для сканирования LPT — Портов LPT Port Scaner v1.0.0
cnc-club.ru
Статьи, обзоры, цены на станки и комплектующие.
Как найти адресс LPT в Linux?
Как найти адресс LPT в Linux?
Сообщение aftaev » 10 июн 2011, 20:36
Пытаюсь к ноуту подключить плату MESA 7i43 через PCMCIA — LPT = не работает. На плате 7i43 возле штекера LPT есть группа светодиодов 8шт. Полагаю они должны светиться при обращении к 7i43.
Есть специальная плата для проверки LPT портов. Втыкаю ее к PCMCIA — LPT .
При включении ноута показывает 00:
Сигнал через PCMCIA проходит.
Нужно в настройках ЕМС прописать правильный адресс LPT порта. Как его найти в Linux?
Re: Как найти адресс LPT в Linux?
Сообщение aftaev » 10 июн 2011, 23:56
Re: Как найти адресс LPT в Linux?
Сообщение PKM » 11 июн 2011, 02:40
Re: Как найти адресс LPT в Linux?
Сообщение aftaev » 11 июн 2011, 03:49
Re: Как найти адресс LPT в Linux?
Сообщение PKM » 11 июн 2011, 10:18
Re: Как найти адресс LPT в Linux?
Сообщение aftaev » 11 июн 2011, 19:16
Терминал знаю Запустил в терминале вот что вышло :
Re: Как найти адресс LPT в Linux?
Сообщение aftaev » 11 июн 2011, 19:21
Re: Как найти адресс LPT в Linux?
Сообщение aftaev » 11 июн 2011, 20:37
Re: Как найти адресс LPT в Linux?
Сообщение PKM » 11 июн 2011, 22:22
Re: Как найти адресс LPT в Linux?
Сообщение aftaev » 11 июн 2011, 23:08
Попинал продавца, выслал мне драйвера для PCMCIA — LPT. Никогда не ставил драйвера в Linux.
Как устанавливать драйвера в Linux?
# Copyright 2010 WCH GROUP all right reserved
all: driver_make wchdump_make wchterm_make
install: driver_install wchdump_install wchterm_install wchmknod_install
clean: driver_clean wchdump_clean wchterm_clean wchmknod_clean local_clean
driver_make:
cd driver;\
make
driver_install:
cd driver;\
make install
driver_clean:
cd driver;\
make clean
wchdump_make:
cd wchdump;\
make
wchdump_install:
cd wchdump;\
make install
wchdump_clean:
cd wchdump;\
make clean;
wchterm_make:
cd wchterm;\
make
wchterm_install:
cd wchterm;\
make install
wchterm_clean:
cd wchterm;\
make clean;
wchmknod_install:
cd wchmknod;\
./wchmknod
wchmknod_clean:
cd wchmknod;\
rm -f *
C. Distributions test
D.1 Driver install
D.2 Device node creation
E. Loading driver automatic after system bootup
E.1
RedHat 8
Fedora Core 1
Fedora Core 8
Fedora Core 10
Fedora Core 11
Mandriva 2008
E.2
Suse 9.3
SuSE 11.2 Milestone 4
E.3
Ubutu 8.04 Destop
E.4
Turbo Liunx 10
Red Hat Enterprise Liunx 4.0
F.1 wchdump
F.2 wchterm
Support kernel 2.4 and 2.6 on x86 machine only. Distributions test refer to item C.
Before driver installation. Make sure system with c compiler and kernel development
package.
Maximum 4 boards can be installed in combination(up to 32 serial port),
support wch multi i/o boards as list below.
C. Distributions test
Driver tested with distributions as list.
RedHat 8
Fedora Core 1
Fedora Core 8
Fedora Core 10
Fedora Core 11
Mandriva 2008
Turbo Liunx 10
Red Hat Enterprise Liunx 4.0
Suse 9.3
SuSE 11.2 Milestone 4
Ubutu 8.04 Destop
D.1 Driver install
Please create a directory under root directory, e.g /temp, do commands:
After get driver file «wch_Vx.x.x.x.tar.gz». Copy file to /temp
directory, then extract and install, do commands:
# cp wch_Vx.x.x.x.tar.gz /temp
# cd /temp
# tar xvfz wch_Vx.x.x.x.tar.gz
# cd /temp/wch
# make clean ; make install
*************************************************************
* If system is Suse 9.0 and errors occur when *
* «make clean ; make install», do commands: *
* *
* # cd /usr/src/linux/ *
* # make cloneconfig *
* # make dep *
* *
* then do «make clean ; make install» again in /temp/wch *
*************************************************************
Load driver module, do command:
# modprobe wch
or
# insmod /temp/wch/driver/wch.ko (wch.o for kernel 2.4)
Check driver module, do command:
# lsmod | grep wch
Unload driver, do command:
# rmmod wch
D.2 Device node creation
Each serial port has one device node which is named «ttyWCH?»,
maximum up to 32 serial ports.
This setp will be done when do «make clean ; make install», if
device nodes aren’t in /dev, do commands:
# cd /temp/wch/wchmknod
# ./wchmknod
This will create device nodes in /dev.
If there are more than two boards installed, serial port device
nameing convention please refer to F1.
E. Loading driver automatic after system bootup
E.1
After finish item D. Edit /etc/rc.d/rc.local for loading driver
automatic after system bootup. Use vi or other editor to open rc.local,
and add «modprobe wch» in last line.
E.2
After finish item D.
Edit /etc/rc.d/boot.local for loading driver automatic after system bootup.
Use vi or other editor to open boot.local, and add «modprobe wch» in last line.
Edit /etc/rc.d/halt.lAfter finish item D. Edit /etc/rc.d/rc.local for loading driver
automatic after system bootup. Use vi or other editor to open rc.local,
and add «modprobe wch» in last line.ocal for unloading driver when system halt.
Use vi or other editor to open halt.local, and add «rmmod wch» in last line.
E.3
After finish item D. Edit /etc/init.d/rc.local for loading driver
automatic after system bootup. Use vi or other editor to open rc.local,
and add words as below in last line.
E.4
After finish item D. Edit /etc/rc.d/rc.local for loading driver
automatic after system bootup. Use vi or other editor to open rc.local,
and add words as below in last lien.
E.5
In general, other distributions will loading driver automatic after system bootup.
If it doesn’t, please refer to item E.1 or E.2. or E.3 or E.4
F1. wchdump — dump port informations, do command:
the informations should be like this
================ Found 8 WCH port , list informations ====================
WCH driver ver — 1.0.0.0
ttyWCH0 —
WCH CH358_8S Series (bus:1 device: 9) , base address = 9000, irq = 169
ttyWCH1 —
WCH CH358_8S Series (bus:1 device: 9) , base address = 9400, irq = 169
ttyWCH2 —
WCH CH358_8S Series (bus:1 device: 9) , base address = 9800, irq = 169
ttyWCH3 —
WCH CH358_8S Series (bus:1 device: 9) , base address = 9c00, irq = 169
ttyWCH4 —
WCH CH358_8S Series (bus:1 device: 9) , base address = 9008, irq = 169
ttyWCH5 —
WCH CH358_8S Series (bus:1 device: 9) , base address = 9408, irq = 169
ttyWCH6 —
WCH CH358_8S Series (bus:1 device: 9) , base address = 9808, irq = 169
Driver version is 1.0.0.0
ttyWCH0 is the 1st serial port on wch CH358_8S series board,
base address is 0x9000 and irq is 169.
ttyWCH1 is the 2nd serial port on wch CH358_8S series board,
base address is 0x9400 and irq is 169.
ttyWCH2 is the 3rd serial port on wch CH358_8S series board,
base address is 0x9800 and irq is 169.
ttyWCH3 is the 4th serial port on wch CH358_8S series board,
base address is 0x9C00 and irq is 169.
ttyWCH4 is the 5th serial port on wch CH358_8S series board,
base address is 0x9008 and irq is 169.
ttyWCH5 is the 6th serial port on wch CH358_8S series board,
base address is 0x9408 and irq is 169.
ttyWCH6 is the 7th serial port on wch CH358_8S series board,
base address is 0x9808 and irq is 169.
ttyWCH7 is the 8th serial port on wch CH358_8S series board,
base address is 0x9C08 and irq is 169.
bus:1 means the bus number of board is 1.
device:9 means the device number of board is 9.
If no information print on screen. Make sure the device node
exist in /dev and driver module loaded.
F2. wchterm — dumb terminal for test tty device node data transmitting and receiving, do command: