Проверить lpt порт linux

Проверить lpt порт linux

Добрый день. (ночь)
Для быстрого (относительно) въезда в тему программирования портов нужно накидать тестовую программку, желательно на C, ибо это классика. Программка должна опрашивать lpt порт и выставлять байт данных на нем.
Может кто нибудь помочь?
О. С. Линукс
debian 7.2 (32)
Ubuntu16.04 (32)
Ultimate Edicion 5.0 (64)
Установлены все. Есть пример на питоне, выставляет байт данных на порте, работает, но не знаю, как читать из порта. Используется библиотека python parallel

Точно не знаю. Вот ссылка:
https://www.google.ru/url?sa=t&sourc. humNvIk63sQec7
Пример работает, но опрашивать порт я в нем не научился.
Хотелось бы тестовую программу на C, опрашивать порт (пины 10, 11, 12, 13, 15) и выставлять байт данных на нем (пины 2. 9)
С epp ещё предстоит разбираться, на сколько я сейчас понял это стандарт с аппаратной частью, который выдаёт байт адреса и 2 или 4 байта данных, но в какой последовательности и на каких пинах — это пока тёмный лес. А может даже изначально все тёмный лес.

Это что вообще? Обмен с каким-то устройством? Или управление сигналами по принципу «установить/снять конкретную линию»?

Если обмен, то, скорее всего, EPP. По приведённой ссылке есть пример готового кода на C, попробуйте.

Проверил, не компилируется. Пример на Питоне работает, научился считывать порт. Выдаёт частоту 22КГц. Нужен код который будет компилироваться в gcc, иначе я не потяну.

Проверил, не компилируется. Пример на Питоне работает, научился считывать порт. Выдаёт частоту 22КГц. Нужен код который будет компилироваться в gcc, иначе я не потяну.

Что не компилируется? Там не готовые для компиляции файлы, а фрагменты. Гуглить названия функций — смотреть, какие include сделать нада, какие либы прилинковать. Все это добавить в свой базовый «hello world», тогда скомпилится.

А потом, вероятнее всего, будут проблемы с правами еще. Скажем, в Windows прямой доступ в I/O порты запрещен совсем. В Linux как-то не сталкивался еще, за не именеем LPT на новых машинах.

Да, еще нужно режим порта в БИОС верно проставить. Там есть кешируемые и не кешируемые режимы, в не кешируемом на пине ток, пока его держит устройство (или программа в цикле быстро-быстро пишит). А в кешируемых, устройство дает сигнал на пин + сигнал разрешения смены состояния (ну или программа).

Точнее who is who я не помню)

Источник

Linux узнать адрес 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

Читайте также:  Использование powershell в linux

Рисунок 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 Источник

Читайте также:  Linux mint настройки блокировки экрана

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?

Re: Как найти адресс LPT в Linux?

Re: Как найти адресс LPT в Linux?

Источник

Опрос LPT порта.

Извините за столь тупой вопрос, но опыта программирования под Linux очень мало, а с железом — вообще ноль, ну и, как всегда, сделать нужно на вчера 🙁 Есть железка, которая подключатся к ПК через LPT порт. Нужно проверять ее состояние раз 20 в секунду, и в зависимости от состояния производить некоторые действия. Как правильно организовать опрос? Что бы использовать как можно менше ресурсов. Буду признателен за любой ответ.

Re: Опрос LPT порта.

#include #define BASEPORT 0x378 #define DATA BASEPORT #define CTRL BASEPORT + 1 #define RES BASEPORT + 2 int main(void) < int a; if (ioperm(BASEPORT, 3, 0)) < perror("ioperm"); return 1; >outb(0x55, RES); outb(0xAA, DATA); a = inb(CTRL); return 0; > Что то типа этого, только рутовые права проге нужны. Лучше использовать parapin либу.

Re: Опрос LPT порта.

Re: Опрос LPT порта.

НИКОГДА НЕ ПИШИТЕ В ПОРТ НАПРЯМУЮ. Делайте лучше так:
#include
#include
#include
#define time 10000000
#include
#include
#include
#include
#include
#include
#include
int main() <
printf(«идет импульс в парралельный порт !\n»);
unsigned char bitpat;
int fd,i;

Читайте также:  Локальный сервер apache linux

while(1) <
bitpat = 255;
ioctl(fd, PPWDATA, &bitpat);
usleep(time);
bitpat = 0;
ioctl(fd,PPWDATA, &bitpat);
usleep(time);
>
return 0;
>

Похожие темы

  • Форум LPT-порт (2007)
  • Форум Миф или реальность? (2003)
  • Форум Про LPT-порт (2002)
  • Форум Ноут с LPT портом (2015)
  • Форум LPT порт не выводит (2012)
  • Форум Сканер на LPT порту (2001)
  • Форум Работа с LPT портом (2009)
  • Форум Прерывание от LPT-порта (2004)
  • Форум Kernel threads — «неправильная» многопоточность. (2012)
  • Форум Связывание компов через LPT — порт (2004)

Источник

unixforum.org

Собственно сабж. ПОрт имеется. В /dev нет никакого намека на параллельный порт. Имеется /dev/port , но это вроде последовательный com-порт. Нет файлов lp0 lp1 parport0 parport1 и похожих на это. Думаю в ядре нет драйвера, либо он вынесен модулем. Если это так. то как включить модуль. Или хотя бы посмотреть какие модули есть?
Спасибо!

Re: Ubuntu server 9.04 не видит lpt порт

Сообщение Lyset » 10.07.2009 03:17

Re: Ubuntu server 9.04 не видит lpt порт

Сообщение toxxin » 10.07.2009 11:19

C модулями поковырялся. lsmod | grep parport показывает наличие загруженного модуля. Выводит следующее:
parport 42220 1 lp

В /dev нет файла устройства lp. Помимо загруженного модуля имеются НЕ загруженные. Я их тоже пробововал загружать, но толку из этого не вышло.
Не загруженные модули:

root@Server:/dev# modprobe -l | grep parport kernel/drivers/i2c/busses/i2c-parport.ko kernel/drivers/i2c/busses/i2c-parport-light.ko kernel/drivers/parport/parport.ko kernel/drivers/parport/parport_pc.ko kernel/drivers/parport/parport_serial.ko kernel/drivers/parport/parport_cs.ko kernel/drivers/parport/parport_ax88796.ko

В общем что-то я совсем запутался. Может быть файл параллельного порта как-то по другому называется. Вот полный список каталога /dev

root@Server:/dev# ls | less agpgart block bus char console core cpu_dma_latency disk ecryptfs fd full fuse hpet initctl input kmem kmsg log loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7 mapper mem net network_latency network_throughput null oldmem pktcdvd port ppp psaux ptmx pts ram0 ram1 ram10 ram11 ram12 ram12 ram13 ram14 ram15 ram2 ram3 ram4 ram5 ram6 ram7 ram8 ram9 random rtc rtc0 sda sda1 sda2 sda5 sda6 sg0 shm snapshot sndstat stderr stdin stdout tty tty0 tty1 tty10 tty11 tty12 tty13 tty14 tty15 tty16 tty17 tty18 tty19 tty2 tty20 tty21 tty22 tty23 tty24 tty25 tty26 tty27 tty28 tty29 tty3 tty30 tty31 tty32 tty33 tty34 tty35 tty36 tty37 tty38 tty39 tty4 tty40 tty41 tty42 tty43 tty44 tty45 tty46 tty47 tty48 tty49 tty5 tty50 tty51 tty52 tty53 tty54 tty55 tty56 tty57 tty58 tty59 tty6 tty60 tty61 tty62 tty63 tty7 tty8 tty9 ttyS0 ttyS1 ttyS2 ttyS3 urandom usbdev1.1_ep00 usbdev1.1_ep81 usbdev2.1_ep00 usbdev2.1_ep81 usbdev3.1_ep00 usbdev3.1_ep81 usbdev4.1_ep00 usbdev4.1_ep81 usbdev5.1_ep00 usbdev5.1_ep81 usbmon0 usbmon1 usbmon2 usbmon3 usbmon4 usbmon5 vcs vcs1 vcs2 vcs3 vcs4 vcs5 vcs6 vcsa vcsa1 vcsa2 vcsa3 vcsa4 vcsa5 vcsa6 watchdog xconsole zero

Источник

Оцените статью
Adblock
detector