Re: /dev/lp0

2007-01-22 Пенетрантность Victor Wagner
On 2007.01.22 at 15:40:20 +0300, Dmitry E. Oboukhov wrote:

 кто работал с параллельным портом в смысле программирования?
 тут понадобилось временный девайс сделать нули/единички с компа выдать.
 чтобы схему не собирать подумалось с парпорта выдать...
 
 ну и сунулся я в хаутушки, а что-то невнятно
 
 пишут что 
 base_address+0 - егойная шина данных
 base_address+1 - входные линии управления
 base_address+2 - выходные линии управления

Это не про  /dev/lp0, это про гораздо более низкий уровень. 
/dev/lp0 - это интерфейс к ядерному драйверу, а это про доступ к
железным портам ввода-вывода. Работать на таком уровне из userspace
программ в Linux не полагается (хотя если очень хочется то можно - man
ioperm). Обычно для работы на таком уровне пишется ядерный модуль.

Вообще между /dev/lp0 и физическим параллельным портом в Linux есть ещё
один уровень абстракции - parport. Через него работают, например, с
подключаемыми к параллельному порту Zip-дисководами.

В общем, рекомендую поискать информацию про устройство Covox - была в
свое  время популярна такая штука - устройство для создания звука,
которое люди самостоятельно паяли из резисторов и вешали на параллельный
порт. Драйвер Covox для Linux точно существовал.



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: /dev/lp0

2007-01-22 Пенетрантность Yauhen Kharuzhy
On Mon, Jan 22, 2007 at 03:40:20PM +0300, Dmitry E. Oboukhov wrote:
 кто работал с параллельным портом в смысле программирования?
 тут понадобилось временный девайс сделать нули/единички с компа выдать.
 чтобы схему не собирать подумалось с парпорта выдать...
 
 ну и сунулся я в хаутушки, а что-то невнятно
 
 пишут что 
 base_address+0 - егойная шина данных
 base_address+1 - входные линии управления
 base_address+2 - выходные линии управления
 
 скидал скриптик на перле, повесил пару светодиодов.
 
 один на данные, второй на один из выходов управления
 
 скрипт что-то вроде
 
 #!/usr/bin/perl
 
 my $base=0;
 my $out=0;
 open my $port, , /dev/lp0;
 {
   seek 0, $base+0, 0;
   print $port pack('C', $out);
   seek 0, $base+2, 0;
   print $port pack('C', $out);
   $out^=0xFF;
   sleep 1;
   redo;
 }
 
 и вот что-то не работает как ожидается (мигать раз в сек должен)
 
 для меня темный момент с базовым адресом остался я так и не понял 0x378
 тудыть надо или 0, что-то невнятно как-то написано, но пробовал и так и
 этак - фиг.
 
 пробовал так же заменять print на syswrite, seek на sysseek итп
 думал мож с буфферизацией что - хез.
 
 светодиодики подключенные все время светятся, при прохождении через
 функцию open промаргивают а дальше опять действия скрипта на них не
 влияют.
 
 не подскажет кто в чем дело или же ткнет во внятную хаутушку по
 программингу парпорта в линукс?

Копать в сторону модуля ppdev и устройства parport, которое он
обслуживает. Конкретнее в сторону ioctl. Там всё очень просто.

-- 
Yauhen Kharuzhy jekhor _at_ gmail.com
JID: [EMAIL PROTECTED]

A: No
Q: Should I quote below my post?


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: /dev/lp0

2007-01-22 Пенетрантность Roman Cheplyaka
* Dmitry E. Oboukhov [EMAIL PROTECTED] [2007-01-22 15:40:20+0300]
 повесил пару светодиодов.

Для светодиодов есть библиотека libparportled (и libparportled-dev к
ней).

-- 
Roman I. Cheplyaka
Если под синусом подразумевать косинус, можно обнаружить очень необычные
тригонометрические тождества. (c) xaxam


signature.asc
Description: Digital signature


Re: /dev/lp0

2007-01-22 Пенетрантность Nizamov Shawkat
В Пнд, 22/01/2007 в 15:40 +0300, Dmitry E. Oboukhov пишет:
 кто работал с параллельным портом в смысле программирования?
 тут понадобилось временный девайс сделать нули/единички с компа выдать.
 чтобы схему не собирать подумалось с парпорта выдать...
 
 ну и сунулся я в хаутушки, а что-то невнятно
 
 пишут что 
 base_address+0 - егойная шина данных
 base_address+1 - входные линии управления
 base_address+2 - выходные линии управления
 
 скидал скриптик на перле, повесил пару светодиодов.
 
 один на данные, второй на один из выходов управления
 
 скрипт что-то вроде
 
 #!/usr/bin/perl
 
 my $base=0;
 my $out=0;
 open my $port, , /dev/lp0;
 {
   seek 0, $base+0, 0;
   print $port pack('C', $out);
   seek 0, $base+2, 0;
   print $port pack('C', $out);
   $out^=0xFF;
   sleep 1;
   redo;
 }
 
 и вот что-то не работает как ожидается (мигать раз в сек должен)

делаю то же самое на питоне 

но используется там не /dev/lp0 (как тут заметили это более высокий
уровень), а /dev/port (только от рута, иначе не получается)
судя по перловому тексту, нужен именно он - при использовании /dev/port
адрес порта задается смещением от начала файла, ну и соответсвенно
чтение-запись байта транслируются в чтение-запись из порта

понятно что ошибка адресом может привести к непредсказуемым
последствиям :)


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: /dev/lp0

2007-01-22 Пенетрантность DamirX
On Tuesday 23 January 2007 07:08, Nizamov Shawkat wrote:
  кто работал с параллельным портом в смысле программирования?
  тут понадобилось временный девайс сделать нули/единички с компа выдать.
  чтобы схему не собирать подумалось с парпорта выдать...
 делаю то же самое на питоне

 но используется там не /dev/lp0 (как тут заметили это более высокий
 уровень), а /dev/port (только от рута, иначе не получается)

для python-а есть специальная (крассплатформенная) либа, для работы с 
последовательными и паралельными портами

http://pyserial.sf.net

я крутил через этот модуль шаговый двигатель   :))
-- 

DamirX