 |
|
Подписаться на новости IRLink можно по ICQ или в Живом журнале.
|
 |
|
Если вы автор или редактор новостного сайта или издания, то можете получить IRLink бесплатно для тестирования.
|
 |
|
С IRLink можно управлять компьютером в машине с пульта.
|
|
Вход || Регистрация
Раздел для пользователей > Использование программы и комплекта > IRLink + Linux
Тема: IRLink + Linux
|
|
|
Bdfy
|
Mar 23, 2006 4:10:33 PM
|
|
|
А работает ли IRLink под Линукс ? ( Интересует аппартная совместимость а не программная ... )
|
|
Putch
|
Mar 23, 2006 6:53:12 PM
|
|
|
разумеется
пишите дрова - все будет работать
|
|
Bdfy
|
Mar 23, 2006 7:08:27 PM
|
|
|
Да не это слишком сложно - я проще куплю или сам соберу схему IgorPlugUSB ... Да кстати, я конечно понимаю что это секрет фирмы и прочая байда, а вот скажите драйвера на IgorPlugUSB в LIRC с вашим продуктом будут работать ? Кто нить пробовал - а то не хочется выбрасывать на ветер $25 ... ( Был бы MoneyBack - попробовал .. )
|
|
novik
|
Mar 23, 2006 7:20:43 PM
|
|
|
будут. у меня именно так и работает. в т.ч. и с упрощенным вариантом на at90s2323 если не пойдет, попробуйте взять обновленную прошивку (она внизу страницы) с rifer.narod.ru хотя не должно потребоваться.
|
|
Administrator
|
Mar 23, 2006 7:28:36 PM
|
|
|
наше устройство по сути и есть igorPlug, мы по его лицензии производим приёмники. так что если есть дрова под линукс для этого устройства, будем рады попробовать их!
|
|
Bdfy
|
Mar 23, 2006 8:52:49 PM
|
|
|
Дык дрова есть ( по крайней мере к IgorPlug ) ... Если посмотреть на сайт www.lirc.org то там заявлена поддержка к Igor Cesko's USB IR Receiver .. Т е по идее должно подходить и к IRLink ... - там же есть тестовые скрипты для тестирования всего этого ( т е главное чтобы комманды распознавались ) ... А дальше смотря что поддерживает .. Конечно наверно не удастся подключить "все в одном" черз одну программу, но если lircой опознается то можно например прикрутить к mplayerу ...
Какие вам еще дрова нужны ?
|
|
BlindGuard
|
May 8, 2007 9:31:44 AM
|
|
|
Привет.
Столкнулся с проблемой по сабжу.
Пытаюсь настроить Lirc + модуль ugorplugusb - устройство распознается, коды ловятся, но.. они не стабильны, т.е. например жмешь на одну и ту же кнопку, и каждый раз последовательность вроде и похожа, но чем-то, да отличается. Это сбивает с толку irrecord, и в итоге ее работы получается, что большая часть кнопок имеет одинаковые коды. А готовые конфиг-файлы для пультов не работают вообще.
Устройство: IRLink DK_U (под Windows проблем нет), пульты пробовал разные, Lirc - несколько последних версий.
Может кто посодействует в поиске решения? :) связь: blindguard () bk.ru Заранее спасибо.
|
|
Administrator
|
May 9, 2007 3:37:59 PM
|
|
|
не понял, как связаны lirc и igorplus? linux и irlink? насколько мне известно, для igorplug нет драйверов под linux? а irlink не работает с линуксе…
|
|
BlindGuard
|
May 12, 2007 5:48:57 PM
|
|
|
To Administrator: Ну как же, вы же сами год назад в этой теме сказали, что IRLink USB есть по сути IgorPlug USB, произведенный вами по лицензии.
Так вот, для IgorPlug есть модуль-плагин к Lirс'у (это линуксовский прародитель WinLinc'а) - включен прям в его дистрибьютив. И действительно, устройство им (Lirc + модуль igorplugusb.ko) определяется как IgorPlug и вполне работает, но, как я описал выше, не совсем корректно.
Не хочу быть неправильно понятым. Я не пытаюсь предъявлять какие-либо притензии, ибо поддержка Линукса и не обещалась. Просто, до сели я использовал IrLink в среде Windows и, надо сказать, был полность удовлетворен. Сейчас же возникло желание дистанционного управления в Linux, потому сделал запрос в поисковик - можно ли с этой целью использовать имеющийся IRLink, нашел данное обсуждение, ваше сообщение, пару положительных отзывов других людей, попробовал, возникли некоторые трудности, решил спросить здесь - вдруг кто подскажет. (Жаль что движок форума не переносит обновленные темы на первую страницу)
Сейчас ситуация такова, что на пульте удалось настроить работу реально только трех кнопок - остальные получаются либо "копиями" этих трех кнопок (т.е. с точки зрения Lirc'а имеют теже коды), либо вовсе игнорируются. В принципе, этого мне достаточно, и уж точно лучше, чем ничего ^^
|
|
Administrator
|
May 13, 2007 1:47:19 PM
|
|
|
и всё же, немного не понял вас. если речь идёт об использовании IRLink в Linux, то ничего не выйдет, IRLink просто не запустится там (тк часть программы написана на с++). если речь идёт о windows, то в IRLink есть специальный плагин для IgorPlug, который работает с ним очень стабильно и кнопки не путает (попробуйте, единственно, на вкладке ИК приёмник в диалоге настройке всё цифры по умолчанию поставить)
|
|
Administrator
|
May 13, 2007 1:47:48 PM
|
|
|
кстати, если есть желание, можете помочь нам IRLink портировать на Linux, там совсем немного надо написать кода
|
|
BlindGuard
|
May 13, 2007 8:03:53 PM
|
|
|
Ага, понял в чем у нас недопонимание. Вы видимо подумали, что я говорю о всем программно-аппаратном комплексе IRlink в целом, а я имею в виду лишь сам ИК-приемник IRlink DK-U (aka IgorPlug USB, с ваших же слов).
В Линуксе для работы с ИК-приемниками есть программа LIRC, которая позволяет управлять другими приложениями. Но для работы с определенным ИК-приемником ей нужен модуль-драйвер для него, так вот для IgorPlug USB он есть в самом дистрибьютиве программы. Вот я и попробовал использовать связку Lirc + модуль igorplugusb.ko с вашим ИК-приемником IRlink DK-U.
P.S. Если смогу, то конечно буду рад помочь. Если не затруднит, опишите вкратце задачу и с чем придется иметь дело, blindguard bk.ru
|
|
Administrator
|
May 14, 2007 11:36:08 AM
|
|
|
ну на счёт того, почему этот IgorPlug плохо заработал под linux, ничего не скажу, не знаю.
вкратце опишу, какая функциональность у нас сделана на с++: это работа с win api: управление окнами (активировать, закрыть, свернуть...), управление процессами (запустить, завершить, дождаться завершения), работа с треем, управление системой (выдвинуть лоток диска, перезагрузить, управление громкостью).
плюс в каждом плагине ИК приёмника есть свой кусочек на с++. это: работа с COM портом, работа с драйвером тюнера.
|
|
Administrator
|
May 14, 2007 11:36:52 AM
|
|
|
собственно, в плагинах ик приёмников достаточно для начала портировать только наш плагин IRLink.VS (для него есть Linux драйвера), в нём несложная логика работы для COM порта
|
|
BlindGuard
|
May 14, 2007 1:04:14 PM
|
|
|
Знаете, я пожалуй откажусь, помоему здесь совсем не немного кода :) Да и опыт разработки графичеких приложений для Линукс у меня очень небольшой, многое придется изучать.
А в чем проблема с c++? В Линукс есть компилятор для него, да и все графические библиотеки объектно-ориентированные.
|
|
Administrator
|
May 15, 2007 1:47:23 AM
|
|
|
да проблема в том, что просто надо взять,сесть и разобраться в этих объектах %-\
|
|
BlindGuard
|
Jun 29, 2007 3:33:51 PM
|
|
|
В связи с тем, что проблема с Lirc + igorplugusb + IrLink DK_U в моем случае решена, а вопросы на мэйл поступают, отпишусь здесь.
Проблема была в самом модуле igorplugusb - вот подкорректированная версия исходного кода модуля для работы с IrLink:
http://blindguard.narod.ru/lirc_igorplugusb.zip
|
|
Administrator
|
Jun 30, 2007 3:14:10 AM
|
|
|
кстати, у нас скоро появится новый ик приёмник для ps/2 порта, который будет работать без драйверов и всякого софта. его можно будет использовать и в linux.
|
|
vicxx
|
Jul 9, 2007 11:23:55 PM
|
|
|
Вы писали: "
собственно, в плагинах ик приёмников достаточно для начала портировать только наш плагин IRLink.VS (для него есть Linux драйвера), в нём несложная логика работы для COM порта". Где именно можно узнать об этой логике? Т.е. я имеею ввиду что и на каких пинах читать с ком порта и особенно что нужно записать в порт, чтобы приемо-передатчик IRLink.VS излучал ИК сигнал. Если относительно приемника можно о чем-то догадываться по коду библиотеки IgorUSB.dll, то относительно работы с излучателем я не нашел вообще никакой информации.
|
|
Administrator
|
Jul 10, 2007 5:21:02 AM
|
|
|
приведу фрагмент кода, если неясно будет, спросите. тут есть лишние части, так что возьмите тока, что вам нужно
HANDLE hComm;
const char* port = env->GetStringUTFChars(jport, 0);
char buff[128] = "\\\\.\\";
StrCat(buff, port);
hComm = CreateFile( buff,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
NULL,
0);
env->ReleaseStringUTFChars(jport, port);
if(hComm == INVALID_HANDLE_VALUE){
return;
}
DCB dcb;
GetCommState(hComm, &dcb);
dcb.BaudRate = CBR_115200;
dcb.ByteSize = 8;
dcb.StopBits = ONESTOPBIT;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
SetCommState(hComm, &dcb);
COMMTIMEOUTS timeouts;
GetCommTimeouts(hComm, &timeouts);
timeouts.ReadIntervalTimeout = 1;
timeouts.ReadTotalTimeoutConstant = 1;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.WriteTotalTimeoutConstant = 10;
timeouts.WriteTotalTimeoutMultiplier = 0;
SetCommTimeouts(hComm, &timeouts);
Sleep(20);
__int64 HR_FREQ;
QueryPerformanceFrequency((LARGE_INTEGER *)&HR_FREQ);
__int64 time, interval, lastAcceptedTime = 0;
DWORD rawBuffer[256] = {0}, cleanBuffer[256] = {0};
DWORD rawBufferSize = 0, cleanBufferSize;
boolean acceptTheNearestCode = false;
boolean lastWasShort = false;
DWORD period;
BYTE byte;
double value;
DWORD bytesRead;
BOOL isPause;
while(true){
if(!ReadFile (hComm, &byte, 1, &bytesRead, NULL) || bytesRead != 1){
continue;
}
isPause = !(byte & 1);
//selecting scale
if((byte & 128) == 128){
byte = (byte & 126) >> 1;
value = byte/0.0000853/3600;
if(value - floor(value) >= 0.5){
period = ceil(value);
}else{
period = floor(value);
}
}else{
byte = (byte & 126) >> 1;
value = byte/0.0000853/14400;
if(value - floor(value) >= 0.5){
period = ceil(value);
}else{
period = floor(value);
}
}
if(period > 200 && isPause){
//end of queue
QueryPerformanceCounter((LARGE_INTEGER *) &time);
interval = 1000*(time-lastAcceptedTime)/HR_FREQ;
if(interval >= CALLBACK_FREQUENCY || acceptTheNearestCode){
doFiltering(&rawBuffer[0], rawBufferSize, cleanBuffer, &cleanBufferSize);
if(cleanBufferSize > 0){
jintArray jbytes = env->NewIntArray(cleanBufferSize);
env->SetIntArrayRegion(jbytes, 0, cleanBufferSize, (jint *)&cleanBuffer[0]);
jint keyId = env->CallIntMethod(jconsumer, eventID, jbytes, interval<=REPEAT_GAP?JNI_TRUE:JNI_FALSE);
env->DeleteLocalRef(jbytes);
acceptTheNearestCode = (keyId == -1);
lastAcceptedTime = time;
}
}
rawBufferSize = 0;
SecureZeroMemory(&rawBuffer[0], 256*sizeof(DWORD));
}else{
if(rawBufferSize < 256){
rawBuffer[rawBufferSize] = period;
rawBufferSize++;
}
}
}
|
|
Administrator
|
Jul 10, 2007 5:23:09 AM
|
|
|
для обнаружения устройства надо послать в порт байтик 0x81, приёмник его вернёт (через стандартный метод чтения и записи)
|
|
Murz
|
Nov 27, 2009 8:32:47 PM
|
|
|
Ссылка http://blindguard.narod.ru/lirc_igorplugusb.zip уже не работает, а файлик хочется. Не могли бы выложить ещё куда-нибудь?
|
Раздел для пользователей > Использование программы и комплекта > IRLink + Linux
|