crumstler Posted June 2, 2013 Posted June 2, 2013 Всем привет, Есть одна задумка на тему подключения стороннего железа (VRInsight) к DCS, и в связи с этим есть ряд вопросов. Если не вдаваться в подробности, то задача такая: допустим, есть Lua скрипт запущенный отдельным процессом параллельно с DCS - надо наладить обмен данными между ними. От DCS нужно получить текущий статус основных систем и положение самолета в пространстве, а обратно в DCS иметь возможность отправлять стандартные команды типа выпуска шасси, включения/выключения автопилота и тп. Старую документацию по этой теме нашел (https://www.digitalcombatsimulator.com/ru/dev_journal/lua-export/#112), но судя по всему сейчас структура скриптов несколько изменилась и шаг за шагом повторить инструкцию не получится. Короче говоря, нужна консультация по этой теме от разработчиков или от тех, кто подобную задачу уже решал. Можно здесь, можно в скайпе голосом, чтоб быстрее. =303=Crum
BR55Sevas Posted June 2, 2013 Posted June 2, 2013 (edited) Всё что изменилось это расположение экспорта - читать тут http://forums.eagle.ru/showpost.php?p=1686671&postcount=5 Для примера обмена смотри LOVP - http://forums.eagle.ru/showthread.php?t=46577&highlight=LOVP http://forums.eagle.ru/showthread.php?t=33051&highlight=%D0%BF%D1%80%D0%BE%D1%82%D0%B0%D1%81%D0%BA%D0%B8%D0%B2%D0%B0%D1%82%D1%8C и пробуй, пробуй, пробуй Edited June 2, 2013 by BR=55=Sevas МиГ-29 Fly by wire СДУ Su-27SM second display panel https://www.youtube.com/embed/videoseries?list=PL_2GGwNpWNp_fKXfRtDhIk8s5Jf4a9XHS http://berkuts.ru Пилотажный сервер с роботом | Aerobatic server with PhantomControl
crumstler Posted June 2, 2013 Author Posted June 2, 2013 (edited) Ага, уже там копаюсь, спасибо. По экспорту логика в общем понятна. А как обратную передачу данных организовать? Как мне из своего скрипта отправить команду в DCS на выпуск шасси и тп? p. s. Насколько понимаю, прием данных от стороннего софта делается через тот же export.lua и тот же открытый сокет, только в обратном направлении (читаем данные из сокета)... надо поэкспериментировать. Edited June 2, 2013 by crumstler =303=Crum
ED Team BillyCrusher Posted June 2, 2013 ED Team Posted June 2, 2013 Ага, уже там копаюсь, спасибо. По экспорту логика в общем понятна. А как обратную передачу данных организовать? Как мне из своего скрипта отправить команду в DCS на выпуск шасси и тп? Все есть по этой ссылке: Input: LoSetCommand(command, value) -- (args - 2, results - 0) -1.0 <= value <= 1.0 Там же список команд. Такой же текст в комментариях в файле Export.lua, который находится в папке симулятора. "You become responsible, forever, for what you have tamed.” ― Antoine de Saint-Exupéry, The Little Prince.
crumstler Posted June 2, 2013 Author Posted June 2, 2013 Все есть по этой ссылке Гуд, спасибо. Сомневался, актуальная ли там информация. Буду разбираться. =303=Crum
crumstler Posted June 3, 2013 Author Posted June 3, 2013 Так-с, с обменом данными разобрался - все работает. Теперь есть другой вопрос: правильно ли я понимаю, что скрипт экспорта выполняется строго синхронно с основным движком DCS? То есть, например, если я в функцию LuaExportBeforeNextFrame вставлю код, который выполняется 1 секунду, то и FPS в симуляторе упадет до одного кадра в секунду? =303=Crum
BR55Sevas Posted June 4, 2013 Posted June 4, 2013 время между срабатываниями функций Before/After зависят от фпс, но если в скрипте есть пауза, то игра наверно будет подвисать на время задержки пока не получит команду. для жёсткого ограничения по времени лучше использовать function LuaExportActivityNextEvent(t) local tNext = math.floor(t) --тут чтото tNext = tNext + 1 //пытается сработать каждую секунду return tNext end МиГ-29 Fly by wire СДУ Su-27SM second display panel https://www.youtube.com/embed/videoseries?list=PL_2GGwNpWNp_fKXfRtDhIk8s5Jf4a9XHS http://berkuts.ru Пилотажный сервер с роботом | Aerobatic server with PhantomControl
crumstler Posted June 4, 2013 Author Posted June 4, 2013 Да-да, уже выяснил опытным путем - время выполнения скрипта прибавляется ко времени расчета текущего кадра, так что нагружать скрипт нельзя - упадет фпс. Первый этап работы уже сделан. Отдельным процессом запускается скрипт, который работает непосредственно с железякой, и через сокет налажен обмен данными со скриптом экспорта/импорта данных в DCS. Следующий вопрос такой: есть типовые команды, которые перечислены в самом скрипте экспорта (те что унаследованы еще с ЛокОна) - там номера команд от 0 до 430. А где взять список команд и их номеров по модулям - Акула, А10 и прочие? Помнится, где-то я их раньше видел, но не помню, где именно... кажись что-то с настройкой инпута было связано. =303=Crum
BR55Sevas Posted June 5, 2013 Posted June 5, 2013 Тут во вложении список команд есть, но я не разбирался как ими пользоваться - http://forums.eagle.ru/showpost.php?p=567615&postcount=14 Тебе наверно нужно копать это http://forums.eagle.ru/showpost.php?p=567629&postcount=15 Но как тумблера через экспорт протаскивать я тоже не разбирался. МиГ-29 Fly by wire СДУ Su-27SM second display panel https://www.youtube.com/embed/videoseries?list=PL_2GGwNpWNp_fKXfRtDhIk8s5Jf4a9XHS http://berkuts.ru Пилотажный сервер с роботом | Aerobatic server with PhantomControl
crumstler Posted June 6, 2013 Author Posted June 6, 2013 Спасибо! Полезная информация. Есть с чем поразбираться. =303=Crum
Recommended Posts