LINUX.ORG.RU

Qt + IR пульт. Как лучше?


0

2

Возникла задачка написать программу, гуй которой будет управляться исключительно с пульта. GUI должен быть на Qt. Целевая ОС - Linux. Есть ли готовые модули Qt для работы с пультом? Или надо писать свое? А если свое, то как лучше - через сокет lircd, или через lirc_client? И пример бы хорошо. В гугле не забанили, но сроки короткие, мало ли чего упущу.

★★

В Qt программе создай простенький QTcpServer с QScriptEngine внутри, в последний засунь нужные тебе QObject'ы, которыми ты хочешь управлять. Вуаля, у тебя есть удаленный js-shell для твоей Qt программы.
Такой же трюк можно провернуть с QML'ем, в его js поддерживается функция exec, которую можно исполнять на каждое сообщение, тем самым полностью управляя интерфейсом, вплоть до внедрения новых QML-компонентов по сети или удаления уже существующих.

Теперь возьми готовую IR управлялку, которая скорее всего консольная. Сделай из нее демон, который будет коннектиться по tcp к Qt программе и отсылать ей javascript команды.

anonymous
()
Ответ на: bloatware ^^^ от anonymous

Ню-ню. Оба трюка уложатся в 100-200 строк кода. Причем в случае с QML ничего дополнительного использовать не придется, чего QtDeclarative модуль уже не требует.

anonymous
()
Ответ на: комментарий от anonymous

Уау. Этой веревки хватит, чтобы выстрелить себе в ногу, даже если ее обернуть вокруг земного шара! Но, спасибо за ответ, в любом случае.

roof ★★
() автор топика
Ответ на: комментарий от roof

Уау. Этой веревки хватит, чтобы выстрелить себе в ногу, даже если ее обернуть вокруг земного шара!

Пфф, никто не заставляет тебя предоставлять доступ к критически важным объектам твоей программы. Ну напиши свой парсер ограниченного количества команд.

Я это к тому, что незачем запихивать все подряд в Qt. Зачем тебе переписывать IR-код, когда уже есть готовые решения? Создай какой-нибудь канал общения между ними и своей гуи-поделкой.

anonymous
()

какой именно пульт? по какому протоколу работает? имхо, нужно отталкиваться именно от этого.

ymn ★★★★★
()

Прикрутить DBus-интерфейс, а дальше уже можно рулить как угодно, не?

fenris ★★★★★
()
Ответ на: комментарий от val-amart

Возможно, правильный. Но у меня была слабая надежда, что уже есть модуль Qt, который, через lirc позволяет привязать нажатия клавиш пульта к сигналам Qt.

roof ★★
() автор топика
Ответ на: комментарий от ymn

Эм... ИК-пульт, конечно, сорри за невнятность. Работает по протоколу CIR.

roof ★★
() автор топика

недавно сам заводил тему [выбор]ИК приёмник+пульт ДУ

решение по странности простое - снаружи шелезка gotview (она эмулирует клавиатуру), внутри приложения просто нормальная работа с клавиатурой.

Та-же мысль, но другими словами: если интерфейсом можно без мата рулить вооружившись только клавиатурой (без мыши), то всё правильно и будет работать с ИК.

MKuznetsov ★★★★★
()

Для Linux-only решения лучше использовать DBUS. В качестве fallback'а можно использовать возможность установки горячих клавиш для GUI программ и управление с помощью чтения аргументов командной строки для консольных вещей. Тот же KdeLirc например позволяет использовать все три вышеперечисленных метода при настройке кнопок пульта.

m0rph ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.