Вот решил сделать это: http://linsovet.com/linux-example-programming-lpt-led
Для Ъ:
В этом посте я расскажу о способах подключения к LPT и его программировании. Не судите строго - моя первая статья. Во-первых нужно узнать что же из себя представляет LPT порт, что и как мы к нему будем подключать/ Приведу информацию с Википедии. IEEE 1284 (порт принтера, параллельный порт, LPT) — международный стандарт параллельного интерфейса для подключения периферийных устройств персонального компьютера.В основном используется для подключения к компьютеру принтера, сканера и других внешних устройств (часто использовался для подключения внешних устройств хранения данных), однако может применяться и для других целей (организация связи между двумя компьютерами, подключение каких-либо механизмов телесигнализации и телеуправления). На данный момент нас будут интересовать только выводы 2-9 и еще выводы 18-25. Выводы со 2-ого по 9-ый представляют из себя информационные выходы, и именно с ними мы будем в основном дело иметь, на них у нас будет "+" .А выводу с 18-го по 25-ый - это общий провод (или как сейчас модно писать - GND), они соединены с корпусом компьютера и на них всегда будет "-". Пока это все что нужно про LPT, чтобы лишний раз не нагружать мозг. Теперь о том, что мы будем подключать. Сначала не будет никаких сложных устройств, мы просто подключим обычный светодиод. Надеюсь все знают что он из себя представляет, а те кто о нем первый раз слышат, могут посмотреть Википедию. Его полярность мы можем узнать, подключив к нему батарейку (квадратную, на 4,5 Вольта) - попробуйте поменять полярность, пока не загориться и пометьте где у него плюс и где минус. Теперь его нужно подключить к компьютеру. Минус светодиода поключаем к любому от 18 до 25 вывода, а плюс светодиода подключаем выводу под номером 2. На на рисунке можно обозначить так : А теперь займемся программной частью. Перед дальнейшим изучением очень советую прочитать вот это http://www.linuxcenter.ru/lib/articles/programming/io_port_prog_minihowto.pht... Мы напишем две программы - первая будет посылать в порт единицу (зажигать светодиод), вторая - ноль (тушить светодиод). Разберем основные функции нужные нам для работы с портами на этом этапе. ioperm(from, num, turn_on) - функция, которая дает программе право на доступ к портам. Параметр from указывает с начиная с какого порта мы хотим получить доступ. Следущий параметр - num указывает сколько портов предоставить в наше распоряжение. И последний turn_on показывает разрешен ли доступ к портам, или нет. from - 0x378 (адрес информационных выходов LPT-порта) num - 1 (сообственно, нам и нужен один порт - 0x378) turn_on - 1 (запись должна быть разрешена) Следущая функция, которая нам понадобится, это функция outb(value,port). Первый параметр - value указывает какие значения нам нужно записать в порт. Второй параметр - port - это номер порта. Для первой программы - value=1, для второй - value=0,port = 0x378 Для использования этих функция нам следует подключить заголовочные файлы #include <unistd.h> #include <asm/io.h> Все вашеуказанные функции могут выполняться только из под рута, поэтому компилировать программы мы будем под обычным пользователем, а запускать под root'ом. Вот исходники: zero.с - посылвает в порт 0 (соответственно тушит светодиод) one.c - посылает в порт 1(зажигает светодиод) Скачиваем в папку, заходим в нее и сначала набираем : $gcc -o zero zero.c $gcc -o one one.c Вуаля! Теперь наши программы скомпилированы, заходим под рутом: $su Password: Теперь выполняем: $ ./one - светодиод должен загореться $ ./zero - светодиод должен потухнуть Вот и закончен наш первый эксперимент!..если что, то не получается, пишите в комментах)))
Где взять включаемый файл asm/io.h ? В каких пакетах ? В /usr/include нету. При компиляции ругается на его отсутствие