Доступ к параллельному порту с помощью Linux

в настоящее время я получаю доступ к параллельному порту следующим образом:

ioperm(data->baseaddr,5,1);
outb(0x00,data->controlport);
inb(data->statusport);

Большой недостаток: он требует root-прав и работает только с реальным оборудованием параллельного порта (это означает, что преобразователи USB-2-LPT не поддерживаются).

Итак: есть ли другой способ чтения/записи данных из/в параллельный порт?

Спасибо!


person Elmi    schedule 17.12.2014    source источник
comment
В общем, что вы пытаетесь сделать? Я могу догадаться, но было бы хорошо, если бы вы объяснили, что это такое, так как здесь может быть более одного возможного решения.   -  person Mats Petersson    schedule 17.12.2014
comment
@Mats Petersson: отправляйте данные управления на подключенное устройство. Это устройство представляет собой (действительно очень экзотическую) XY-таблицу, ожидающую ASCII-команд движения на параллельном порту.   -  person Elmi    schedule 17.12.2014
comment
Большинство адаптеров USB-параллельный интерфейс специально разработаны для использования с принтерами. Они не совместимы со всеми параллельными устройствами.   -  person    schedule 17.12.2014
comment
эта ссылка: ‹as6edriver.sourceforge.net/Parallel-Port-Programming- HOWTO/› — это страница, описывающая два метода доступа к параллельному порту в Linux. обычное имя порта: /dev/parport0   -  person user3629249    schedule 17.12.2014
comment
@user3629249: вот и все - отлично, спасибо!   -  person Elmi    schedule 18.12.2014


Ответы (1)


Как вы упомянули, пользователь должен иметь права доступа к параллельному порту, чтобы исполняемый файл работал успешно. Обычно права на доступ к портам имеют только пользователи root, поэтому программу необходимо запускать с правами root. Однако должна быть возможность разрешить пользователям без полномочий root запускать исполняемый файл, выполнив следующие действия:

1) Сделать root владельцем исполняемого файла. Один из способов сделать это — скомпилировать программу с правами root.

2) Дать непользователям право на выполнение программы, но так, чтобы программа запускалась с правами root при запуске пользователями без root. Вы можете настроить запуск программы с правами владельца (т.е. с правами root) с помощью следующей команды (от root): chmod +s /name/of/executable

person mti2935    schedule 17.12.2014
comment
Упомянутое выше решение требует привилегий root, поскольку оно выполняет прямой доступ к оборудованию. Взлом с разрешениями исполняемого файла не будет подходящим решением, поскольку он открывает те же дыры в безопасности. Итак, решение, упомянутое в комментариях выше, с доступом к устройству в /dev/ — это то, что я ищу. - person Elmi; 18.12.2014