Re: /dev/lp0
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
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
* 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
В Пнд, 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
On Tuesday 23 January 2007 07:08, Nizamov Shawkat wrote: кто работал с параллельным портом в смысле программирования? тут понадобилось временный девайс сделать нули/единички с компа выдать. чтобы схему не собирать подумалось с парпорта выдать... делаю то же самое на питоне но используется там не /dev/lp0 (как тут заметили это более высокий уровень), а /dev/port (только от рута, иначе не получается) для python-а есть специальная (крассплатформенная) либа, для работы с последовательными и паралельными портами http://pyserial.sf.net я крутил через этот модуль шаговый двигатель :)) -- DamirX