Продукты
 Где купить
 Пользователям
 Для бизнеса
 Мы на связи

   

Программа IRlink

Скачать свежую версию  3.736 (2010/02/06 04:19:21)


Подписка на новости

Подписаться на новости IRLink можно по ICQ или в Живом журнале.


Получи IRLink бесплатно!

Если вы автор или редактор новостного сайта или издания, то можете получить IRLink бесплатно для тестирования.

Получи IRLink бесплатно


IRLink.Auto для автомобиля

С 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

Главная l Продукты | Где купить | Пользователям | Предложения для бизнеса | Мы на связи
© 2003–2010 автор идеи Павел