Jump to content
Forum-SimRussia.ru
PercaleMouse

Python на службе симмера

Recommended Posts

Этим стулом мастер Гамбс начинает новую партию мебели хочу начать серию рассказов, как использовать популярный язык программирования Python для нужд симмера. 
     Существует библиотека SimConnect позволяющая читать значения переменных сима обрабатывать их и отображать их в различном виде (например приборов, для 2D-панели в MSFS2020 на втором экране), a так-же менять значения этих переменных в самом симуляторе. А так-же посылать в сим "события" (например переключение тумблера на панели).

Установку самого Python пока пропущу (будут вопросы - добавлю). 

Итак:

Устанавливаем библиотеку 

pip3 install SimConnect

Пишем простую программу читающую нашу скорость и выводящую пока в стандартный вывод:

import SimConnect as sc # Подключаем библиотеку

connect = sc.SimConnect() # Подключаемся к симу (должен быть уже запущен)
aircraft = sc.AircraftRequests(connect) # Привязываем запрос к переменной

while True: # запускаем бесконечный цикл
    airspeed = aircraft.get("AIRSPEED_SELECT_INDICATED_OR_TRUE") # Читаем значение скорости 
    print(airspeed) # Выводим на экран значение скорости

Получилось как то так:

python-ex1.png.8f0490b80530c4fbe24e973c33251423.png

 

Используя дополнительные средства можно соорудить нечто, типа этого:

python-ex2.jpg.828609ef26fde88f4003e85cba55da17.jpg

Тут читаем и рисуем AFD1

 

Если интересно подписывайтесь, ставите лайки, жмите колокольчик и все такое :). Будет кому-то нужно продолжу..

 

 

  • Like 2

Share this post


Link to post
Share on other sites

Как послать "событие" в сим:

Включаем питание:

1.png.00b4cb79604e98e14eb4a16559434851.png

import SimConnect as sc 
connect = sc.SimConnect() 

power = sc.Event(b'MASTER_BATTERY_ON',connect)
power()

2.png.32cd464463d7eb5952c9039daf046e45.png

 

  • Like 1

Share this post


Link to post
Share on other sites

Собственно, симконнект в симе присутствует начиная с ФСХ, но проблема в том что до сих пор многие пользователи не утруждают себя его ставить. Из-за этого, не поверите, мне до сих пор иногда приходят вопросы типа "у меня не работают приборы на Ту-154, что делать". Так-то инструмент хороший и гибкий, хоть и не без недостатков.

  • Like Копия 1

Share this post


Link to post
Share on other sites

Да, с симконнектом мы давно дружим. У Python порог вхождения ниже. Может кому зайдет.

(Я еще  в blender модельки для Сима делаю - тоже тема)

Share this post


Link to post
Share on other sites

Весьма интересная штука - у питона действительно не высокий уровень вхождения, однако, здесь важнее объяснить принципы проектирования проборов с помощью данного инструмента. Я бы сейчас поступил по дургому:

1. Где скачать, как поставить, где взять документацию?

2. Читаем "переменные" - пишем простой прибор в 2D. (списки переменных лежат в там-то, курить SDK минимум 3 часа). Получилось? Ура - попробуем сделать то же с в 3Д. Вот вам блендер, кружек, палка, код - получилось? 

3. Пишем переменные - изменяем мир с помощью программирования - пишем кнопку в 2Д, пишем крутилку в 2Д. Получилось? Ура повторяем это в 3Д (блендер - циллиндр побольше, поменьше, анимация, код, проверка)

4. Почему курить SDK - не вредит здоровью курильщика....

И если вам удастся наполнить подобный план содержанием, то веточка может разрастись не хуже чем "вопросы к ANRY" на авсиме...

  • Upvote 1

Share this post


Link to post
Share on other sites
10 часов назад, IgorGonch сказал:

Весьма интересная штука - у питона действительно не высокий уровень вхождения, однако, здесь важнее объяснить принципы проектирования проборов с помощью данного инструмента. Я бы сейчас поступил по дургому:

1. Где скачать, как поставить, где взять документацию?

2. Читаем "переменные" - пишем простой прибор в 2D. (списки переменных лежат в там-то, курить SDK минимум 3 часа). Получилось? Ура - попробуем сделать то же с в 3Д. Вот вам блендер, кружек, палка, код - получилось? 

3. Пишем переменные - изменяем мир с помощью программирования - пишем кнопку в 2Д, пишем крутилку в 2Д. Получилось? Ура повторяем это в 3Д (блендер - циллиндр побольше, поменьше, анимация, код, проверка)

4. Почему курить SDK - не вредит здоровью курильщика....

И если вам удастся наполнить подобный план содержанием, то веточка может разрастись не хуже чем "вопросы к ANRY" на авсиме...

Согласен.

Share this post


Link to post
Share on other sites
В 10.09.2022 в 16:11, Kirill Konovalov сказал:

Собственно, симконнект в симе присутствует начиная с ФСХ, но проблема в том что до сих пор многие пользователи не утруждают себя его ставить....

А нельзя ли его загружать сразу с моделью? Скачал модель и в процессе инсталляции установил симконнект - если нет, то процесс инсталляции просто прерывается. Ну а если таки удалось проинсталлить модель, то при попытке её выбора в меню выдавать "грозное" предупреждение и не разрешать загрузку, вываливаясь обратно в это самое меню.

Понятно, что на всякую хитрую ж... найдется  жалобщик, но тут, по крайней мере, предупредили и сделали все, что требовалось от девелопера.

Share this post


Link to post
Share on other sites
13 часов назад, IgorGonch сказал:

А нельзя ли его загружать сразу с моделью? Скачал модель и в процессе инсталляции установил симконнект - если нет, то процесс инсталляции просто прерывается. Ну а если таки удалось проинсталлить модель, то при попытке её выбора в меню выдавать "грозное" предупреждение и не разрешать загрузку, вываливаясь обратно в это самое меню.

Понятно, что на всякую хитрую ж... найдется  жалобщик, но тут, по крайней мере, предупредили и сделали все, что требовалось от девелопера.

Можно. Но, с этим есть не то что-б сложности. Скажем так. Дополнительная работа. Например. Версии СимКоннекта отличаются для каждой версии сима. Причем не только от мажорной версии ФСХ (Ретейл-СП1-СП2-Разгон(причем, заметьте разгон и СП2 имеют разный симконнект)-СтимЭдишн) Но и от локализации сима. Т.е. вариантов очень много. Опять-же. Мало кто пишет инсталляторы из любителей самостоятельно. тем более такие сложные. Обычно даже мы ограничивались тупым бесплатным clickteam-овским wizard-ом, а он в такое не умеет.

У П3д с этим попроще- он работает с любой старой версией симконнекта. И имеет еще и свой препаровский интерфейс -ПДК. Но давайте будем честны, после выхода ФС2020 и особенно кучи хороших самолетов П3д очень сильно потерял актуальность как платформа для рядового симмера. Так что... говорить о нем как о достаточно живой платформе сегодня уже смысла особо нет.

Edited by Kirill Konovalov
  • Like Копия 1

Share this post


Link to post
Share on other sites

Я понял, спасибо за информацию - честно думал, что симконнект един хотя бы в рамках базовой линейки. Собственно работа по созданию инсталляторов мне знакома не по наслышке - почему и задал такой вопрос.

Ну а в рамках данной темы, такой инструментарий, как симконнект и его производные вполне возможно попробовать покрутить в рамках создания ПНК  -  я смотрел эту тему очень по диагонали, поэтому было бы интересно, если бы здесь появился какой-то вменяемый мануал, из которого можно было бы усвоить не только "Hello, word", но и что-то более веселое.

  • Upvote 1

Share this post


Link to post
Share on other sites
В 13.09.2022 в 12:29, IgorGonch сказал:

 , однако, здесь важнее объяснить принципы проектирования проборов с помощью данного инструмента

Возможно возникло некоторое недопонимание. В моем случае это не инструмент проектирования приборов "внутри" симулятора. Я использую и собственно, про это и начал рассказывать,  симконнект как интерфейс между симом и своими программами.  

Что касается приборов на панели штурмана угол которой виднеется на второй картинке: Это отдельная программа которая просто читает значения симовских переменных, а приборы нарисованы средствами python и pygame.

Share this post


Link to post
Share on other sites
В 20.09.2022 в 08:46, PercaleMouse сказал:

Возможно возникло некоторое недопонимание. В моем случае это не инструмент проектирования приборов "внутри" симулятора. Я использую и собственно, про это и начал рассказывать,  симконнект как интерфейс между симом и своими программами.  

Что касается приборов на панели штурмана угол которой виднеется на второй картинке: Это отдельная программа которая просто читает значения симовских переменных, а приборы нарисованы средствами python и pygame.

Видимо да - возникло 🙂 Тем не менее - тема интересная. Тем более, если питон для вас инструмент нативный. Некоторые исторические вещи было бы интересно смоделировать...

Share this post


Link to post
Share on other sites
25 минут назад, IgorGonch сказал:

Тем не менее - тема интересная. Тем более, если питон для вас инструмент нативный. Некоторые исторические вещи было бы интересно смоделировать...

Скоро продолжу. Я в отпуске , сейчас в дороге. 

  • Like Копия 1

Share this post


Link to post
Share on other sites
Posted (edited)

Немного подробнее о SimConnect.
 SimConnect – это интерфейс для связи MSFS со сторонними приложениями. Если вы использовали программы которые получают или передают данные в симулятор, то скорее всего «под капотом» симконнект. Физически это набор функций собранных как динамическая библиотека Windows (DLL) к которой есть доступ из нашего приложения. 
SimConnect позволяет читать переменные симулятора и для некоторых переменных записывать в них новые значения. (Т. е. записав в переменную ALTITUDE новое значение, мы можем сразу закинуть наш самолет на нужную высоту. Но нам не дадут  изменить  переменную хранящую колличество  двигателей :). Так же  SimConnect позволяет нам как обрабатывать, так  и генерировать «события» (например как я показывал выше).
 Еще одна приятная особенность SimConnect это то, что наше приложение работающее с симулятором мы можем запускать не только на том же компьютере на котором запущен симулятор, но и на другом компьютере, настроив  соответствующее сетевое подключение.
Что можно намутить?
Первое (с чего и началась эта тема) это возможность сделать свои приборы. Это можно сделать и в самом симе, но...
- в MSFS2020 нет 2D-панелей, что повергло в унынье многих кокпитостроителй. С SimConnect мы можем сделать нормальную 2D-панель на отдельном мониторе, закрыть его фальшпанелью с отверстиями под приборы и получит деревянный «железный» кокпит. Или просто вывести главное окно с ноутбука на широкоформатный телевизор, а на экране ноута рисовать панель (я так летаю)
- можно сделать приборы и панели с собственной логикой, какой угодно сложности поскольку мы не связаны ограничениями симулятора,  ( например панель штурмана, бортинженера, погодные радары и т. д.)
- при наличии тактильного экрана (у меня планшет с виндой) можно сделать панель оверхеда и тыкая пальцем производить манипуляции по запуску двигателей, например. Или настраивать частоты и прочие крутилки.
Еще одно применение SimConnect это различного рода протоколирование значений и вывод их в каком то удобоваримом виде:
- графики отклонения от заданных параметров, например инструкторская проверка при обучении;
- запись и анализ перегрузок, выполнения ограничений по крену, вертикальной скорости и другие параметры для собстственного симулятора «карьеры пилота»
- отправляемый  по интернету после полета автоматический отчет в виртуальную авиакомпанию, или в клубные мероприятия.
Поскольку мы умеем и читать и писать в переменные сима можно реализовать:
- собственную систему сохранения и загрузки;
- автопилот со своей логикой, моделирующий конкретное реальное устройство;
- голосовое управление -   виртуальный второй пилот который по вашей команде «выпустить шасси» выпустит шасси :) или озвучит какие то значения ( «-Петька, приборы?»).
Возвращаясь к теме железных кокпитов – это написание программы для связи симулятора с различными физическими устройствами (на том же Ардуино, например) Это вообще отдельная большая тема.
Вот далеко не полный список идей для использования SimConnect.

Немного про Python. Молодой, но уже очень популярный язык программирования. Для примера используется в Robot Operation System, 3D-редакторе Blender, системе умного дома HomeAssistant, ИИ и прочая и прочая и прочая...
 Отличается:
- как мы уже говорили низким порогом вхождения;
- наличием разнообразной документации и  уроков;
- язык интерпретируемый – не надо компилировать, линковать и прочее. Изменили букву-запустили-проверили;
самое вкусное – наличие библиотек практически под любые нужды. Что делает Python удобным инструментом для не программистов для реализации своих разработок;
- несмотря на третий пункт, после некоторых телодвижений, можно сделать исполняемый exe файл, в который можно еще и упаковать и саму DLL и файлы ресурсов (картинки приборов). Т.е. для запуска на другом компьютере достаточно передать один исполняемый файл которому уже не нужен Python.

Наступило утро и Шахерезада прекратила дозволенные речи...
 

Edited by PercaleMouse
Описки
  • Like Копия 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×