Close

25.02.2019

Классный все таки мы сделали каркас в проекте Presentator

Несколько лет назад мы делали «презентатор». Не уверен, что сейчас запущен сервис этого решения, но я хочу сказать о другом.

Мы там в последний раз «боролись с виндой». (я потом поставил линукс и совсем забыл о винде как о страшном сне). Было наработано несколько приятных заготовок.

Win часть писали на LUA, и на C# в последствии перешли. Решение на Lua было нативным и от этого по своему прекрасным.

Я хочу тут написать такую мысль: «если вы делаете не продукт для масс а решение для конкретных компьютеров под виндой, то LUA native вполне может быстро привести к результату», и скажу потом пару слов почему мы перешли на C#…

Под катом «что же такого интересного мы сделали тогда».

Такая там была структура Lua части.

  • Сама сборка Lua — наша , очень навороченная с кучей Win библиотек
  • исходники проекта, работа с окнами, стилями, по сути — ходячий пример, как и что надо делать.
  • libsrc — сборки доп библиотек на C которых не хватало в публичной поставке, все собрано, бери и используй,
  • ну и тесты, это просто к проекту.

Lua редко использую как самостоятельный язык, а чаше для встройки. Это от того, что сам интерпретатор без библиотек слишком гол.

У нас своя сборка, которая включает все что надо, чтобы смело считать Lua полноценным standalone языком программирования.

в Lua добавлены библиотеки, часть из них:

Мы делали захват экрана, подключили его к Lua. Модуль захвата я писал на C — можете просто вызвать и получить результат.

Можно работать с

  • Kinekt MS — камера с глубиной для анализа положений тела
  • управлять VLC
  • управлять Power Point
  • PDF, через Sumatra.
  • Сетевая библиотека Poco  подключена, знаете, что это ? там есть все что хочешь про сеть, и она у нас в проекте.
  • «веб сокеты» … да, что там только нет, в LUA все что было, я все в эту сборку включил (но в дистрибутив презентатора шло не все это)

Я вспомнил об этих вещах потому, что мне это потребовалось в новом проекте.

Представьте: закрытая корпорация, неизвестное ПО, которым надо управлять через WinAPI. Нужно «скриншотить» окна и обрабатывать изображения техническим зрением.

Поставить туда Visual Studio никто не даст и не даст на ней работать рядом с целевым ПО — скрипты идеальный вариант.

Для Rapid разработки «по месту» в условиях винды LUA с такими наработками очень хорош. Скопировал папочку «на рабочий стол» сделал ярлычок и все пошло, если что — поменял.

Мы собирали все в один EXE файл , так что можно и так это собрать:

Очень радует то, что создавая что-то технологичное, потом всегда это можно переиспользовать, сэкономить время.

Столько тогда всего было сделано полезного, кстати для Kinect был даже спец каркас написан, который позволяет распознавать положения тела.

Как-то так описывались жесты:

Эта программа (распознающая жесты)  просто шлет SendMessage HWND  т.е. интерфейс взаимодействия с ней наипростейший, можно в свою программу добавить жесты, довольно легко.

А для ОС Win Surface (win RT) и WinPhone OS  (которые жестко отличаются набором контроллов) были разработаны свои наборы контролов…  ох зря — MS предал наши усилия.

Если у вас есть к этим наработкам интерес, то с нами можно легко связаться. Это даже вопрос не столько цены, сколько вопрос самого интереса 🙂 

PS

Ах, да  обещал рассказать почему мы перешли от Lua к C# в том проекте. LUA хорош тем, что он бинарный, а вида этим плоха, точнее ее разные версии в ABI формате сильно отличаются. Presentator это B2C продукт, который у всех должен был стабильно одинаково работать, а винда нам мешала в этом всеми  способами.

Приходилось в код добавлять много If else про версии винды, это отвлекало, убивало энтузиазм, тратило наши силы и деньги.  C# самостоятельно решает совместимость версий винды… хоть это + 2 гига к проекту в виде .NET и их компиляций, в нашем случае решила совместимость.

ОДНАКО, если вам не требуется чтобы работало на всех в мире машинах, а вы выполняете заказ, который разворачивается на единицах — десятках машин, то лично я за гибкость LUA, все таки.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *