PDA

Просмотр полной версии : Обучаем IrDA


XProger
08.09.2007, 05:15
Как известно, для управления техникой при помощи ИК порта нужны коды сигналов передаваемых этой технике. Но зачастую (а это 100% моей домашней техники) эти коды найти практически нереально.
Имеется идея интуитивного обучения PSP этим кодам:
- Переводим ИК порт в режим прослушивания
- При помощи ПДУ нужного нам устройства передаём сигнал
- Указываем какой команде будет соответствовать этот сигнал
- Переводим ИК порт в режим посыла и "палим" в технику полученным сигналом :)

Почему это не реально, и почему до сих пор ни одно из виданных мною homebrew приложений это не реализует?

pspowner
08.09.2007, 16:02
Как известно, для управления техникой при помощи ИК порта нужны коды сигналов передаваемых этой технике. Но зачастую (а это 100% моей домашней техники) эти коды найти практически нереально.
Имеется идея интуитивного обучения PSP этим кодам:
- Переводим ИК порт в режим прослушивания
- При помощи ПДУ нужного нам устройства передаём сигнал
- Указываем какой команде будет соответствовать этот сигнал
- Переводим ИК порт в режим посыла и "палим" в технику полученным сигналом :)

Почему это не реально, и почему до сих пор ни одно из виданных мною homebrew приложений это не реализует?

Пробовал я это, делал, не слушается техника. Видимо так какие-то прерывания не учитываются при такой отсылке, вобщем хз, но не пашет такая схема 100%

l3VGV
10.09.2007, 10:39
Для наладонников видел такую штуку. для псп вроде тоже была хомка на qj. теоретически конечно работать должно на 100%, но даже на наладоннике не все команды техника понимала.

http://dl.qj.net/Wi-Fi---IR-Apps-Homebrew-Applications-PSP-/catid/189

anton85
18.09.2007, 15:19
Я как раз благодаря этой идее попал в этот раздел.

Просто тупое копирование трафика с пульта ДУ и последующее его посылание на целевое устройство не дали результата.
(хотя я потом проверил - трафик передаваемый моей псп был полностью аналогичен тому что был принят).

Тогда я подумал, что при поступлении сигнала (первого байта) надо запустить цикл который будет не просто ловить трафик, но и еще скорость поступления трафика, обозначая в логе специальным символом паузу в сигнале)(скажем потом в случае не поступания сигнала в течении 100-300 мсек означает что сигнал кончился).

В ообщем написать 2 функции:
1. ловит трафик, и когда начинает поступать сигнал - записывать сигнал в лог + отсчитывать паузу в сигнала.
(в идеале вообще было бы хорошо привязать все это к системному времени в псп, а не просто циклом отсчитывать паузу, правда я не знаю, как можно было бы выполнить привязку к системному времени псп)
2. открывает файл с сохраненным сигналом и посылает его через irda.

pspowner
18.09.2007, 15:32
Там, возможно я неправ, идёт битовый паттерн. Т.е. например 3 бита отослал, пауза, потом ещё 7 - типа код устройства.. и.т.п.

Потому если ты замеришь время получения 1 байта(или всех) - ты не будешь точно знать где пауза.

ИМХО.

XProger
18.09.2007, 16:21
Супер! О паузах я даже и не задумывался...
Попробую отловить их через sceRtcGetCurrentTick

anton85
18.09.2007, 16:25
XProger, отпишись о результатах, а если не жалко, то выложи код, которым будешь пытаться реализовать.

anton85
23.10.2007, 14:22
В ообщем я пытался реализовать запись пауз в файл и потом создание пауз при отправке их через ir - но не осилил из-за моего уровня программирования, и неправильного подхода.

В ообщем если кто-то еще захочет в этом покопаться - то сперва надо получить быстрый прием и быструю передачу без потерь данных текста через IR (это можно сделать только на двух псп - чтобы действительно хорошо проконтролировать этот процесс).

После того как прием передача проверены на стабильность - тем или иным способом реализовать паузы, причем проверить чтобы они оказались одинаковыми при приеме и передаче.

После этого думаю все заработает.

tv-control.zip (http://ifolder.ru/3846263) (pass: "www.pspx.ru", 20 кб, src + eboot.pbp)

pspowner
23.10.2007, 15:57
Ваще, имхо, открывать инфракрасный порт нада с параметром PSP_O_NOWAIT

т.е. так -

irdafd = sceIoOpen("irda0:", PSP_O_RDWR | PSP_O_NOWAIT, 0);

А то есть подозрение, все твои паузы контроллер ИК-порта переждал в таймауте. А так можно надеяца поймать паузу за хвост...

Хотя конечно муть всё это...

T.I.P.
23.10.2007, 16:10
Помойму IR-DA на PSP версии 2.0,тобишь не скоростная и тормознутая!

anton85
23.10.2007, 17:57
Ну у IRshell'ского плагина хватает скорости на передачу сигнала взятого из pronto-кода, исходя из этого можно думать что скорости чтения тоже должно хватить чтобы получить копию сигнала с пульта.

Я тут смотрел в нете - даже для мобильных есть Java приложения (коммерческие) которые обеспечивают управление через ИК и с функцией обучения кодам.