Разработать IP-KVM с возможностью управления с помощью джойстика

30 000 руб. за проект
01 сентября 2021, 14:52 • 6 откликов • 70 просмотров
Разработка клиент-серверного программного решения, предназначенного для удаленного управления различными устройствами и механизмами по USB:
- клавиатура (104 клавиши),
- мышь (3 кнопки + скролл),
- геймпад (16 кнопок, Xbox 360).

Разрабатываемое программное решение является аналогом IP-KVM-устройств, но без видео и с более широким профилем применения.

Клиент – классическое, консольное, «оконное» приложение, разработанное с использованием кроссплатформенного фреймворка. Фреймворк исполнитель вправе выбирать самостоятельно (желательно Kivy, но последнее слово – за вами).

Сценарий работы: пользователь производит манипуляции с устройствами ввода (нажимает кнопки на клавиатуре, двигает и кликает мышью, нажимает кнопки геймпада и двигает его джойстики). Клиентское ПО преобразовывает (на основании словаря) события фреймворка в байт-код, для дальнейшей записи в виртуальное устройство на сервере. Байт-код передается на сервер по протоколу TCP. Каждое захваченное событие инициирует отдельную передачу состояния устройства клиента, т.е. если зажата кнопка Shift, например, то не должно формироваться непрерывного потока событий, состояние одновременно зажатых кнопок должно отправляться однократно при наступлении уникальных событий.

В связи с разнообразием геймпадов на рынке, в клиентском ПО необходимо реализовать режим «обучения»/калибровки, который позволяет пользователю, выполняющему удаленное управление, сформировать словарь сопоставлений (маппинг) событий фреймворка (действий) с байт-кодами.
Сервер – приложение, разработанное на языке Python для одноплатного компьютера (Single-Board Computer) на архитектуре ARM, с возможностью эмуляции USB HID устройств ввода (RockPi, Raspberry Pi и аналоги). Осуществляет прием запросов, валидирует и записывает байт-коды в виртуальное устройство, созданное на базе USB Gadget API for Linux. Для каждого типа устройств должен быть согласован формат передаваемого запроса.

Для возможности диагностики возникающих проблем, клиент и сервер должны иметь возможность записывать все события в локальный файл журнала.

При необходимости, исполнителю будут переданы наработанные материалы (ссылки) по реализации вышеперечисленного функционала.

Цена указана приблизительная