Page 6 of 9 FirstFirst ... 45678 ... LastLast
Results 76 to 90 of 121

Thread: Подключение USB мыши и клавиатуры к роутеру

  1. #76

    Решил добить тему про мышу

    Пробуем управлять мышью.
    Идея такова, что при нажатии на одну из пяти! кнопок выполнять определенные действия в системе. Конкретно в моем случае мне нужно управление проигрывателем радио(задолбало все время включать комп, кода хочется послушать радио).
    В usb порт воткнут хаб в него винт, звуковая и получаем практически полноценный интернет радиоприемник, кому интересно вот ссылка где все доведено до ума. А у меня такой колхозный вариант - все в одном.
    Итак сервер mpd запущен, пакет mpc установлен и с компьютера через консоль или при помощи QMPDClient1.1.2 все нормально управляется и работает.
    Долго искал чем проще управлять именно с роутера и пока остановил выбор на обычной usb мышке (конечно вариант с пультом более приемлем, но под рукой нет нормального usb пульта, а заморачиваться с комовским самопальным не захотел) . Оказалось, что из нее без особых проблем можно читать аж пять кнопок (левая, правая, колесо нажать, колесо вперед, колесо назад).
    Итак предварительно настраиваем систему, для этого подгружаем модули:
    Создаем директорию modules в каталоге /opt/ и копируем туда три файла драйверов, возможно для мыши достаточно одного input.o . Затем командой insmod подключаем их к системе.
    # установка драйверов
    insmod /opt/modules/input.o
    insmod /opt/modules/evdev.o
    insmod /opt/modules/hid.o
    Теперь можно смело втыкать мышь и в каталоге /dev/input/ появляется устройство event0, значит все нормально.
    За основу я взял код andr128 из этой ветки и переделал все под себя.
    В роутере у меня стоит Олеговская прошивка и сверху скриптом из Установки программ для чайника установлен только вэб сервер, микроперл и отображение статистики.
    Первым делом нужно убедиться что программа читает коды из мыши.
    У кого стоит Perl замените первую строчку программы.
    Я создал файл с названием remote_sig_mous.pl и таким содержимым:
    #!/opt/bin/microperl -w
    #$fdev="/dev/usb/hid/hiddev0"; # IR Remote (ASUS)
    $fdev="/dev/input/event0"; # Mouse
    #$fdev="/opt/usr/mybin"; # My test file


    open(REMOTE,$fdev) || die "!Error open file: $!\n";
    binmode(REMOTE);
    begin:
    $df='';
    $result = sysread(REMOTE, $df, 64); # $result - real read byte
    $ascii = unpack("H*",$df); # convert bytes to view hex string
    print "Read bytes: $result\n";
    print " df: $ascii\n";
    goto begin;
    close(REMOTE);
    Потом я перенес этот файл в каталог /opt/usr/ и запустил(все действия я делаю в МС).
    Если все нормально то на экране будут появляться коды движения мыши и нажатия на кнопки. Мне сильно мешали коды движения, поэтому я разобрал мышь и убрал призму и заклеил отверстие непрозрачной изолентой. Теперь на экране отображаются только коды кнопок. В общем дальше просто проанализировав выводимые данные я нашел несколько значений которые не меняются, а принадлежат определенным действиям с кнопками.
    При нажатии на кнопки мыша выдает последовательность значений, но они постоянно разные, пришлось вычислить часть которая совпадает всегда и отличается для каждой кнопки.
    Итак я вычислил разницу возвращаемых значений при нажатии на кнопку.
    Левая, правая, центр – выдают код при нажатии отпускании, а колесо вперед и назад только при нажатии.
    Левая
    df: 100101
    df: 100100
    Правая
    df: 110101
    df: 110100
    Центр
    df: 120101
    df: 120100
    Назад
    df: 0800ff
    Вперед
    df: 080001

    Программа считывает код нажатия, переводит его в текст и вырезает кусок с шестью символами начиная с 20 позиции:
    $ascii = substr(unpack("H*",$df),20,6);
    Дальше просто сравниваем с заранее записанными значениями и выполняем соответствующее действие. Кстати реакция на левую, правую и центральную кнопки нужна на отпускание, мне кажется так проще.

    Теперь код основного файла remote.pl
    Код программы:
    #!/opt/bin/microperl -w

    $k01 = "120100"; # centr
    $k02 = "100100"; # left
    $k03 = "110100"; # right
    $k04 = "080001"; # up
    $k05 = "0800ff"; # dn

    #$fdev="/dev/usb/hid/hiddev0"; # IR Remote (ASUS)
    $fdev="/dev/input/event0"; # Mouse
    #$fdev="/opt/usr/mybin"; # My test file


    open(REMOTE,$fdev) || die "!Error open file: $!\n";
    binmode(REMOTE);
    begin:
    $df='';
    sysread(REMOTE, $df, 64);
    $ascii = substr(unpack("H*",$df),20,6);
    #print "$ascii\n"; #for otladki
    SWITCH:
    {
    if ($ascii eq $k01 ) { print " k01\n"; system "mpc play 1"; last SWITCH; } #start pleer list pos 1
    if ($ascii eq $k02 ) { print " k02\n"; system "mpc play"; last SWITCH; }
    if ($ascii eq $k03 ) { print " k03\n"; system "mpc stop";last SWITCH; }
    if ($ascii eq $k04 ) { print " k04\n"; system "mpc next"; last SWITCH; }
    if ($ascii eq $k05 ) { print " k05\n"; system "mpc prev";last SWITCH; }
    }
    goto begin;
    close(REMOTE);

    Этот файл копируем в /opt/usr/ и можем запускать с параметром &, тогда можно спокойно выключать комп и прога будет крутиться до перезагрузки роутера.
    /opt/usr/remote.pl &

    Да еще нужно создать свой плейлист, чтобы переключаться между радиостанциями.
    Теперь при нажатии на левую кнопку включается радио, при прокрутке колеса вперед назад соответственно переходы по плейлисту, при нажатии на колесо переход на самую любимую радиостанцию (или просто на 1 позицию в плейлисте), ну и нажатие на правую кнопку выключает радио. Огромное спасибо andr128 за идею и опубликованный код для пульта ДУ мне даже не пришлось углубляться в изучение Perl .

  2. #77
    Join Date
    Apr 2009
    Location
    г. Ангарск, Иркутская обл.
    Posts
    267
    Я рад что кому-то моя идея пригодилась
    Во истину волшебная коробочка

    p.s.
    /opt/usr/remote.pl & - да важно запускать в фоновом режиме
    Last edited by andr128; 19-05-2010 at 09:15.
    DIR-320 / WL-500gPv2 / O'Play R1

  3. #78
    [QUOTE=andr128;197852]Я рад что кому-то моя идея пригодилась
    Во истину волшебная коробочка

    Здравствуйте.Тут на форуме прочитал интересную идею alexcccp по поводу использования роутера в качестве сигнализации:
    "подключить usb устройство к роутеру, например мышь и заставить следить за кнопкой мышары.
    прикрепить к двери геркон и прикрутить его замес-то кнопки мышары
    .....
    при открывании двери геркон размыкается мышь сообщает роутеру о новом состоянии ее кнопки, а тот в свою очередь шлет смс."
    Я так понимаю теперь это можно осуществить практически?Если да,то сажусь за парту.Может кините ссылочку с чего начать.Спастибо

  4. #79
    по поводу подключить usb-девайс и поуправлять я тут предлагал ардуину (arduino).
    http://wl500g.info/showthread.php?t=...E7%E0%F6%E8%FF
    Возможностей побольше, но чуть сложнее получается.

  5. #80

    Совместимость с W7

    Подскажите, собрался ставить Семерку. Совместим ли Asus WL-500g premium с этой ОС?

  6. #81
    Quote Originally Posted by whydesign View Post
    Подскажите, собрался ставить Семерку. Совместим ли Asus WL-500g premium с этой ОС?
    конечно..



    в домашней сети стоит


    xp x32
    windows 7 x64
    vmware 7.1.1
    xp 32

    linux centos 5.5 x64
    vmware 7.1.2
    в которой
    xp 32
    windows 7 64
    windows 7 32


    все работает через wl500gpv2
    Last edited by yuraz; 25-09-2010 at 22:20.

  7. #82
    Join Date
    Oct 2009
    Location
    Russia
    Posts
    149
    смысл совместимости не ясен, роутер это автономное устройство, со своими процессором, оперативкой, операционкой
    Asus RT-N56U Firmware: 1.0.1.8d-p3

  8. #83
    Quote Originally Posted by whydesign View Post
    Подскажите, собрался ставить Семерку. Совместим ли Asus WL-500g premium с этой ОС?
    Роутер в своем первоначальном виде невидим для ОС пользователя ... При использовании его в качестве сервера для ОС видны только предоставляемые им сервисы и ей (ОС) побарабану что за операционка стоит на сервере ...

  9. #84

    Talking

    Сам по себе Asus WL-500g premium с Windows 7 не совместим - мало памяти, нет видеокарты, клавиатуры и мышки, несмотря на то, что энтузиасты цепляют к нему жесткие диски больших размеров.
    Если стоит задача все таки сменить ПО Асуса, то рекомендую посмотреть в сторону прошивки от энтузиастов.
    Onlime @ RTN66U
    Megafon @ E392+WL500W
    DOVADO TINY (работает с E392, но не так шустро)

  10. #85
    Join Date
    Mar 2009
    Location
    Russia, Moscow
    Posts
    2,119
    Blog Entries
    33
    Quote Originally Posted by Maxiller View Post
    Сам по себе Asus WL-500g premium с Windows 7 не совместим - мало памяти, нет видеокарты,
    клавиатуры и мышки, несмотря на то, что энтузиасты цепляют к нему жесткие диски больших размеров.
    Если стоит задача все таки сменить ПО Асуса, то рекомендую посмотреть в сторону прошивки от энтузиастов.
    А зачем забивать тупой вендовый топор в роутер с линухом ?
    Память можно увеличить, клаву и мышь уже тоже цепляли ...

    З.Ы. Ну а монитор по usb и так работает, даже без видюхи ...
    См. > http://wl500g.info/showthread.php?p=204117#post204117


  11. #86
    Join Date
    Aug 2008
    Location
    Taganrog, Rostov Region
    Posts
    397

    кто разбирается в перле. допишите плиз скрипт.

    В общем взял за основу скрипт remote.pl только добавил свои коды.
    Всё работало, но столкнулся с такой проблемой.
    Из-за чего не понял, но происходит переподключение устройства или ещё что-то.
    В результате /dev/input/event0 исчезает, зато появляется /dev/input/event1.
    Сам скрипт такое дело отработать не может, но и не валится полностью, а зацикливается.
    А реально он начинает пожирать ~90% cpu. :-(

    Просьба, к тем, кто в состоянии доработать скрипт доработать следующию функциональность:
    1. Реализовать автоматическое определение eventX. У меня его можно получить из /proc/bus/input/devices - строка H:
    2. Отрабатывал ошибку чтения и при ошибке пытался снова определить eventX. Причем тут, наверно нужно вставить задержку, хотя бы на секунду.

    Заранее спасибо всем откликнувшимся.

    PS: К сожалению, я сам perl вижу в первый раз. А пользоваться такими удобствами, как включать, выключать, переходить к след. радио-станции - хочется. Поэтому и прошу помощи.
    [ASUS wl-500gP (v1) 1.9.2.7-rtn-r7438M 128Mb 300MHz 2+2usb] + [2Гб USBFlash] + [USB-HDD] + [xinetd] + [samba3] + [Download Engine] + [rTorrent] + [3proxy] + [nShaper] + [mcabber] + [apcupsd] + [mpd]; Было: [openvpn&udhcpc]; [privoxy] + [polipo];

  12. #87
    как исправить такое
    insmod /opt/tmp/evdev.o
    insmod: unresolved symbol __pollwait

    и этот модуль не загружается.

  13. #88
    Join Date
    Mar 2009
    Location
    Russia, Moscow
    Posts
    2,119
    Blog Entries
    33
    Quote Originally Posted by Belerafon View Post
    как исправить такое
    insmod /opt/tmp/evdev.o
    insmod: unresolved symbol __pollwait

    и этот модуль не загружается.
    Нужно брать модули, соответствующие версии прошивки и ядра ...

    Например, для RT-N16 (2.6) будут актуальны такие модули :

    Code:
    input-core.ko
    evdev.ko
    usbhid.ko

  14. #89
    Исправил) Прошивка от Vampika модули здесь брал, 2 из 3-х работали. Нашел скачать из другого места архим с модулями, от туда взял его заработало

    А лампочками кто нибудь управлял на клавиатуре? у меня они не горят, как сделать чтоб горели?
    Last edited by Omega; 27-01-2011 at 11:20. Reason: 2 post merged

  15. #90
    Join Date
    Apr 2009
    Location
    г. Ангарск, Иркутская обл.
    Posts
    267
    Quote Originally Posted by Belerafon View Post
    А лампочками кто нибудь управлял на клавиатуре? у меня они не горят, как сделать чтоб горели?
    http://wl500g.info/showpost.php?p=155149&postcount=33
    DIR-320 / WL-500gPv2 / O'Play R1

Page 6 of 9 FirstFirst ... 45678 ... LastLast

Similar Threads

  1. Подключаем USB HDD к роутеру
    By Hornet in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 3172
    Last Post: 31-08-2011, 12:03
  2. Unstable boot from USB
    By Tamadite in forum WL-500g Q&A
    Replies: 6
    Last Post: 20-08-2008, 15:19
  3. Problem mit Printer und HD am Usb Hub...
    By Sidd in forum German Discussion - Deutsch (DE)
    Replies: 4
    Last Post: 29-03-2006, 17:53
  4. Multiple USB disks and their order on /dev/discs/discX
    By cunami in forum WL-500g Custom Development
    Replies: 2
    Last Post: 20-01-2006, 14:17

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •